Learn

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

FormatUse when…Network
XRechnungInvoicing a German public-sector buyer (B2G)PEPPOL or direct portal upload
Peppol BIS 3.0Sending to any buyer on the Peppol network (NL, BE, EU)Peppol network (access point required)
EN 16931 UBLCross-border EU invoicing with no specific network requirementDirect 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.

Validate invoice →

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.

Create invoice →