The short answer
BR-55 fails when a cac:BillingReference has no cac:InvoiceDocumentReference holding a cbc:ID. Write the number of the earlier invoice the document refers to in cac:BillingReference/cac:InvoiceDocumentReference/cbc:ID, or remove the billing reference if there is no earlier invoice.
Only a reference to an invoice counts. A cac:CreditNoteDocumentReference or cac:SelfBilledInvoiceDocumentReference in its place still fails, and both of those elements are outside the EN 16931 model.
What the rule checks
The rule runs for each cac:BillingReference and passes when it finds a cbc:ID inside a cac:InvoiceDocumentReference child. The issue date beside the number is optional: when tried, a reference with only the invoice number passed.
It tests presence, not content. When tried, an empty cbc:ID inside cac:InvoiceDocumentReference did not report this rule; the empty element was reported by PEPPOL-EN16931-R008 instead.
A cac:InvoiceDocumentReference with no cbc:ID element fails the XSD layer, because UBL requires an identifier in every document reference, so this rule is never reached for it.
Other kinds of reference do not count. When tried, a billing reference holding a cac:CreditNoteDocumentReference reported BR-55, UBL-SR-07 and the warning UBL-CR-039.
| Term | Meaning | UBL element |
|---|---|---|
| BG-3 | Preceding Invoice reference | cac:BillingReference |
| BT-25 | Preceding Invoice reference | cac:BillingReference/cac:InvoiceDocumentReference/cbc:ID |
| BT-26 | Preceding Invoice issue date | cac:BillingReference/cac:InvoiceDocumentReference/cbc:IssueDate |
How an integration ends up here
Possible causes, from the shape of the rule rather than from measured usage:
- The template always writes
cac:BillingReferenceand fills the invoice reference inside it only for credit notes and corrective invoices. - A credit note is raised without a link to the original invoice, and the export writes an empty billing reference instead of leaving it out.
- The original document is referenced with the wrong UBL element, such as
cac:CreditNoteDocumentReference.
How to fix it
- Establish whether the document refers to an earlier invoice. A credit note or corrective invoice refers to the invoice it corrects; an ordinary invoice may have no preceding invoice at all.
- If there is one, write its number, exactly as issued, to
cac:BillingReference/cac:InvoiceDocumentReference/cbc:ID, and its issue date tocbc:IssueDatebeside it when you have it. - If there is none, remove
cac:BillingReferencealtogether. - Use
cac:InvoiceDocumentReferencefor the reference; it is the only element the model maps the preceding invoice reference to.
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 billing reference is present but holds nothing
<cbc:BuyerReference>BUYER-REF-001</cbc:BuyerReference>
<cac:OrderReference>
<cbc:ID>PO-456</cbc:ID>
</cac:OrderReference>
<cac:BillingReference>
</cac:BillingReference>
<cac:ContractDocumentReference>
<cbc:ID>CONTRACT-789</cbc:ID>
</cac:ContractDocumentReference>Fragment of the corrected invoice: the billing reference names invoice PRIOR-001 and its issue date
<cbc:BuyerReference>BUYER-REF-001</cbc:BuyerReference>
<cac:OrderReference>
<cbc:ID>PO-456</cbc:ID>
</cac:OrderReference>
<cac:BillingReference>
<cac:InvoiceDocumentReference>
<cbc:ID>PRIOR-001</cbc:ID>
<cbc:IssueDate>2026-08-08</cbc:IssueDate>
</cac:InvoiceDocumentReference>
</cac:BillingReference>
<cac:ContractDocumentReference>
<cbc:ID>CONTRACT-789</cbc:ID>
</cac:ContractDocumentReference>The corrected invoice has a cac:InvoiceDocumentReference with number PRIOR-001 and issue date 2026-08-08 inside cac:BillingReference; the failing one has the wrapper alone. Two more findings come with it. UBL-SR-07 is the UBL syntax binding stating the same requirement, so it fires on exactly the same condition, and PEPPOL-EN16931-R008 fires because the billing reference element has no content at all. Restoring the invoice reference clears all three.
What the validator reported
- The failing invoice reports BR-55,
UBL-SR-07and PEPPOL-EN16931-R008. 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, a credit note with an empty billing reference reported the same three rules. - Reported in the EN 16931 layer; the empty-element finding comes from the Peppol layer.
- The rule only checks a billing reference that is present. When tried, a credit note from a seller with a GB postal address and no billing reference at all passed every layer, but a seller in the Netherlands must include one on a credit note (
NL-R-001). - The number is not matched against earlier documents: the validator cannot tell whether
PRIOR-001exists.
Related rules
- PEPPOL-EN16931-R008 reports the empty billing reference, and an empty invoice number inside it, which this rule lets through
- NL-R-001 makes the billing reference compulsory on credit notes from sellers in the Netherlands
- BR-02 covers the document number itself, which is a different element from the preceding invoice number
- 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-24.1: source checked 2026-09-24, explanation last updated 2026-09-24.
The official definition of BR-55 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.
