German E-Invoice Formats: XRechnung, ZUGFeRD & Peppol BIS Explained
Complete guide to German e-invoice formats. XRechnung (UBL & CII), ZUGFeRD 2.x profiles, Peppol BIS 3.0 โ which format is mandatory, when to use each, and how to validate compliance.
German E-Invoice Formats: XRechnung, ZUGFeRD & Peppol BIS Explained
Germany's e-invoicing mandate accepts three main electronic invoice formats: XRechnung, ZUGFeRD 2.x, and Peppol BIS Billing 3.0. They all comply with the European standard EN 16931, but they work differently and suit different use cases.
This guide explains what each format is, when to use it, and how to make sure your implementation is actually compliant.
The European Foundation: EN 16931
All three German formats are implementations of the same European standard: EN 16931:2017+A1:2019 (CEN/TC 434). This standard defines the semantic data model for electronic invoices โ the mandatory and optional fields, their data types, and business rules.
EN 16931 has two syntax bindings:
- UBL 2.1 (Universal Business Language) โ XML format widely used in the Nordics, UK, and Peppol network
- ISO 20022 CII (Cross-Industry Invoice) โ XML format used in ZUGFeRD and some XRechnung variants
Both syntaxes are legally equivalent. The format you choose affects your technical implementation but not your legal compliance, as long as the document validates against EN 16931 rules.
Format 1: XRechnung
XRechnung is Germany's national implementation of EN 16931. It's maintained by KoSIT (Koordinierungsstelle fรผr IT-Standards) and is the format required for all invoices to federal government agencies (Bundesbehรถrden).
What Is XRechnung?
XRechnung is a pure XML format โ there is no human-readable visual layer. The file is entirely structured data, readable by machines and e-invoicing systems but not directly by humans without a viewer or rendering tool.
XRechnung comes in two syntax variants:
| Variant | File type | Based on |
|---|---|---|
| XRechnung UBL | .xml (UBL 2.1 schema) |
UBL Invoice 2.1 |
| XRechnung CII | .xml (CII D16B schema) |
ISO 20022 CII |
Both are valid XRechnung. The difference is the XML structure. Most German businesses use UBL; ZUGFeRD uses CII.
XRechnung Specific Fields
Beyond the EN 16931 base requirements, XRechnung adds several German-specific mandatory fields:
- Leitweg-ID (BT-10, Buyer Reference): Required for B2G invoices. This is the routing identifier assigned by the public sector entity you're invoicing. Without a valid Leitweg-ID, your invoice will be rejected by government portals.
- Buyer Reference (BT-10): For B2B, this is often a purchase order number or contract reference required by the buyer.
Current Version
XRechnung 3.0 (since February 2024) is the current mandatory version. Draft XRechnung 3.1 is under review for 2026.
Validation
Official validator: KoSIT Validator โ downloadable from GitHub (itplr-kosit), also accessible via the ecosio online wrapper.
Format 2: ZUGFeRD 2.x
ZUGFeRD (Zentraler User Guide des Forums elektronische Rechnung Deutschland) is a hybrid PDF/XML format. A ZUGFeRD invoice is a normal PDF invoice with an embedded XML file inside it.
How ZUGFeRD Works
A ZUGFeRD invoice is a PDF/A-3 document that contains:
- The visible PDF โ a human-readable invoice layout, identical to what you'd print
- The embedded XML โ a machine-readable CII XML file containing all the structured data
This makes ZUGFeRD "dual-use": humans can read the PDF, systems can process the XML. It's particularly useful during the transition period when not all recipients have moved to pure XML processing.
ZUGFeRD Profiles โ THIS IS CRITICAL
Not all ZUGFeRD profiles are compliant with Germany's e-invoicing mandate. There are six profiles:
| Profile | EN 16931 Compliant? | Mandate Compliant? | Use Case |
|---|---|---|---|
| MINIMUM | โ | โ | Internal archiving only |
| BASIC WL | โ | โ | Partial data, not invoice |
| BASIC | โ | โ | Simplified invoices |
| EN 16931 | โ | โ | Standard business invoices |
| EXTENDED | โ | โ | Additional industry fields |
| XRECHNUNG | โ | โ | Full XRechnung in ZUGFeRD container |
โ ๏ธ Warning: If your software generates ZUGFeRD "BASIC" or "MINIMUM" profile, it does NOT meet the German mandate requirements. Always verify which profile your tool generates.
Current Version
ZUGFeRD 2.3.2 is the current version (maintenance release, March 2026). ZUGFeRD 2.x is also aligned with Factur-X (the French equivalent), so a ZUGFeRD 2.x EN 16931 invoice is also a valid Factur-X invoice and vice versa.
Validation
- FeRD tools: ferd-net.de โ free ZUGFeRD viewer and validator
- Mustang Project: Open-source Java library with validation support
- KoSIT Validator: Also validates the XML component of ZUGFeRD files
Format 3: Peppol BIS Billing 3.0
Peppol (Pan-European Public Procurement Online) is an international e-invoicing network that uses a standardised message format and secure routing infrastructure. Peppol BIS Billing 3.0 is the invoice format used within the Peppol network โ it's based on UBL 2.1, same as XRechnung UBL.
When Is Peppol Relevant for Germany?
For B2G invoicing: Germany's ZRE and OZG-RE federal portals accept Peppol BIS 3.0 as one of their input formats. If you use a Peppol Access Point, you can submit invoices to federal agencies via the Peppol network.
For B2B cross-border invoicing: Peppol is widely used in the Netherlands, Belgium, France, Nordic countries, and Singapore. If you regularly invoice EU partners, Peppol connectivity simplifies the technical exchange.
For future B2B in Germany: Peppol BIS 3.0 is one of the accepted formats for the German B2B mandate (alongside XRechnung and ZUGFeRD EN 16931). It's not required but is a valid choice.
Peppol vs. XRechnung
| Aspect | Peppol BIS 3.0 | XRechnung |
|---|---|---|
| Format | UBL 2.1 | UBL 2.1 or CII |
| Transmission | Peppol network (via AP) | Direct or via portal |
| B2G (Germany) | Accepted by ZRE/OZG-RE | Required format |
| B2B cross-border | Yes, widely used | Germany-specific |
| Cost | Requires AP subscription | Portal submission is free |
Which Format Should You Use?
For B2G Invoicing (Government)
โ XRechnung is the standard. You need a valid Leitweg-ID from the recipient. Most government portals also accept Peppol BIS 3.0 if you use a Peppol AP.
For B2B Invoicing (Standard Business-to-Business)
โ ZUGFeRD 2.x (EN 16931 profile) is often the easiest for the transition period, because your customers can still read the PDF while systems process the XML. Once your trading partners have full e-invoice processing, XRechnung UBL is equally valid.
For API-Driven or High-Volume B2B
โ XRechnung UBL is clean and simple โ pure XML, no PDF overhead. Good for system-to-system integration.
For Cross-Border EU Invoicing
โ Peppol BIS 3.0 if your recipients are in Peppol-enabled countries. ZUGFeRD EN 16931 is also accepted in France (Factur-X) and is understood in some other EU markets.
Validation Checklist
Before your first live invoice, run these checks:
- Document validates against KoSIT Validator (XRechnung) or FeRD tools (ZUGFeRD)
- ZUGFeRD profile is EN 16931 or EXTENDED (not MINIMUM, BASIC WL, or BASIC)
- All mandatory EN 16931 fields are present and correctly formatted
- Leitweg-ID (BT-10) is populated for B2G invoices
- Buyer Reference (BT-10) is included if required by your trading partner
- Tax information (VAT rate, category, amounts) sums correctly
- IBAN/payment details are in the correct BankTransfer or payment block fields
- DATEV export works correctly with your Steuerberater's system (if applicable)
Common Mistakes
1. Using ZUGFeRD BASIC profile and claiming mandate compliance. The BASIC profile lacks mandatory fields required by EN 16931. Always check which profile your software generates.
2. Missing or invalid Leitweg-ID for B2G invoices. The Leitweg-ID must match the exact identifier assigned by the public authority. Even a single character difference causes rejection.
3. XRechnung generated but not validated. Some tools claim XRechnung support but produce files that fail KoSIT validation. Always validate the output, not just the claim.
4. Using XRechnung 2.x instead of 3.0. Since February 2024, XRechnung 3.0 is required. Version 2.x is no longer accepted.
5. Sending ZUGFeRD to recipients who need pure XML. Some large corporations and public agencies require pure XRechnung and will reject ZUGFeRD. Check your trading partner's requirements.
Resources
- KoSIT XRechnung specification and validator
- FeRD ZUGFeRD specification
- EN 16931 European Standard (CEN)
- Peppol BIS Billing 3.0 specification
- KoSIT Validator via ecosio (online)
Last updated: April 2026. Format specifications based on XRechnung 3.0, ZUGFeRD 2.3.2, and Peppol BIS 3.0.