EN 16931
XRechnung vs ZUGFeRD. XML or PDF with XML.
XRechnung is an XML file. ZUGFeRD is a PDF/A-3 with the same invoice as CII inside. Both meet the German e-invoice mandate when the XML is EN 16931. The difference is the container, not the legal basis.
Public buyers (B2G): XRechnung, Leitweg-ID in BT-10. Businesses (B2B): often ZUGFeRD, because the recipient can open a PDF. Product teams emit both from one JSON payload.
The difference at a glance
| Criterion | XRechnung 3.0 | ZUGFeRD 2.x / Factur-X |
|---|---|---|
| File | .xml | .pdf (PDF/A-3) |
| Payload | XML, UBL or CII | visible PDF plus CII |
| Human-readable | needs a viewer | yes — the PDF |
| Typical use | B2G, public buyers | B2B, recipient wants a PDF |
| Leitweg-ID (BT-10) | required for authorities — BR-DE-15 | only if you invoice a public body |
| Mandate profile | XRechnung 3.0 (EN 16931 plus BR-DE) | BASIC, EN 16931 or EXTENDED — not MINIMUM/BASIC-WL |
| Validation here | official KoSIT Schematron | structural EN 16931 rules |
format | xrechnung-3.0, xrechnung-cii-3.0 | zugferd-2.x, facturx-1.0 |
When XRechnung
Invoices to federal, state and municipal buyers, and most other public contracting authorities. The CIUS is XRechnung; without the Leitweg-ID in invoice.buyer_reference the file is rejected. Syntax UBL or CII — same invoice content.
B2B may use XRechnung too. Unusual if the recipient has no XML viewer. XRechnung API: JSON in, KoSIT-validated XML out.
When ZUGFeRD
B2B, when someone still needs to open, forward or file a PDF. The XML sits in the PDF/A-3; machines read CII, people read the PDF. Factur-X is the same technique under the French name.
MINIMUM and BASIC-WL are not a complete dataset — they do not meet the mandate. BMF circular of 15 October 2024: ZUGFeRD 1.0 and 2.0 before 2.0.1 do not count. ZUGFeRD API: the same JSON, hybrid PDF. Paid.
What the mandate actually requires
Since 1 January 2025 every German business must be able to receive e-invoices. Issuing: 1 January 2027 above €800,000 prior-year turnover, 1 January 2028 everyone else (exceptions: small-value invoices up to €250, tickets, most supplies exempt under § 4 nos. 8–29 UStG). Legal basis: § 14 UStG, Wachstumschancengesetz.
What must be compliant is the EN 16931 semantic dataset, not “a PDF”. XRechnung and ZUGFeRD at the right profile are two allowed encodings of that dataset. 2027 checklist.
Factur-X = ZUGFeRD for FR
Technically aligned. France starts September 2026. Generation: yes. We are not a PDP/PA — transport and clearance stay with you.
One JSON, two format values
Product teams that serve B2G and B2B tenants do not need two stacks. Same payload, set format. XRechnung runs through KoSIT before you see the XML. ZUGFeRD / Factur-X: structural check, hybrid PDF in the response.
XRechnung API · ZUGFeRD API · Validator, no key · XRechnung PHP
Pricing with no sales call
Free generates XRechnung (KoSIT), 50 documents/month, no card. Hybrid PDF is paid from €19. 30-day guarantee.
FAQ
What is the difference between XRechnung and ZUGFeRD?
XRechnung is a pure XML file (UBL or CII). ZUGFeRD is a PDF/A-3 with the same invoice as CII inside. Both implement EN 16931. The difference is the container, not the legal basis.
Which format meets the German B2B e-invoice mandate?
Both, at an EN 16931 profile. For ZUGFeRD that is BASIC, EN 16931 or EXTENDED — not MINIMUM or BASIC-WL. ZUGFeRD 1.0 and 2.0 before 2.0.1 do not count (BMF circular of 15 October 2024). Receiving has been mandatory since 1 January 2025; issuing phases in 2027 and 2028.
Do I need XRechnung for public authorities?
Yes. B2G invoices in Germany are XRechnung, with the buyer’s Leitweg-ID in BT-10 (buyer_reference). Missing BT-10 is BR-DE-15.
Is Factur-X the same as ZUGFeRD?
Same hybrid technique, different name. Factur-X is the French designation. France’s mandate starts September 2026. Generation is the same payload; we are not a PDP/PA.
Can one product emit both formats?
Yes. Same invoice JSON, different format values: xrechnung-3.0 or xrechnung-cii-3.0 for XML, zugferd-2.x or facturx-1.0 for the hybrid PDF.