BT-106Sum of Invoice line net amountBT-131Invoice line net amount
Official rule text
[BR-CO-10] Sum of Invoice line net amount (BT-106) = Σ Invoice line net amount (BT-131).
Why this error occurs
The header total BT-106 must equal the sum of all invoice line net amounts (BT-131), rounded to two decimals. The rule compares cac:LegalMonetaryTotal/cbc:LineExtensionAmount with the sum of cac:InvoiceLine/cbc:LineExtensionAmount (UBL), or ram:SpecifiedTradeSettlementHeaderMonetarySummation/ram:LineTotalAmount with the sum of the line ram:LineTotalAmount values (CII). Mismatches come from software summing unrounded internal values while writing rounded values per line, or from lines being dropped or filtered in the export.
How to fix it
Formula: BT-106 = Σ BT-131 over all lines, rounded to 2 decimals. Compute the header value from the exact amounts written into the XML lines, not from internal full-precision values. In UBL set cbc:LineExtensionAmount in cac:LegalMonetaryTotal; in CII set ram:LineTotalAmount in the header monetary summation. Negative lines (credits) are included with their sign; document-level allowances and charges are not part of this sum.
Example (valid)
<cac:LegalMonetaryTotal>
<cbc:LineExtensionAmount currencyID="EUR">250.00</cbc:LineExtensionAmount>
<cbc:TaxExclusiveAmount currencyID="EUR">250.00</cbc:TaxExclusiveAmount>
<cbc:TaxInclusiveAmount currencyID="EUR">297.50</cbc:TaxInclusiveAmount>
<cbc:PayableAmount currencyID="EUR">297.50</cbc:PayableAmount>
</cac:LegalMonetaryTotal>
What the validator checks
Checked element (context):
UBL
cac:LegalMonetaryTotalTest (XPath):
(xs:decimal(cbc:LineExtensionAmount) = xs:decimal(round(sum(//(cac:InvoiceLine|cac:CreditNoteLine)/xs:decimal(cbc:LineExtensionAmount)) * 10 * 10) div 100))CII
//ram:SpecifiedTradeSettlementHeaderMonetarySummationTest (XPath):
xs:decimal(ram:LineTotalAmount) = round(xs:decimal(sum(../../ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:SpecifiedTradeSettlementLineMonetarySummation/ram:LineTotalAmount)) * xs:decimal(100)) div xs:decimal(100)
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-CO-13Total without VAT (BT-109) does not add upBR-12An Invoice shall have the Sum of Invoice line net amountBR-24Each Invoice line shall have an Invoice line net amountBR-AE-08In a VAT breakdown where the VAT category code is "Reverse charge" the VAT category…BR-AF-08For each different value of VAT category rate where the VAT category code is "IGIC",…BR-AG-08For each different value of VAT category rate where the VAT category code is "IPSI",…BR-DEC-09The allowed maximum number of decimals for the Sum of Invoice line net amount is 2BR-DEC-23Invoice line net amount (BT-131) has more than 2 decimals
Frequently asked questions
What does BR-CO-10 mean?
BR-CO-10 is a en 16931 core rule: Sum of Invoice line net amount (BT-106) = Σ Invoice line net amount (BT-131).
Will my invoice be rejected because of BR-CO-10?
Yes. BR-CO-10 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-CO-10 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.