Germany’s e-invoicing mandate mentions two format names — ZUGFeRD and XRechnung — and most explanations don’t make clear that these solve different problems for different clients. Getting this wrong means either sending the wrong format to a government agency, or overbuilding for a requirement you don’t actually have.
The core difference
ZUGFeRD (and its French/EU twin, Factur-X) is a hybrid format: a normal-looking PDF with a machine-readable XML file embedded inside it. Open it and a human sees an invoice; feed it to accounting software and it reads the structured data automatically. It’s built for B2B and B2C invoicing — any client, human or software, can use the same file.
XRechnung is pure XML — there is no visual PDF layer at all. It’s not something a person opens and reads; it exists purely to be processed by software. It was built specifically for B2G (business-to-government) invoicing in Germany and has been mandatory for invoicing most federal and many state public sector bodies since 2020.
Both are built on the same European core: the EN 16931 semantic data model. The difference is the container, not the underlying tax logic.
ZUGFeRD’s profiles
ZUGFeRD defines multiple profiles, each carrying more data than the last:
| Profile | What it carries |
|---|---|
| Minimum | Payment data only, no line items |
| Basic WL | Header-level totals, no full itemization |
| Basic | Partial line-item detail |
| EN 16931 (Comfort) | Full line-item tax detail, full payment terms, full addresses |
| Extended | Everything in Comfort, plus additional fields required for XRechnung |
For ordinary B2B invoicing — the level required by the German mandate and by accounting systems like DATEV — the EN 16931 / Comfort profile is the one that matters. It’s the most complete profile short of Extended, and it’s what satisfies the 2027/2028 sending obligation for private-sector clients.
When you actually need XRechnung
Only when your client is a German government body — a federal ministry, most state (Länder) administrations, or a public agency that requires B2G invoicing. In that case:
- The invoice must be in XRechnung format specifically, not ZUGFeRD
- You need a Leitweg-ID from the agency — a routing code that tells the receiving system which department the invoice belongs to
- Submission typically goes through a dedicated portal (such as the federal ZRE) or the Peppol network, not a plain email attachment
If you’ve never invoiced a government agency directly, you almost certainly don’t need XRechnung. Freelancers and small businesses whose clients are other businesses or consumers are squarely in ZUGFeRD/Factur-X territory.
The practical rule
- Invoicing a business or consumer client → ZUGFeRD / Factur-X, EN 16931 (Comfort) profile
- Invoicing German federal or state government directly → XRechnung, with a Leitweg-ID from that agency
For the broader picture on what the e-invoicing mandate requires and by when, see our e-invoicing guide.
In Billino
Every invoice Billino generates is automatically a ZUGFeRD / Factur-X file at the EN 16931 (Comfort) profile — the format that covers the overwhelming majority of freelancer and small-business B2B invoicing, and satisfies the private-sector mandate without you doing anything differently. If you need to check whether a specific file — yours or one a client sent you, including an XRechnung XML — actually meets the EN 16931 standard, use the free e-invoice validator for a field-by-field compliance report.