← Tous les articles

ZUGFeRD, Factur-X, XRechnung and EN 16931 — how the pieces fit together

Publié 10 July 2026

Anyone who starts sending electronic invoices runs into the same wall of names within a day: EN 16931, CII, UBL, ZUGFeRD, Factur-X, XRechnung, Peppol. They sound like competitors. They are not — they are layers of one stack. Once you see the layering, the whole field stops being confusing.

The foundation: EN 16931 is a meaning, not a file

EN 16931 is the European standard that defines what an invoice means: a semantic data model plus a set of business rules (the famous BR-… rules). It says an invoice has a seller, a buyer, line items, a VAT breakdown, and that the totals have to add up in a specific way. Crucially, it does not prescribe a single file format. It is the shared vocabulary everything else agrees on.

Two syntaxes: CII and UBL

The same EN 16931 model can be written down in two XML dialects: CII (UN/CEFACT Cross Industry Invoice) and UBL (OASIS Universal Business Language). They carry identical information in different tag structures. Think of them as two spellings of the same word — receivers may prefer one, but neither adds or removes meaning.

ZUGFeRD and Factur-X: the same hybrid PDF

Here is the detail that trips up almost everyone: ZUGFeRD (Germany) and Factur-X (France) are the same standard, published by two national bodies under two names. Both wrap a human-readable PDF/A-3 around an embedded CII XML file. Your accounts-payable clerk sees a normal PDF; the receiving software reads the structured data inside. One document, both audiences. The guideline identifiers even share the urn:factur-x.eu… namespace. Profiles range from MINIMUM up to EXTENDED, defining how much structured detail travels in the XML.

XRechnung: EN 16931, tightened for German public bodies

XRechnung is a CIUS — a Core Invoice Usage Specification. That is a fancy way of saying “EN 16931 with the optional bits pinned down and a few extra rules added”. It is the format German authorities require, it is pure structured XML (no PDF layer), and it is stricter than a plain ZUGFeRD EN16931 profile. A document can be valid ZUGFeRD and still fail XRechnung, because XRechnung asks for more.

Peppol: the postal network, not a format

Finally, Peppol is not a file format at all — it is the exchange network and addressing scheme that moves those XML documents between trading partners across borders. Format is what you send; Peppol is how it gets there.

Why the map matters: “looks fine” is not “is valid”

The layering explains why a file can look perfect and still be rejected. A PDF can open cleanly yet not be valid PDF/A-3. An XML can be well-formed yet break a BR- rule — a VAT breakdown that is off by a cent, an exemption without its reason code, a correction document missing its reference. The receiver’s validator will catch it; the question is only whether you catch it first.

That is the entire reason a conformance gate exists. Producing the bytes is the easy part. Proving that the result passes PDF/A-3 validation and the EN 16931 business rules — every time, before it leaves your system — is what turns “probably valid” into “provably valid”. That gate is exactly what eunormia runs on every single document, whether you use the web tool, the API or the offline SDK.

Essayer dans le navigateur