robin.vision Appointment

SmartFormular

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

BR-CO-16

The amount due (BT-115) is not the total with VAT (BT-112) minus paid amount (BT-113) plus rounding (BT-114)

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

What the message means

The amount due (BT-115) is not the total with VAT (BT-112) minus paid amount (BT-113) plus rounding (BT-114).

What the issuer needs to change

Recalculate the amount due.

Fields concerned

Your invoice reports BR-CO-16? 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

Amount due for payment (BT-115) = Invoice total amount with VAT (BT-112) -Paid amount (BT-113) +Rounding amount (BT-114).

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

Technical details for IT

UBL

Context: cac:LegalMonetaryTotal
Test: not((exists(cbc:PrepaidAmount) and not(exists(cbc:PayableRoundingAmount)) and (xs:decimal(cbc:PayableAmount) = (round((xs:decimal(cbc:TaxInclusiveAmount) - xs:decimal(cbc:PrepaidAmount)) * 10 * 10) div 100))) or (not(exists(cbc:PrepaidAmount)) and not(exists(cbc:PayableRoundingAmount)) and xs:decimal(cbc:PayableAmount) = xs:decimal(cbc:TaxInclusiveAmount)) or (exists(cbc:PrepaidAmount) and exists(cbc:PayableRoundingAmount) and ((round((xs:decimal(cbc:PayableAmount) - xs:decimal(cbc:PayableRoundingAmount)) * 10 * 10) div 100) = (round((xs:decimal(cbc:TaxInclusiveAmount) - xs:decimal(cbc:PrepaidAmount)) * 10 * 10) div 100))) or  (not(exists(cbc:PrepaidAmount)) and exists(cbc:PayableRoundingAmount) and ((round((xs:decimal(cbc:PayableAmount) - xs:decimal(cbc:PayableRoundingAmount)) * 10 * 10) div 100) = xs:decimal(cbc:TaxInclusiveAmount))))

CII

Context: //ram:SpecifiedTradeSettlementHeaderMonetarySummation
Test: not((xs:decimal(ram:DuePayableAmount[1]) = xs:decimal(ram:GrandTotalAmount[1]) - xs:decimal(ram:TotalPrepaidAmount[1]) + xs:decimal(ram:RoundingAmount[1]))     or ((xs:decimal(ram:DuePayableAmount[1]) = xs:decimal(ram:GrandTotalAmount[1]) + xs:decimal(ram:RoundingAmount[1])) and not(ram:TotalPrepaidAmount))     or ((xs:decimal(ram:DuePayableAmount[1]) = xs:decimal(ram:GrandTotalAmount[1]) - xs:decimal(ram:TotalPrepaidAmount[1])) and not(ram:RoundingAmount))     or ((xs:decimal(ram:DuePayableAmount[1]) = xs:decimal(ram:GrandTotalAmount[1])) and not(ram:TotalPrepaidAmount) and not(ram:RoundingAmount)))

Related rules

All validation rules

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