BT-109Invoice total amount without VATBT-110Invoice total VAT amountBT-112Invoice total amount with VAT
Official rule text
[BR-CO-15] Invoice total amount with VAT (BT-112) = Invoice total amount without VAT (BT-109) + Invoice total VAT amount (BT-110).
Why this error occurs
The invoice total amount with VAT (BT-112) must equal the total without VAT (BT-109) plus the total VAT amount (BT-110). The rule additionally requires exactly one VAT total in the document currency: in UBL one cac:TaxTotal/cbc:TaxAmount whose currencyID equals cbc:DocumentCurrencyCode, in CII one ram:TaxTotalAmount with currencyID equal to ram:InvoiceCurrencyCode. It fails on rounding differences, on a missing currencyID on the tax amount, or when two TaxTotal elements both use the document currency.
How to fix it
Formula: BT-112 = BT-109 + BT-110, rounded to 2 decimals. In UBL write cac:LegalMonetaryTotal/cbc:TaxInclusiveAmount = cbc:TaxExclusiveAmount + cac:TaxTotal/cbc:TaxAmount[@currencyID = document currency]; in CII ram:GrandTotalAmount = ram:TaxBasisTotalAmount + ram:TaxTotalAmount[@currencyID = invoice currency]. Every tax amount needs the currencyID attribute. Keep exactly one tax total in document currency; a second one is only allowed in the VAT accounting currency (BT-111).
Example (valid)
<cac:LegalMonetaryTotal>
<cbc:LineExtensionAmount currencyID="EUR">200.00</cbc:LineExtensionAmount>
<cbc:TaxExclusiveAmount currencyID="EUR">200.00</cbc:TaxExclusiveAmount>
<cbc:TaxInclusiveAmount currencyID="EUR">238.00</cbc:TaxInclusiveAmount>
<cbc:PayableAmount currencyID="EUR">238.00</cbc:PayableAmount>
</cac:LegalMonetaryTotal>
What the validator checks
Checked element (context):
UBL
/ubl:Invoice | /cn:CreditNoteTest (XPath):
every $Currency in cbc:DocumentCurrencyCode satisfies (count(cac:TaxTotal/xs:decimal(cbc:TaxAmount[@currencyID=$Currency])) eq 1) and (cac:LegalMonetaryTotal/xs:decimal(cbc:TaxInclusiveAmount) = round( (cac:LegalMonetaryTotal/xs:decimal(cbc:TaxExclusiveAmount) + cac:TaxTotal/xs:decimal(cbc:TaxAmount[@currencyID=$Currency])) * 10 * 10) div 100)CII
/rsm:CrossIndustryInvoiceTest (XPath):
every $Currency in rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceCurrencyCode satisfies ( count ( rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementHeaderMonetarySummation/ram:TaxTotalAmount[@currencyID=$Currency] ) eq 1 and (//ram:SpecifiedTradeSettlementHeaderMonetarySummation/xs:decimal(ram:GrandTotalAmount) = round( (//ram:SpecifiedTradeSettlementHeaderMonetarySummation/xs:decimal(ram:TaxBasisTotalAmount) + (//ram:SpecifiedTradeSettlementHeaderMonetarySummation/xs:decimal(ram:TaxTotalAmount[@currencyID=$Currency]))) * 10 * 10) div 100)) or (//ram:SpecifiedTradeSettlementHeaderMonetarySummation/xs:decimal(ram:GrandTotalAmount) = (//ram:SpecifiedTradeSettlementHeaderMonetarySummation/xs:decimal(ram:TaxBasisTotalAmount)))
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-CO-14Total VAT amount (BT-110) does not match the VAT breakdownBR-CO-16Amount due for payment (BT-115) does not add upBR-13An Invoice shall have the Invoice total amount without VATBR-14An Invoice shall have the Invoice total amount with VATBR-DEC-12The allowed maximum number of decimals for the Invoice total amount without VAT is 2BR-DEC-13The allowed maximum number of decimals for the Invoice total VAT amount is 2BR-DEC-14The allowed maximum number of decimals for the Invoice total amount with VAT is 2
Frequently asked questions
What does BR-CO-15 mean?
BR-CO-15 is a en 16931 core rule: Invoice total amount with VAT (BT-112) = Invoice total amount without VAT (BT-109) + Invoice total VAT amount (BT-110).
Will my invoice be rejected because of BR-CO-15?
Yes. BR-CO-15 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-15 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.