Choosing a profile
ZUGFeRD Extended or XRechnung: what the public sector accepts
Many invoicing products offer a dropdown with Basic, Comfort, Extended and XRechnung — and some recommend Extended. For invoices to public authorities that is the wrong choice, and the reason is checkable.
The finding
We ran a file from a German accounting vendor’s public generator through our validator. It came back as Factur-X 1.0 EXTENDED, CII, PDF/A-3B. The result: businessRulesEvaluated: false, no matched scenario, no findings.
“No findings” does not mean “clean” here. It means nothing was checked. The official KoSIT XRechnung configuration has no scenario for the EXTENDED guideline, so the document passes through unevaluated. A sender who reads that as confirmation has switched their own control off without noticing.
Why EXTENDED is not evaluated
It is in the document itself. Every e-invoice carries an identifier saying which rule set it was built against, and EXTENDED’s ends in #conformant#, not #compliant#. That is not an accident: EXTENDED deliberately sits outside the EN 16931 core so that it can carry fields the norm does not provide for.
In B2B that is permitted; the German mandate accepts EXTENDED between businesses. But the file is then not an XRechnung — and a public-sector invoice portal expecting one will refuse it.
What to choose
| Recipient | Choose | Why |
|---|---|---|
| Public authority (B2G) | XRechnung | The only thing a public-sector portal reliably accepts, and the only one the German validator evaluates in full. |
| Business (B2B) | ZUGFeRD EN 16931 (Comfort) | Matches the core of the norm and is therefore checkable. The recipient can process it automatically without knowing your extra fields. |
| Large partner, by agreement | Extended | Only where the recipient explicitly asks for it and actually reads the extra fields. Expect no standard validator to tell you anything about it. |
How to see what you actually send
Not by the label in the dropdown — that is the vendor’s wording. Open the XML and read the identifier: cbc:CustomizationID in UBL, ram:GuidelineSpecifiedDocumentContextParameter/ram:ID in CII.
<!-- XRechnung 3.0 -->
urn:cen.eu:en16931:2017#compliant#urn:xeinkauf.de:kosit:xrechnung_3.0
<!-- plain EN 16931 -->
urn:cen.eu:en16931:2017If it says #conformant# rather than #compliant#, you are sending an extension and not an XRechnung. If the identifier is missing entirely, the validator reports BR-01.
Check an invoice your system produces today — the report names the format, the profile and the rule-set version it was checked against, and says explicitly when it could not be checked.