Skip to content
EN 16931 core rules

BR-16: Invoice line (BG-25) is required

What this rule requires

Invoice line (BG-25) is required.

ExampleEN 16931 (UBL)

An invoice built like a valid one, except for this:

<Invoice xmlns="urn:oasis:names:specification:ubl:schema:xsd:Invoice-2" xmlns:cac="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2" xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2">
  <cbc:CustomizationID>urn:cen.eu:en16931:2017</cbc:CustomizationID>
  <cbc:ID>INV-1001</cbc:ID>
  <cbc:IssueDate>2026-01-15</cbc:IssueDate>
  <cbc:InvoiceTypeCode>380</cbc:InvoiceTypeCode>
  <cbc:DocumentCurrencyCode>EUR</cbc:DocumentCurrencyCode>
  <cbc:BuyerReference>04011000-12345-67</cbc:BuyerReference>
</Invoice>

The validator says: Invoice line (BG-25) is required and the document does not contain it.

Official validation message

This is the official EN 16931 validation message for this rule, quoted verbatim in English from the validation artefacts below. It is not translated: a translation would no longer be the official text.

[BR-16]-An Invoice shall have at least one Invoice line (BG-25)

Quoted verbatim and unmodified from the official EN 16931 validation artefacts published by CEN/TC 434, release validation-1.3.16 of April 13, 2026, licensed under the European Union Public Licence v. 1.2. Provided without warranty of any kind, including as to accuracy. Source and licence →

How to fix it

Add Invoice line to the invoice.

Frequently asked questions

What does BR-16 mean?
Invoice line (BG-25) is required. The rule runs under EN 16931 (UBL), Peppol BIS 3.0, and XRechnung 3.0 (UBL).
How do I fix BR-16?
Add Invoice line to the invoice. In UBL the element is ⁦/Invoice/cac:InvoiceLine⁩.

Runs under these profiles

  • EN 16931 (UBL)
  • Peppol BIS 3.0
  • XRechnung 3.0 (UBL)

Element path

  • Invoice line (BG-25)UBL /Invoice/cac:InvoiceLineCII /CrossIndustryInvoice/SupplyChainTradeTransaction/IncludedSupplyChainTradeLineItemRead from what WorkAlio's CII parser accepts — there is no CII writer yet, so this path is not independently verified the way the UBL path is.