BT-24Specification identifier
Official rule text
[BR-DE-21] The element "Specification identifier" (BT-24) shall syntactically correspond to the identifier of the XRechnung standard.
Official text (German): Das Element "Specification identifier" (BT-24) soll syntaktisch der Kennung des Standards XRechnung entsprechen.
Why this error occurs
An XRechnung must announce itself with the exact XRechnung specification identifier in BT-24. The rule compares cbc:CustomizationID (UBL) or ram:GuidelineSpecifiedDocumentContextParameter/ram:ID (CII) with the identifiers of the XRechnung CIUS, the XRechnung Extension and the Clean Vehicles Directive variant and warns on any other value. It fires when an old XRechnung 2.x identifier (urn:xoev-de:kosit:standard:xrechnung_2.3) is still configured, when the Peppol BIS identifier is used, or when the value has trailing whitespace.
How to fix it
Set cbc:CustomizationID / ram:GuidelineSpecifiedDocumentContextParameter/ram:ID to urn:cen.eu:en16931:2017#compliant#urn:xeinkauf.de:kosit:xrechnung_3.0 for a standard XRechnung 3.x document; when using the Extension (sub-invoice lines, third-party payment) append #conformant#urn:xeinkauf.de:kosit:extension:xrechnung_3.0. Copy the string exactly, in one line, with no spaces. Update the value when you migrate to a new XRechnung version; the receiver's validator checks against the versions currently in force.
Example (valid)
<cbc:CustomizationID>urn:cen.eu:en16931:2017#compliant#urn:xeinkauf.de:kosit:xrechnung_3.0</cbc:CustomizationID>
What the validator checks
Checked element (context):
UBL
/ubl:Invoice | /cn:CreditNoteTest (XPath):
cbc:CustomizationID = $XR-CIUS-ID or cbc:CustomizationID = $XR-EXTENSION-ID or cbc:CustomizationID = $XR-CVD-IDCII
/rsm:CrossIndustryInvoice/rsm:ExchangedDocumentContextTest (XPath):
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 invoice
Drop your XML or PDF on the validator and every failed rule is linked to its page here. Free, no account, the file is not stored.
Same check via API:
curl -F file=@invoice.xml https://einvoicechecker.com/v1/validateRelated rules
BR-DE-1Payment instructions (BG-16) are missingBR-DE-2Seller contact (BG-6) is missingBR-DE-3Seller city (BT-37) is missingBR-DE-4The element "Seller post code" must be transmittedBR-DE-5Seller contact point (BT-41) is missingBR-DE-6Seller contact telephone number (BT-42) is missingBR-DE-7Seller contact email address (BT-43) is missingBR-DE-8The element "Buyer city" must be transmitted
Frequently asked questions
What does BR-DE-21 mean?
BR-DE-21 is a xrechnung rule: The element "Specification identifier" (BT-24) shall syntactically correspond to the identifier of the XRechnung standard.
Will my invoice be rejected because of BR-DE-21?
No. BR-DE-21 is a warning: the invoice is accepted but the recipient sees the notice. Fix it anyway, warnings often become errors in later rule versions.
Which formats does BR-DE-21 apply to?
XRechnung in UBL or CII syntax, including ZUGFeRD / Factur-X PDFs with the XRECHNUNG profile. Invoices to German public authorities (federal, state and municipal) must pass it. Syntax: UBL and CII.
Source: XRechnung 3.0.2, schematron 2.6.0 (KoSIT, September 2026). Catalogue generated from the official schematron on 2026-10-14.