einvoiceconverter.come-invoice error codes

BR-CO-16

The amount due for payment (BT-115) does not equal total with VAT minus prepaid amount plus rounding amount.

ErrorEN 16931UBLCII

Why it happens

A deposit or part payment (BT-113) was deducted from the amount due without being declared, or a cash-rounding adjustment was applied without populating BT-114.

How to fix it

BT-115 must equal BT-112 − BT-113 + BT-114. In UBL these are PayableAmount, PrepaidAmount and PayableRoundingAmount inside cac:LegalMonetaryTotal. If nothing was prepaid, omit BT-113 rather than sending zero and adjusting elsewhere.

The official rule

EN 16931, EnglishAmount due for payment (BT-115) = Invoice total amount with VAT (BT-112) -Paid amount (BT-113) +Rounding amount (BT-114).
Technical detail — where the rule is evaluated and the exact test
SyntaxContext and assertion
UBLcac:LegalMonetaryTotal
(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//ram:SpecifiedTradeSettlementHeaderMonetarySummation
(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))

Check your own invoice

Paste or drop your UBL or CII file into the free validator. It runs the official EN 16931 ruleset plus the German XRechnung layer and lists every rule that fires, BR-CO-16 included — no signup, no limit.

Validate an e-invoice free

Fixing the data at source instead? The CSV converter builds a compliant invoice from a spreadsheet export.

Other EN 16931 — calculations and conditions rules