XRechnung vs ZUGFeRD: Which German E-Invoice Format Should You Use?
Germany's two dominant e-invoice formats solve the same problem in different ways. XRechnung is a pure structured XML file built for machine processing. ZUGFeRD is a hybrid: a normal, human-readable PDF with the same structured XML embedded inside. Both can comply with EN 16931, so the choice usually comes down to who is receiving your invoice.
XRechnung: the pure XML standard
XRechnung is the German Core Invoice Usage Specification (CIUS) of EN 16931, maintained by KoSIT, the coordination office for IT standards. An XRechnung file is XML only: there is no visual layout, no logo, no page design. It can be expressed in either of the two syntaxes permitted by EN 16931, UN/CEFACT CII or UBL 2.1. The recipient's software renders or imports the data; a human never reads the raw file directly.
XRechnung is mandatory for invoices to German federal public-sector bodies and required or accepted by the states (Bundeslaender), usually submitted through portals such as ZRE or OZG-RE together with a Leitweg-ID that routes the invoice to the right authority.
ZUGFeRD / Factur-X: the hybrid PDF
ZUGFeRD embeds a structured XML file, factur-x.xml, inside a PDF/A-3 document. The result is one file that works both ways: a person can open and read the PDF as usual, and accounting software can extract the XML and process the invoice automatically. ZUGFeRD is technically identical to the French standard Factur-X, which is why the embedded file carries that name.
ZUGFeRD defines several profiles. For the German B2B mandate, the profile must contain the full EN 16931 data set: from version 2.0.1, the EN 16931 (COMFORT) and EXTENDED profiles qualify, while MINIMUM and BASIC-WL do not count as e-invoices under the mandate.
Which one do you need?
- Public sector client (Bund, and most Laender): XRechnung, usually via an invoice portal with a Leitweg-ID.
- B2B client with modern accounting software: either format works; ask if they have a preference.
- B2B client that is a small business without invoicing software: ZUGFeRD is the pragmatic choice, because they can still read the PDF while staying compliant.
- Client abroad: the domestic mandate does not apply, but Factur-X and EN 16931 formats are widely understood across the EU.
There is no legal ranking between the two for B2B. Both are structured e-invoices under EN 16931, and a recipient who must accept e-invoices cannot reasonably reject one for being XRechnung rather than ZUGFeRD or vice versa. In practice, matching your customer's workflow avoids friction.
Producing both from one invoice
Because both formats carry the same EN 16931 data, a good tool lets you enter the invoice once and export either file. The E-Rechnung app does exactly that on iPhone: one tap exports XRechnung XML in CII or UBL 2.1 syntax, or a ZUGFeRD/Factur-X PDF with the XML embedded. For the underlying standard both formats share, see what EN 16931 actually defines.
This article is general information, not tax or legal advice. If you are unsure which format a specific contract or authority requires, check the client's supplier guidelines or ask your Steuerberater.
Common questions
- Is ZUGFeRD accepted for the German B2B e-invoicing mandate?
- Yes. ZUGFeRD from version 2.0.1 in an EN 16931 conformant profile (COMFORT or EXTENDED) counts as an e-invoice under the mandate. The MINIMUM and BASIC-WL profiles do not.
- Do public authorities in Germany accept ZUGFeRD?
- Federal authorities require XRechnung-conformant invoices, typically submitted via portals like ZRE or OZG-RE. Some accept ZUGFeRD if the XML part conforms to the XRechnung profile, but for public-sector work XRechnung is the safe default.
- What is the difference between XRechnung and ZUGFeRD?
- XRechnung is a pure XML file with no visual layout, designed for machine processing. ZUGFeRD is a readable PDF with the structured XML embedded inside, so humans and software can both process it. Both can conform to EN 16931.
- Is ZUGFeRD the same as Factur-X?
- Technically yes. ZUGFeRD 2.x and the French Factur-X share the same specification, and the embedded XML file is named factur-x.xml in both.