What this identifier declares
This string is the CustomizationID (BT-24) of XRechnung 3.0, the German Core Invoice Usage Specification maintained by KoSIT. Split at the # marks, it reads: the document follows the EN 16931 core model, stays compliant with it (a strict subset, no data beyond the core), and applies the XRechnung 3.0 overlay: the German business rules (BR-DE), including the famous mandatory buyer reference (BT-10) carrying the Leitweg-ID that routes an invoice to the right public-sector office, plus German requirements on payment details and contact fields.
Public-sector receivers in Germany expect exactly this declaration. It is what separates an XRechnung from a generic EN 16931 invoice with German addresses in it.
One identifier, two spellings
Searches for this page arrive via two different strings, and both are real:
urn:cen.eu:en16931:2017#compliant#urn:xeinkauf.de:kosit:xrechnung_3.0
urn:cen.eu:en16931:2017#compliant#urn:xoev-de:kosit:standard:xrechnung_3.0
The first is the identifier the XRechnung 3.0 specification defines. The second carries the naming pattern of versions 1.2 through 2.3, which lived on the xoev-de domain (urn:xoev-de:kosit:standard:xrechnung_2.3 and so on), applied to 3.0. When KoSIT moved XRechnung under the xeinkauf.de procurement umbrella, the identifier moved with the 3.0 release, but the old pattern lingers in libraries and templates that only bumped the version number. Receivers and validators differ in how forgiving they are, so emit the xeinkauf.de form and treat the other as legacy input.
Where it appears in the XML
XRechnung inherits both EN 16931 syntax bindings. In UBL, the identifier is the cbc:CustomizationID directly under the root:
<cbc:CustomizationID>urn:cen.eu:en16931:2017#compliant#urn:xeinkauf.de:kosit:xrechnung_3.0</cbc:CustomizationID>
In CII, the same value sits in ram:GuidelineSpecifiedDocumentContextParameter/ram:ID inside rsm:ExchangedDocumentContext.
What validators derive from it
The declaration routes the document to the KoSIT rulebook: syntax XSD, the EN 16931 core rules, and the German BR-DE rules on top, in the version the identifier names. The InvoiceXML XRechnung validator recognises both spellings, applies the current KoSIT rule set, and returns findings with their rule IDs and layers, so "core problem" and "German overlay problem" are distinguishable at a glance.
Common problems around this identifier
- Version drift. Declaring
xrechnung_2.3(or older) after the 3.0 switchover of February 2024 is the most frequent intake failure in German B2G integrations. - The wrong spelling for a strict receiver. Platforms that match the string exactly may not accept the xoev-de variant for 3.0 documents.
- Declared but not delivered. The identifier promises the BR-DE rules pass; a missing or malformed Leitweg-ID in BT-10 is the classic way that promise breaks.
Working with XRechnung documents
To check a file you received or produced, the XRechnung validator runs the full KoSIT rule set in the browser or over the API. To generate compliant documents, the create endpoint stamps the current CustomizationID and validates against the current rules before delivery; when KoSIT publishes the next release, the switch happens server-side on the effective date, with no change to your integration. The XRechnung hub covers the German landscape, and the XRechnung API toolkit is the full integration walkthrough.
Related identifiers and rules
- BR-DE-21, the rule that rejects a BT-24 not matching this identifier, and BR-DE-15, the mandatory Leitweg-ID it promises
- urn:cen.eu:en16931:2017, the stem and its #compliant# grammar
- the Peppol BIS Billing 3.0 CustomizationID, the network-wide sibling CIUS
- urn:factur-x.eu:1p0:en16931, the hybrid-PDF cousin used in Franco-German B2B
- the CII namespace, for XRechnung documents in the CII syntax