On this page
The short answer
BR-CL-07 fails when an object identifier, the cbc:ID of a document reference whose cbc:DocumentTypeCode is 130, has a schemeID that is not on the UNTDID 1153 list of reference qualifiers. In the recorded example a vehicle registration was marked VRN; the code the list gives for a vehicle licence number is ABZ.
If no code on the list describes the identifier, leave schemeID out. The attribute is optional, and an object identifier without it is not checked by this rule.
What the rule checks
Two places are covered: the invoiced object identifier in cac:AdditionalDocumentReference at document level, and the line object identifier in cac:DocumentReference on a line. When tried, VIN on a line object identifier was reported at cac:InvoiceLine[1]/cac:DocumentReference[1]/cbc:ID[1].
Spaces around the code are removed, and what remains must match a listed code exactly, in upper case. When tried, ABZ passed and abz failed.
The list holds 818 reference qualifiers, but no ICD codes: when tried, 0088 failed on an object identifier holding a GLN.
The rule looks only at references with type code 130. When tried, a schemeID on a reference with no cbc:DocumentTypeCode was reported instead by UBL-SR-43 and the warning UBL-CR-665, which object to a scheme on other kinds of reference.
| Term | Meaning | UBL element |
|---|---|---|
| BT-18 | Invoiced object identifier | cac:AdditionalDocumentReference/cbc:ID (with cbc:DocumentTypeCode 130) |
| BT-18-1 | Invoiced object identifier: its scheme identifier attribute | cac:AdditionalDocumentReference/cbc:ID/@schemeID |
| BT-128 | Invoice line object identifier | cac:InvoiceLine/cac:DocumentReference/cbc:ID (cac:CreditNoteLine in a credit note) |
| BT-128-1 | Invoice line object identifier: its scheme identifier attribute | cac:InvoiceLine/cac:DocumentReference/cbc:ID/@schemeID |
How an integration ends up here
Possible causes, from the shape of the rule rather than from measured usage:
- The integration writes its own abbreviation for the kind of object, such as
VRN,VINorMETER, where a UNTDID 1153 code is expected. - The scheme codes used for party identifiers are reused, so an ICD code such as
0088lands on an object identifier. - Codes are sent in lower case because a mapping table was typed that way.
- A
schemeIDis always written, with a placeholder when the source has no qualifier for the object.
How to fix it
- Decide what kind of object the identifier names: a vehicle, a meter, a phone line, an insurance policy and so on.
- Find its code in the UNTDID 1153 list published for Peppol BIS Billing 3.0. Some entries:
ABZVehicle licence number,MGMeter unit number,AWVPhone number,SESerial number,AKZPolicy number. - Write that code in upper case as the
schemeIDof thecbc:ID, and keepcbc:DocumentTypeCodeat130. - If no entry fits, send the identifier without
schemeID.ZZZ, Mutually defined reference number, is only useful when the buyer has agreed what it stands for.
Validate your corrected invoice
Before and after
These are fragments, not complete documents. The complete synthetic documents they come from are linked below.
Fragment of the failing invoice: the invoiced object identifier is marked VRN
<cbc:BuyerReference>BUYER-REF-001</cbc:BuyerReference>
<cac:AdditionalDocumentReference>
<cbc:ID schemeID="VRN">AB12CDE</cbc:ID>
<cbc:DocumentTypeCode>130</cbc:DocumentTypeCode>
</cac:AdditionalDocumentReference>
<!-- parties omitted from this fragment -->Fragment of the corrected invoice: the same identifier under ABZ, Vehicle licence number
<cbc:BuyerReference>BUYER-REF-001</cbc:BuyerReference>
<cac:AdditionalDocumentReference>
<cbc:ID schemeID="ABZ">AB12CDE</cbc:ID>
<cbc:DocumentTypeCode>130</cbc:DocumentTypeCode>
</cac:AdditionalDocumentReference>
<!-- parties omitted from this fragment -->Only the schemeID of the invoiced object identifier differs: VRN in the failing invoice, ABZ in the corrected one, for the same identifier AB12CDE. The failing document reports BR-CL-07 alone, and the Peppol layer passed.
What the validator reported
- The failing invoice reports BR-CL-07. The corrected document passes every layer with no findings.Download the failing XMLDownload the corrected XML
Recorded on phive 12.1.0 / phive-rules-peppol 4.5.6 / Saxon-HE 12.10, the engine behind the free validator, using synthetic data. A recorded result is regression evidence for these documents; it is not a certification.
Where it applies
- Applies to
InvoiceandCreditNote; when tried,VINon the invoiced object identifier of a credit note reported this rule alone. - An EN 16931 rule with no Peppol counterpart: in every case tried, the Peppol layer passed.
- A reference with type code
130names an object and is not a supporting document. The EN 16931 layer rejects a description or an attachment on it, withUBL-CR-673andUBL-CR-666; a file belongs in a separatecac:AdditionalDocumentReferencewithout that code. - On a line,
PEPPOL-EN16931-R101accepts acac:DocumentReferenceonly as an object identifier with type code130.
Related rules
- PEPPOL-EN16931-R101 allows a document reference on a line only as a line object identifier
- BR-CL-26 checks a deliver-to location identifier, where a GLN is marked with the ICD code 0088 instead
- PEPPOL-EN16931-CL001 checks the MIME code of files attached through other additional document references
- Browse every rule in the reference
- Background: Understanding EN 16931 validation errors
Scope and source
Written for Peppol BIS Billing 3.0.21 (May 2026), EN 16931 1.3.16, as applied to UBL 2.1 Invoice and CreditNote documents. Other profiles, syntaxes and releases can define this identifier differently. Guidance version 2026-09-28.1: source checked 2026-09-28, explanation last updated 2026-09-28.
The official definition of BR-CL-07 carries the normative wording and test. This page is our explanation of it, not a copy.
Guidance does not change the engine verdict. Fixing this finding does not mean the document passes every layer, and validation does not certify legal or tax compliance or transmit a document over Peppol.

