ZUGFeRD validator: validate invoices for free
Upload a ZUGFeRD PDF: we extract the embedded XML and validate it against EN 16931 with the official KoSIT validator. We also check whether the visible IBAN matches the embedded data.
Good to know
A ZUGFeRD PDF is two documents in one
ZUGFeRD is a PDF/A-3 that also carries the invoice data as XML. You see a normal PDF, your accounting software reads the XML. The two layers can drift apart, either through an error in the generating system or through manipulation. Our check does exactly this comparison; pure format validators only look at the XML.
Same format, different name
Factur-X is the French name for the same approach; the file there is called factur-x.xml instead of ZUGFeRD-invoice.xml. Our validator accepts both variants, you do not need to rename or select anything.
All five ZUGFeRD profiles are checked
ZUGFeRD has several profiles with different amounts of data: Minimum, Basic WL, Basic, Comfort (EN 16931) and Extended. We check all five with the matching validation scenario, plus XRechnung for the B2G sector. If a profile is genuinely unknown or foreign, we tell you so explicitly instead of faking a green result.
What is checked
Formal validity (KoSIT)
The invoice runs through the official KoSIT validator (KoSIT is Germany's Coordination Office for IT Standards), the same tool the German public administration uses. It is checked against EN 16931 and the German XRechnung rules (BR-DE). You get the violated rules in plain language, not just a red cross.
What you see versus what machines read
A ZUGFeRD PDF has two layers: what you see and what your accounting software imports. We compare both. If the IBAN printed in the PDF differs from the embedded XML, that is a red flag that pure format validators do not even look for.
Plausibility of the payment details
Is the IBAN valid according to its check digits at all? Does the IBAN country match the issuer's registered location? This is exactly where payment diversion fraud strikes: an otherwise genuine invoice where only the bank details have been swapped.
Error message in your result?
The KoSIT validator reports rule identifiers such as BR-DE-15 or BR-CO-25. The error code reference lists all rules from EN 16931 and the German XRechnung standard with their official text.
With a free account we check even more
- Bank change detection: an alert when a known supplier suddenly bills with a different IBAN.
- IBAN vault: approve or block bank details per supplier, optionally with four-eyes approval.
- Mailbox automation: incoming invoices are checked automatically before anyone pays.
- Duplicate check & check history: spot duplicate invoices and look up past results.
Frequently asked questions
How do I validate a ZUGFeRD invoice?
Upload the PDF here. We extract the embedded XML ourselves, you do not need to find it. The check runs through the official KoSIT validator against EN 16931 and the German rules, and the result names the violated rules in plain language.
Where is the XML inside a ZUGFeRD PDF?
It is a file attachment in the PDF/A-3, usually named factur-x.xml or ZUGFeRD-invoice.xml. In many PDF viewers you can see it in the attachments or paperclip view. You do not need to extract it yourself for the check.
My ZUGFeRD PDF is detected as "not an e-invoice". Why?
In almost all cases it is a copy rather than the original. If you open a ZUGFeRD PDF in a viewer and save it again, print it to PDF or scan it, the attachment and with it the XML is lost, while the document looks identical. Use the file exactly as you received it.
What is the difference between ZUGFeRD and XRechnung?
ZUGFeRD is a PDF with embedded XML, so it is readable by people and machines at the same time. XRechnung is a pure XML file without a visual layer and the mandatory format for invoices to German public-sector clients. ZUGFeRD also has a profile that meets the XRechnung rules. Both formats are based on EN 16931.
Do you also check ZUGFeRD 1.0?
The validator works with the official KoSIT validation scenarios, which are based on EN 16931 and therefore on ZUGFeRD 2.x. ZUGFeRD 1.0 is an older format that does not comply with EN 16931. If no matching validation scenario is found, we say so explicitly instead of silently reporting the file as valid.
Does ZUGFeRD validation cost anything?
No, three checks per day are free. Instead of signing up, your email address is enough. Your file is processed only for the check and is not stored.