BR-01:An Invoice shall have a Specification identifier (BT-24)
Fix: Insert cbc:CustomizationID as the first child of the Invoice root, with the identifier string for the profile you are actually sending. Invoice Navigator auto-fixes BR-01 at 0.95 confidence by inferring the intended profile from the document's namespaces, ProfileID and country-specific elements. Upload your invoice to fix this automatically.
BR-01 fires when cbc:CustomizationID is missing or empty. The specification identifier (BT-24) tells the receiver which EN 16931 profile the document claims to conform to, and every downstream validator selects its rule set from this value. Without it a receiving Access Point cannot decide which Schematron to run, so the invoice is rejected at the door.
Engine Classification
Add default Peppol BIS 3.0 CustomizationID if missing
Confidence: 95% · Applied automatically in pipeline
What is BR-01?
BR-01 is a fatal validation rule defined in the EN 16931 specification. It validates the CustomizationID element in the UBL invoice XML.
When this rule fires, the invoice is rejected by Peppol access points and never reaches the buyer.
Target path: /Invoice/cbc:CustomizationID
Why This Error Matters
The specification identifier is how a receiver decides which rule set to apply. Without it the document is unclassifiable, so Access Points reject it before any business validation runs. It is also the first thing an auditor looks at when proving that an archived invoice was compliant with a specific standard version.
BR-01 is a hard failure — the invoice must be corrected and re-sent before it can reach the recipient.
The invoice never reaches the buyer's AP system. Because the rejection happens at the protocol layer, senders often get only a terse technical error and spend hours looking for a data problem that does not exist.
Invoice Navigator can automatically correct this error in your pipeline. The fix is applied with full audit evidence, so your compliance trail remains intact.
Validator Behavior
- ·Causes invoice rejection
- ·Error returned: BR-01
- ·Specification: EN 16931
How to Fix It
Determine the target profile
Check where the invoice is going. Cross-border Peppol uses the Peppol BIS Billing 3.0 identifier; German public-sector invoices use the XRechnung 3.0 identifier; a French Chorus Pro flow uses its own CIUS string.
Insert the element in the right position
cbc:CustomizationID must be the first child of the Invoice root element, ahead of cbc:ProfileID and cbc:ID. UBL enforces element order, so appending it at the end triggers a schema error instead.
Use the exact identifier string
The value is compared literally. Trailing whitespace, a missing #compliant# segment, or a 2.1 identifier on a 3.0 document all cause a rejection.
Fix it in the export template
BR-01 is nearly always a template problem, not a data problem. Hard-code the identifier in the ERP's e-invoicing export so it cannot go missing again.
Before / After
<Invoice xmlns="urn:oasis:names:specification:ubl:schema:xsd:Invoice-2"> <cbc:CustomizationID></cbc:CustomizationID> <cbc:ID>INV-2026-0417</cbc:ID> <cbc:IssueDate>2026-08-19</cbc:IssueDate>
<Invoice xmlns="urn:oasis:names:specification:ubl:schema:xsd:Invoice-2"> <cbc:CustomizationID>urn:cen.eu:en16931:2017#compliant#urn:fdc:peppol.eu:2017:poacc:billing:3.0</cbc:CustomizationID> <cbc:ProfileID>urn:fdc:peppol.eu:2017:poacc:billing:01:1.0</cbc:ProfileID> <cbc:ID>INV-2026-0417</cbc:ID> <cbc:IssueDate>2026-08-19</cbc:IssueDate>
Technical Reference
/Invoice/cbc:CustomizationIDCode Example
<cbc:CustomizationID>urn:cen.eu:en16931:2017#compliant#urn:fdc:peppol.eu:2017:poacc:billing:3.0</cbc:CustomizationID>Common Causes
- ·Export template built from a UBL sample that omitted the header block
- ·Invoice generated by legacy code that predates EN 16931
- ·Conversion from CSV or a proprietary format that had no profile concept
- ·Element present but emitted empty because the ERP field was blank
- ·Profile identifier stored in ProfileID only, with CustomizationID left out
Seeing this in production? The API handles BR-01 automatically. See the fix response →
Commonly Seen In
Frequently Asked Questions
BR-01 means the invoice has no specification identifier (BT-24). The Schematron asserts normalize-space(cbc:CustomizationID) != '', so both a missing element and an empty or whitespace-only one fail.
It depends on the profile. Peppol BIS Billing 3.0 uses urn:cen.eu:en16931:2017#compliant#urn:fdc:peppol.eu:2017:poacc:billing:3.0. XRechnung 3.0 UBL uses urn:cen.eu:en16931:2017#compliant#urn:xoev-de:kosit:standard:xrechnung_3.0. The string is compared literally.
Yes. Invoice Navigator infers the intended profile from the document namespaces, ProfileID and country-specific elements, then inserts the correct CustomizationID as the first child of the root. Confidence is 0.95.
CustomizationID (BT-24) identifies the syntax and rule set the invoice conforms to. ProfileID (BT-23) identifies the business process, such as billing 01. Both are mandatory in Peppol BIS; BR-01 only covers CustomizationID.
BR-01 only checks that the element is non-empty. If the value does not match the profile you are actually sending, the profile-specific rule fails next — for example a Peppol identifier on a document carrying XRechnung-only elements.
Related Errors
Related Content
Last updated: 18 August 2026
Validate your invoice
Drop your XML here to check for BR-01
Auto-fix BR-01 in seconds
Upload your invoice and we fix this error automatically. Financial fields are never touched.