robin.vision Appointment

SmartFormular

Tools › SmartFormular E-Rechnung lite › Validation rules › BR-CO-15

BR-CO-15

The total with VAT (BT-112) is not the net total (BT-109) plus VAT (BT-110)

Validation rule of EN 16931 (CEN, rule set 1.3.16) · Level: Error

What the message means

The total with VAT (BT-112) is not the net total (BT-109) plus VAT (BT-110).

What the issuer needs to change

Recalculate the gross total.

Fields concerned

Your invoice reports BR-CO-15? Check it with SmartFormular E-Rechnung lite, free to try until 31 December 2026: the tool shows every finding with an explanation, the invoice in readable form and a GiroCode to pay – in your browser, no upload.

Check an e-invoice

Origin

Rule set
EN 16931 (CEN, rule set 1.3.16)
Syntax
CII, UBL
Level
Error

Original rule text

Invoice total amount with VAT (BT-112) = Invoice total amount without VAT (BT-109) + Invoice total VAT amount (BT-110).

Source: CEN/TC 434, EN 16931 validation rules 1.3.16, European Union Public Licence 1.2

Technical details for IT

UBL

Context: /ubl:Invoice | /cn:CreditNote
Test: not(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

Context: /rsm:CrossIndustryInvoice
Test: not( every $Currency in /rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceCurrencyCode     satisfies     (     (     count(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementHeaderMonetarySummation/ram:TaxTotalAmount[@currencyID = $Currency]) = 1     and     xs:decimal((/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementHeaderMonetarySummation/ram:GrandTotalAmount)[1])     =     round(     (     xs:decimal((/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementHeaderMonetarySummation/ram:TaxBasisTotalAmount)[1])     +     xs:decimal((/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementHeaderMonetarySummation/ram:TaxTotalAmount[@currencyID = $Currency])[1])     ) * 100     ) div 100     )     or     (     xs:decimal((/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementHeaderMonetarySummation/ram:GrandTotalAmount)[1])     =     xs:decimal((/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementHeaderMonetarySummation/ram:TaxBasisTotalAmount)[1])     )     )     )

Related rules

All validation rules

Technical explanation by robin.vision, not tax or legal advice. Rules as of 31 August 2026 (KoSIT validator configuration).