BR – Core rules of EN 16931
BR-01: specification identifier (BT-24) missing
ErrorEN 16931 business rule (CEN)
Official message
[BR-01]-An Invoice shall have a Specification identifier (BT-24).Source: CEN EN 16931, version 1.3.16
What the message means
The invoice does not say which specification it was built for. That identifier is the first value a recipient reads: it decides whether the file is checked as an XRechnung, a Peppol invoice or a plain EN 16931 invoice. When it is missing or empty, no validation system can pick the right rules and the invoice is rejected.
How to fix it
Put the specification identifier into CustomizationID (UBL) or GuidelineSpecifiedDocumentContextParameter/ID (CII), for example the XRechnung identifier or urn:cen.eu:en16931:2017 for a plain EN 16931 invoice.
<ubl:Invoice>
<cbc:ID>RE-2026-0142</cbc:ID>
<cbc:IssueDate>2026-09-01</cbc:IssueDate>
</ubl:Invoice><ubl:Invoice>
<cbc:CustomizationID>urn:cen.eu:en16931:2017#compliant#urn:xeinkauf.de:kosit:xrechnung_3.0</cbc:CustomizationID>
<cbc:ID>RE-2026-0142</cbc:ID>
<cbc:IssueDate>2026-09-01</cbc:IssueDate>
</ubl:Invoice>Frequently asked
Which identifier do I use for an invoice to a German public body?
The XRechnung identifier urn:cen.eu:en16931:2017#compliant#urn:xeinkauf.de:kosit:xrechnung_3.0. For Peppol recipients the Peppol BIS identifier, for everyone else the plain EN 16931 identifier.
Where does the specification identifier go in the CII format?
Under rsm:ExchangedDocumentContext/ram:GuidelineSpecifiedDocumentContextParameter/ram:ID, right at the start of the file.
Also seen when …
- The invoicing software writes no CustomizationID because the invoice type is not configured.
- The field holds only spaces or a placeholder that comes out empty in the export.
- The ExchangedDocumentContext element was lost when converting from another format.
Fields concerned
- BT-24
Related rules
Check your invoice
The EN 16931 validator reports this rule with the line number and location – right in your browser, without upload.
Technical details
- UBL · Context (XPath)
/ubl:Invoice | /cn:CreditNote- UBL · Schematron test
normalize-space(cbc:CustomizationID) != ''- CII · Context (XPath)
/rsm:CrossIndustryInvoice- CII · Schematron test
normalize-space(rsm:ExchangedDocumentContext/ram:GuidelineSpecifiedDocumentContextParameter/ram:ID) != ''
Explanation written on 13 September 2026