BR-DE-21
The file claims to be XRechnung but its customization identifier is not an XRechnung one.
Why it happens
The document was generated against a different profile — often Peppol BIS Billing 3.0 — and then validated as XRechnung.
How to fix it
Either set BT-24 to the correct XRechnung 3.0 customization identifier, or validate the file against the profile it actually declares. Choosing the right target profile before conversion avoids this entirely.
The official rule
XRechnung, official German wordingDas Element "Specification identifier" (BT-24) soll syntaktisch der Kennung des Standards XRechnung entsprechen.
Our English rendering: The element "Specification identifier" (BT-24) should syntactically match the XRechnung standard identifier.
Technical detail — where the rule is evaluated and the exact test
| Syntax | Context and assertion |
|---|---|
| UBL | /ubl:Invoice | /cn:CreditNote |
cbc:CustomizationID = $XR-CIUS-ID or cbc:CustomizationID = $XR-EXTENSION-ID or cbc:CustomizationID = $XR-CVD-ID | |
| CII | /rsm:CrossIndustryInvoice/rsm:ExchangedDocumentContext |
ram:GuidelineSpecifiedDocumentContextParameter/ram:ID = $XR-CIUS-ID or ram:GuidelineSpecifiedDocumentContextParameter/ram:ID = $XR-EXTENSION-ID or ram:GuidelineSpecifiedDocumentContextParameter/ram:ID = $XR-CVD-ID |
Check your own invoice
Paste or drop your UBL or CII file into the free validator. It runs the official EN 16931 ruleset plus the German XRechnung layer and lists every rule that fires, BR-DE-21 included — no signup, no limit.
Validate an e-invoice freeFixing the data at source instead? The CSV converter builds a compliant invoice from a spreadsheet export.