Factur-X vs ZUGFeRD — what's the difference?
Practically nothing. Factur-X 1.x and ZUGFeRD 2.x are the same format, defined jointly by France's FNFE-MPE and Germany's FeRD. Both use UN/CEFACT Cross Industry Invoice (CII) XML embedded in a PDF/A-3 wrapper. They share the same XML schema, the same five profiles and the same schematron rules. The only differences are branding and the specific code-list versions referenced by each profile. Any tool validating one validates the other — including aiDoks.
In France, Factur-X is one of the formats Chorus Pro accepts for B2G invoices (alongside UBL and CII), and one of the three base formats of the B2B reform that starts in September 2026. ZUGFeRD has been the dominant German hybrid format alongside XRechnung for almost a decade. If you exchange invoices in either market, your invoice must pass the validation rules — non-compliant invoices are rejected at the portal and never reach the buyer.
Common Factur-X validation errors
- BR-01 — Mandatory field missing. Each profile has its own mandatory-field list; MINIMUM is the shortest, EXTENDED the longest. The error message names the missing element.
- BR-CL-01 — Code-list value not in the official enumeration. Common offender: a currency code that does not exist in ISO 4217, or a UN/ECE Rec 20 unit code that has been retired.
- BR-CO-13 — Tax total amount mismatch. Sum of tax-category subtotals must equal the document-level
TaxTotalAmount. - BR-DEC-XX — Too many decimal places. Monetary amounts (totals, line net amounts, allowances and charges) may have at most 2 decimals; EN 16931 sets no such limit for unit prices.
- FX-SCH-A-XX — Profile-specific Factur-X schematron error. The error message names which profile rule fired and what value was expected.
Validating PDFs from any tool
Whether the PDF was generated by Mustangproject, akretion's factur-x library, SAP Document Compliance, DATEV, Lexware, Sage, Quadient AP, or your own PDFBox-based pipeline — if the PDF/A-3 contains an embedded CII XML attachment with a recognised filename, the aiDoks validator extracts and validates it. Useful for QA-ing your own Factur-X output before sending, and for verifying supplier invoices before importing them into accounting.