XRechnung vs Peppol BIS 3.0 — What's the Difference?
5 min read · EU e-invoicing formats explained
Both XRechnung and Peppol BIS 3.0 are EU e-invoice formats built on the same core standard — EN 16931. But they target different buyers, travel over different networks, and have different validation rules. Here's what you need to know.
The short answer
| Format | Use when… | Network |
|---|---|---|
| XRechnung | Invoicing a German public-sector buyer (B2G) | PEPPOL or direct portal upload |
| Peppol BIS 3.0 | Sending to any buyer on the Peppol network (NL, BE, EU) | Peppol network (access point required) |
| EN 16931 UBL | Cross-border EU invoicing with no specific network requirement | Direct exchange (email, SFTP, API) |
What they have in common
Both formats are UBL 2.1 XML documents that conform to EN 16931 — the European standard for electronic invoicing. This means they share the same core data model: seller and buyer details, line items, VAT breakdown, payment terms, and a set of mandatory business rules (BR-* rules) that every valid invoice must pass.
If your invoice is valid XRechnung, it is also a valid EN 16931 UBL invoice. The converse is not necessarily true.
Where they differ
CustomizationID
The single most important difference is the CustomizationID field. This is what tells the receiving system which ruleset applies:
// XRechnung 3.0
urn:cen.eu:en16931:2017#compliant#urn:xoev-de:kosit:standard:xrechnung_3.0
// Peppol BIS 3.0
urn:fdc:peppol.eu:2017:poacc:billing:01:1.0
// EN 16931 Generic UBL
urn:cen.eu:en16931:2017
Country-specific rules
XRechnung adds a set of German-specific schematron rules on top of EN 16931, prefixed BR-DE-*. These enforce stricter requirements for German public-sector invoices — for example, a payment means code is mandatory, and certain free-text fields are not permitted.
Peppol BIS 3.0 has its own CIUS (Core Invoice Usage Specification) with rules prefixed PEPPOL-EN16931-*. These are broadly similar in intent but different in detail.
Delivery network
XRechnung invoices are submitted directly to German government portals (e.g. ZRE, OZG-RE) or sent via a Peppol access point to a buyer with a Peppol ID. Peppol BIS 3.0 invoices must travel over the Peppol network — you need a registered Peppol access point to send them.
Which one should you use?
- ✓Invoicing a German federal, state, or municipal authority → XRechnung UBL 2.1
- ✓Invoicing a Dutch or Belgian company that accepts Peppol → Peppol BIS 3.0
- ✓Invoicing a French buyer → Factur-X CII XML (different format entirely, based on UN/CEFACT CII)
- ✓Cross-border EU invoice where the buyer has no specific requirement → EN 16931 Generic UBL
Validate your invoice before sending
Whichever format you use, it's worth validating before sending. A rejected invoice delays payment and often requires a manual resubmission process. BaseInvoice validates against EN 16931 core rules plus format-specific schematrons (BR-DE-* for XRechnung, PEPPOL-EN16931-* for Peppol BIS 3.0) and shows you the exact rule code, field, and fix for every error.
Try the validator free
Drop your XML — results in seconds, nothing uploaded.
Create invoices in any format
Need to generate an invoice rather than validate one? BaseInvoice can create XRechnung UBL 2.1, Peppol BIS 3.0, EN 16931 Generic UBL, and Factur-X CII XML directly in your browser — free, no account required.
Create EU e-invoices free
XRechnung, Peppol BIS 3.0, Factur-X — download XML instantly.