Error codes

BR-CO-14: Invoice total VAT amount (BT-110)

Severity: fatal · Syntax: CII, UBL

Official message

Invoice total VAT amount (BT-110) = Σ VAT category tax amount (BT-117).

What this means

BT-110 must equal the sum of VAT category tax amounts BT-117. The UBL assertion compares TaxTotal/TaxAmount with the sum of TaxSubtotal/TaxAmount, rounded to two decimal places. If there are no TaxSubtotal elements, the second branch of the assertion applies (not(cac:TaxSubtotal)). Official text: Invoice total VAT amount (BT-110) = Σ VAT category tax amount (BT-117).

Typical cause

The header tax amount was entered by hand and differs from the sum of the breakdown.

How to fix it

Calculate the named BT fields in the same currency and set the header amounts to the result of the assertion. The check helps you find the difference.

UBL

<cac:TaxTotal>
  <cbc:TaxAmount currencyID="EUR">19.00</cbc:TaxAmount>
</cac:TaxTotal>

CII

<ram:TaxTotalAmount currencyID="EUR">19.00</ram:TaxTotalAmount>

Business term

BT-110, BT-117

Related rules

Context and assertion

UBL /ubl:Invoice/cac:TaxTotal | /cn:CreditNote/cac:TaxTotal

CII //ram:SpecifiedTradeSettlementHeaderMonetarySummation/ram:TaxTotalAmount[@currencyID=/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceCurrencyCode]

UBL

(xs:decimal(child::cbc:TaxAmount)= round((sum(cac:TaxSubtotal/xs:decimal(cbc:TaxAmount)) * 10 * 10)) div 100) or not(cac:TaxSubtotal)

CII

. = (round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:CalculatedAmount)*10*10)div 100)

Check a file now, free of charge

curl -F "file=@rechnung.xml" https://checkxrechnung.com/v1/validate

Questions

What does BR-CO-14 actually check?

BT-110 must equal the sum of VAT category tax amounts BT-117. The UBL assertion compares TaxTotal/TaxAmount with the sum of TaxSubtotal/TaxAmount, rounded to two decimal places. If there are no TaxSubtotal elements, the second branch of the assertion applies (not(cac:TaxSubtotal)). Official text: Invoice total VAT amount (BT-110) = Σ VAT category tax amount (BT-117).

How do I fix BR-CO-14?

Calculate the named BT fields in the same currency and set the header amounts to the result of the assertion. The check helps you find the difference.

If BR-CO-14 passes, is the invoice legally compliant?

No. This page helps you read this one Schematron assertion. A pass is not a statement about tax law, portal acceptance, or bank overlays.