A value is not in the fixed list the standard allows. 23 rules.
These all fail for the same reason: a field that must take a value from a fixed list was given something else. They share one explanation because the fix is always the same shape, which is to send the code rather than the word.
The three that catch people out most: EUR is a currency, Euro is not. SE is a country, Sweden is not. And unit codes are the least intuitive of the lot, where a plain count of things is C62, hours are HUR and kilograms are KGM.
Lowercase codes and codes from a superseded list version fail here too, and both look correct at a glance.
Drop a Factur-X or ZUGFeRD file into the free validator and it names every rule that fails, with the explanation from this page attached to each one. The EN 16931 rules run in your browser, so the invoice is never uploaded. The ISO PDF/A-3, XRechnung and PEPPOL BIS checks need a server and are a separate opt in that says so.
Validate an invoice, no signup