Last updated: May 2026
Understanding ZUGFeRD Validation – Profiles, PDF/A-3 and Factur-X
What does a ZUGFeRD validator check? A ZUGFeRD validator checks three levels simultaneously: the enclosing PDF must comply with the PDF/A-3 standard, the embedded XML file (factur-x.xml) must comply with the Schematron rules of the selected profile, and the XMP metadata in the PDF must correctly declare the ZUGFeRD version. Only when all three shifts fit is the invoice considered compliant.
Check → file now in the online validator (free of charge, without registration)
Table of Contents
- Understanding ZUGFeRD Validation – Profiles, PDF/A-3 and Factur-X
- What makes a ZUGFeRD file technically
- The ZUGFeRD profiles in comparison
- What is really checked during validation
- Mustang, KoSIT and Veraval: three validators, one standard
- Common PDF/A-3 errors – and their cause
- ZUGFeRD with XRechnung profile: when is it identically valid?
- Versions of ZUGFeRD at a glance
- How to use our ZUGFeRD Validator

What makes a ZUGFeRD file technically
ZUGFeRD is a hybrid format: a PDF/A-3 document with an attached XML file. The PDF shows the invoice visually, the XML contains the same data in a machine-readable way. Both parts must agree in terms of content, otherwise every validator to be taken seriously will report a conflict.
The name stands for “Central User Guide of the Forum Electronic Invoice Germany”. The standard is being developed by FeRD (Forum elektronische Rechnungs Deutschland), the French sister is called Factur-X – technically identical, only with a different profile designation.
The ZUGFeRD profiles in comparison
Each ZUGFeRD invoice belongs to exactly one profile. The profile determines which fields are mandatory and which Schematron rules apply. A ZUGFeRD validator automatically recognizes the profile from the XMP metadata and then applies the appropriate rule set.
| Profile | Content | EN 16931 compliant | Typical use |
| MINIMUM | Header and Sum Data, No Items | No | Accounting record, no dispatch to authorities |
| BASIC WL | Same as BASIC, but without position data | No | Internal processing, cash discount data |
| BASIC | Required fields incl. Positions | Restricted | Simple B2B invoices |
| EN 16931 (Comfort) | Full scope of the European standard | Yes | Standard for B2B and B2G |
| EXTENDED | EN 16931 plus additional structured fields | Yes, with extensions | Industry-specific requirements |
| XINVOICE | ZUGFeRD Profile with XRechnung Rules (CIUS) | Yes, with BR-DE rules | Invoices to German authorities |
What is really checked during validation
If you drag a ZUGFeRD file into a validator, you rarely see all the check steps in detail. Four levels run in the background:
- PDF/A-3 Compliance: Font embedding, ICC profiles, no JavaScript, correct tags. The test is carried out against the ISO standard 19005-3.
- XMP metadata: In the PDF, the entries
fx:DocumentType,fx:ConformanceLevelandfx:Versionmust be available and match the selected profile. - Attachment definition: The factur-x.xml must be appended as “Source” or “Alternative”, with the correct AFRelationship specification – otherwise the receiving system will not recognize the XML as payload.
- Schematron check of XML: The XML is validated against the official Schematron files of the FeRD. Each profile level has its own rules, the XRECHNUNG profile also has the German BR-DE rules from the KoSIT specification.
Mustang, KoSIT and Veraval: three validators, one standard
In German-speaking countries, three tools are common. When configured correctly, they deliver identical results, but differ in the operation and level of detail of the reports.
- Mustang Validator: Open source library from the ZUGFeRD community, checks Schematron and PDF/A-3 in one step. Provides detailed console logs, ideal for integration into CI pipelines.
- KoSIT Validator: The official testing software of the Federal Coordination Office for IT Standards. Necessary if invoices carry the XRECHNUNG profile and go to German authorities.
- Veraval: French equivalent for Factur-X. Identical technical base, but French lettering and code lists tailored to French tax rules.
Common PDF/A-3 errors – and their cause
Anyone who generates invoices from generic PDF libraries stumbles across the same points over and over again:
- XMP metadata without fx namespace: The PDF is ZUGFeRD “ready”, but the validator does not recognize the file as a hybrid format.
- Incorrect AFRelationship: If the XML is listed as “Unspecified” in the PDF, it is considered a non-binding attachment. Correct is
/Sourcefor ZUGFeRD from version 2.x. - Non-embedded fonts: PDF/A-3 requires that every font used is completely inside the document. Subset embedding is enough, external references are not.
- Encrypted or signed PDF: Encryption and some signature variants are not allowed in PDF/A-3.
- Inconsistent values between PDF text and XML: The invoice amount in the visible PDF differs from
BT-112the amount in the XML. This is not a technical error, but a technical error – and the recipient still rejects the invoice.
ZUGFeRD with XRechnung profile: when is it identically valid?
The ZUGFeRD profile XRECHNUNG is technically a ZUGFeRD envelope with the content rules of the XRechnung. In order for such a file to pass as both ZUGFeRD and XRechnung, three conditions must be met: The XMP metadata declares the appropriate XRechnung profile, the XML complies with all BR-DE rules from the KoSIT specification, and the PDF also complies with PDF/A-3. In practice, this is particularly worthwhile for invoices to authorities, where the receiving portal accepts both.
Versions of ZUGFeRD at a glance
You can find a complete version history on our ZUGFeRD overview page. The most important releases at a glance:
- 1.0 (June 2014) – first productive version
- 2.0 (March 2019) – Alignment with EN 16931, new profile structure
- 2.1 (March 2020) – identical in content to Factur-X 1.0
- 2.2 (March 2022) – Expansions for the European market
- 2.3.3 (May 2025) – current mandatory version in many administrations
- 2.4 (December 2025) – Profile EXTENDED extended
- 2.5 (planned May 2026) – Adjustments for Peppol-BIS compatibility
How to use our ZUGFeRD Validator
Drag your ZUGFeRD file (PDF/A-3 with embedded XML) or a pure factur-x.xml into the upload field of our online validator. Within a few seconds, you will receive a test report with a detected profile, Schematron violations found and an indication of whether the PDF/A-3 is compliant. The file does not leave our EU infrastructure and is deleted after the check.
Check → ZUGFeRD file online now
Would you like to send and receive ZUGFeRD directly from SAP? Take a look at our SAP solution for e-invoicing.


