Account
English

BR-16: Invoice has no invoice line (BG-25)

EN 16931 core rule · Error · UBL / CII

StandardEN 16931-1 (European e-invoicing semantic model)SeverityError: the invoice is rejectedSyntaxUBL, CIIBusiness terms
  • BG-25 Invoice line
Applies toEvery EN 16931 invoice: XRechnung, ZUGFeRD 2.x / Factur-X (profiles EN 16931, EXTENDED, XRECHNUNG), Peppol BIS Billing 3.0, and national CIUS such as the Dutch NLCIUS or the Italian/Spanish profiles.

Official rule text

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

Why this error occurs

The rule requires at least one cac:InvoiceLine or cac:CreditNoteLine in UBL, or one ram:IncludedSupplyChainTradeLineItem in CII. An invoice without lines has no basis for the VAT breakdown and totals, and the standard does not allow header-only documents. This typically happens when a software exports totals only (e.g. for a lump-sum or an advance payment) or when the line mapping is filtered out.

How to fix it

Add at least one line. In UBL a minimal cac:InvoiceLine needs cbc:ID, cbc:InvoicedQuantity with unitCode, cbc:LineExtensionAmount with currencyID, cac:Item with cbc:Name and cac:ClassifiedTaxCategory, and cac:Price/cbc:PriceAmount. In CII a ram:IncludedSupplyChainTradeLineItem needs ram:AssociatedDocumentLineDocument/ram:LineID, ram:SpecifiedTradeProduct/ram:Name, ram:SpecifiedLineTradeAgreement/ram:NetPriceProductTradePrice/ram:ChargeAmount, ram:SpecifiedLineTradeDelivery/ram:BilledQuantity and ram:SpecifiedLineTradeSettlement with ram:ApplicableTradeTax and ram:SpecifiedTradeSettlementLineMonetarySummation/ram:LineTotalAmount. For a lump sum create one line with quantity 1.

Example (valid)

<cac:InvoiceLine>
  <cbc:ID>1</cbc:ID>
  <cbc:InvoicedQuantity unitCode="C62">1</cbc:InvoicedQuantity>
  <cbc:LineExtensionAmount currencyID="EUR">100.00</cbc:LineExtensionAmount>
  <cac:Item><cbc:Name>Consulting</cbc:Name><cac:ClassifiedTaxCategory><cbc:ID>S</cbc:ID><cbc:Percent>19</cbc:Percent><cac:TaxScheme><cbc:ID>VAT</cbc:ID></cac:TaxScheme></cac:ClassifiedTaxCategory></cac:Item>
  <cac:Price><cbc:PriceAmount currencyID="EUR">100.00</cbc:PriceAmount></cac:Price>
</cac:InvoiceLine>

What the validator checks

Checked element (context):

UBL

/ubl:Invoice | /cn:CreditNote

Test (XPath):

exists(cac:InvoiceLine) or exists(cac:CreditNoteLine)

CII

/rsm:CrossIndustryInvoice

Test (XPath):

//ram:IncludedSupplyChainTradeLineItem

Check your invoice

Drop your XML or PDF on the validator and every failed rule is linked to its page here. Free, no account, the file is not stored.

Check your invoice →

Same check via API:

curl -F file=@invoice.xml https://einvoicechecker.com/v1/validate

Related rules

Frequently asked questions

What does BR-16 mean?

BR-16 is a en 16931 core rule: An Invoice shall have at least one Invoice line (BG-25)

Will my invoice be rejected because of BR-16?

Yes. BR-16 is flagged "fatal"; validators (KoSIT, Peppol access points, the German ZRE/OZG-RE portals) reject the invoice until it is fixed.

Which formats does BR-16 apply to?

Every EN 16931 invoice: XRechnung, ZUGFeRD 2.x / Factur-X (profiles EN 16931, EXTENDED, XRECHNUNG), Peppol BIS Billing 3.0, and national CIUS such as the Dutch NLCIUS or the Italian/Spanish profiles. Syntax: UBL and CII.

Source: EN 16931-1:2017 schematron (CEN TC434, via Peppol BIS 3.0.20). Catalogue generated from the official schematron on 2026-10-14.