Back to Compliance Hub
Critical

BR-1

Specification Identifier Missing (BT-24)

What This Error Means

BR-1 is the first EN 16931 core rule: an invoice must have a specification identifier (BT-24). The KoSIT report prints it as [BR-01]. In UBL the field is cbc:CustomizationID, in CII rsm:ExchangedDocumentContext/ram:GuidelineSpecifiedDocumentContextParameter/ram:ID. It tells the receiver which rule set the invoice follows; for XRechnung 3.0.x the value is urn:cen.eu:en16931:2017#compliant#urn:xeinkauf.de:kosit:xrechnung_3.0. The rule is fatal.

Why this happens

The Schematron test is normalize-space(cbc:CustomizationID) != '': the element is missing or empty. In the official KoSIT validator the effect is harsher than a single rule failure. The validator chooses its validation scenario by the value of BT-24, so without it no XRechnung scenario matches and the file is rejected with 'no scenario matched', without any rule ID. Tools that run the Schematron directly report BR-01 together with the warning BR-DE-21. Typical causes: a hand-built or legacy XML template without the element; the value written into cbc:ProfileID instead; a ZUGFeRD or Peppol identifier where an XRechnung is expected (BR-01 passes then, but BR-DE-21 warns and the KoSIT validator finds no XRechnung scenario); or an identifier from XRechnung 2.x.

How to Fix It

Add cbc:CustomizationID as the first element after the optional cbc:UBLVersionID, before cbc:ProfileID and cbc:ID, with the exact XRechnung identifier. In CII, fill ram:GuidelineSpecifiedDocumentContextParameter/ram:ID.

Step-by-step

1) Add cbc:CustomizationID near the top of the document: after ext:UBLExtensions and cbc:UBLVersionID (both optional), before cbc:ProfileID. 2) Use the value for your target: XRechnung 3.0.x urn:cen.eu:en16931:2017#compliant#urn:xeinkauf.de:kosit:xrechnung_3.0; the XRechnung Extension adds #conformant#urn:xeinkauf.de:kosit:extension:xrechnung_3.0. 3) Copy it exactly; a trailing space, a different case or 'xrechnung_3.0.2' breaks scenario matching. 4) Add cbc:ProfileID as well. XRechnung UBL files need it (PEPPOL-EN16931-R001), usually urn:fdc:peppol.eu:2017:poacc:billing:01:1.0. 5) In CII, put the identifier into rsm:ExchangedDocumentContext/ram:GuidelineSpecifiedDocumentContextParameter/ram:ID. 6) Validate again.

XML Example
<cbc:CustomizationID>urn:cen.eu:en16931:2017#compliant#urn:xeinkauf.de:kosit:xrechnung_3.0</cbc:CustomizationID>
<cbc:ProfileID>urn:fdc:peppol.eu:2017:poacc:billing:01:1.0</cbc:ProfileID>
<cbc:ID>RE-2026-4711</cbc:ID>

Fix Automatically

Upload your invoice to our Smart Repair engine. It checks the file against the full KoSIT rule set, including BR-1, and corrects supported fields with a GoBD audit trail.

Open Smart Repair

Frequently asked questions

Which value do I use for XRechnung 3.0.2?

The same as for 3.0.1: urn:cen.eu:en16931:2017#compliant#urn:xeinkauf.de:kosit:xrechnung_3.0. The identifier only contains major and minor version.

Why does the KoSIT validator show no rule at all?

Because it could not select a scenario. Without a matching BT-24 it does not know which Schematron to run, so it rejects the file before any business rule is checked.

Is BT-24 the same as the ProfileID?

No. BT-24 (cbc:CustomizationID) names the specification; BT-23 (cbc:ProfileID) names the business process. XRechnung UBL files need both.

Related Errors

Other commonly encountered validation errors