BG-25Invoice line
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:CreditNoteTest (XPath):
exists(cac:InvoiceLine) or exists(cac:CreditNoteLine)CII
/rsm:CrossIndustryInvoiceTest (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.
Same check via API:
curl -F file=@invoice.xml https://einvoicechecker.com/v1/validateRelated rules
BR-21Each Invoice line shall have an Invoice line identifierBR-22Each Invoice line shall have an Invoiced quantityBR-23An Invoice line shall have an Invoiced quantity unit of measure codeBR-24Each Invoice line shall have an Invoice line net amountBR-25Each Invoice line shall contain the Item nameBR-26Each Invoice line shall contain the Item net priceBR-AE-01An Invoice that contains an Invoice line, a Document level allowance or a Document…BR-AE-02An Invoice that contains an Invoice line where the Invoiced item VAT category code is…
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.