Skip to content

BR-55: Add the preceding invoice number to the billing reference

Each cac:BillingReference must hold cac:InvoiceDocumentReference with a cbc:ID. Leave the billing reference out if there is no preceding invoice.

EN 16931Fatal: the document is invalidProcess and references

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.

TermMeaningUBL element
BG-3Preceding Invoice referencecac:BillingReference
BT-25Preceding Invoice referencecac:BillingReference/cac:InvoiceDocumentReference/cbc:ID
BT-26Preceding Invoice issue datecac: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:BillingReference and 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

  1. 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.
  2. If there is one, write its number, exactly as issued, to cac:BillingReference/cac:InvoiceDocumentReference/cbc:ID, and its issue date to cbc:IssueDate beside it when you have it.
  3. If there is none, remove cac:BillingReference altogether.
  4. Use cac:InvoiceDocumentReference for 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

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 Invoice and CreditNote. 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-001 exists.

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.