Skip to content

BR-CO-16: Amount due for payment (BT-115) does not match

Official message

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

EN 16931 (CII) · Error · Message language: English · Version: xrechnung-3.0.2-validator-configuration-2026-08-31

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

EN 16931 (UBL) · Error · Message language: English · Version: xrechnung-3.0.2-validator-configuration-2026-08-31

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

Factur-X / ZUGFeRD EN 16931 · Error · Message language: English · Version: Factur-X 1.08 / ZUGFeRD 2.4
Severity
Error The invoice is invalid and may be rejected by the recipient.
Applies to
EN 16931 (CII), EN 16931 (UBL), Factur-X / ZUGFeRD EN 16931
Affected fields
BT-115, BT-112, BT-113, BT-114

What does this mean?

The amount due for payment (BT-115) shall equal the invoice total amount with VAT (BT-112) minus the paid amount (BT-113) plus the rounding amount (BT-114). The value in BT-115 deviates from it.
Checked: BT-115 = BT-112 − BT-113 + BT-114; if BT-113 or BT-114 is missing, it counts as 0. In CII no rounding is applied, the value must match exactly. Example: 399.25 − 100.00 + 0.00 = 299.25.

Typical causes

A prepayment or partial payment was subtracted in BT-115 but not stated as paid amount (BT-113), or vice versa.
The amount due was rounded without stating the difference as rounding amount (BT-114), or BT-114 has the wrong sign.
Something that is not part of the formula was subtracted from the amount due, e.g. a cash discount.
BT-112, BT-113 or BT-114 was changed without recalculating BT-115.

How to fix the error

Calculate BT-115 as BT-112 − BT-113 + BT-114.
If the payable amount is rounded, state the difference with sign in BT-114, e.g. 399.25 rounded to 399.00: BT-114 = −0.25.
CII: ram:SpecifiedTradeSettlementHeaderMonetarySummation/ram:DuePayableAmount, UBL: cac:LegalMonetaryTotal/cbc:PayableAmount.
Generate and validate the invoice again.

In E-Rechnungsfreund

In the invoice form, BT-115 is calculated from BT-112 and the fields "Bereits gezahlt (BT-113)" (already paid) and "Rundungsbetrag (BT-114)" (rounding amount) in section "Belegsummen (BG-22)" (document totals) when the XML is generated; the value in the field "Fälliger Betrag (BT-115)" is not used for this. Check both fields and validate the invoice again.

Example

Wrong

<ram:SpecifiedTradeSettlementHeaderMonetarySummation>
  ...
  <ram:GrandTotalAmount>399.25</ram:GrandTotalAmount>
  <ram:TotalPrepaidAmount>100.00</ram:TotalPrepaidAmount>
  <ram:DuePayableAmount>399.25</ram:DuePayableAmount>
</ram:SpecifiedTradeSettlementHeaderMonetarySummation>

Correct

<ram:SpecifiedTradeSettlementHeaderMonetarySummation>
  ...
  <ram:GrandTotalAmount>399.25</ram:GrandTotalAmount>
  <ram:TotalPrepaidAmount>100.00</ram:TotalPrepaidAmount>
  <ram:DuePayableAmount>299.25</ram:DuePayableAmount>
</ram:SpecifiedTradeSettlementHeaderMonetarySummation>
For developers: test expression per syntax

EN 16931 (CII) (CII)

Context: //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))

EN 16931 (UBL) (UBL)

Context: cac: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)))

Factur-X / ZUGFeRD EN 16931 (CII)

Technical ID in the source: FX-SCH-A-000122

Context: //ram:SpecifiedTradeSettlementHeaderMonetarySummation

(xs:decimal(ram:DuePayableAmount) = xs:decimal(ram:GrandTotalAmount) - xs:decimal(ram:TotalPrepaidAmount) + xs:decimal(ram:RoundingAmount)) or ((xs:decimal(ram:DuePayableAmount) = xs:decimal(ram:GrandTotalAmount) + xs:decimal(ram:RoundingAmount)) and not (xs:decimal(ram:TotalPrepaidAmount))) or ((xs:decimal(ram:DuePayableAmount) = xs:decimal(ram:GrandTotalAmount) - xs:decimal(ram:TotalPrepaidAmount)) and not (xs:decimal(ram:RoundingAmount))) or ((xs:decimal(ram:DuePayableAmount) = xs:decimal(ram:GrandTotalAmount)) and not (xs:decimal(ram:TotalPrepaidAmount)) and not (xs:decimal(ram:RoundingAmount)))

Related validation rules

  • BR-CO-03: Value added tax point date (BT-7) and tax point date code (BT-8) are mutually exclusive
  • BR-CO-04: Invoiced item VAT category code (BT-151) is missing
  • BR-CO-05: Document level allowance reason code (BT-98) and allowance reason (BT-97) must indicate the same type
  • BR-CO-06: Document level charge reason code (BT-105) and charge reason (BT-104) must indicate the same type
  • BR-CO-07: Invoice line allowance reason code (BT-140) and allowance reason (BT-139) must indicate the same type
  • BR-CO-08: Invoice line charge reason code (BT-145) and charge reason (BT-144) must indicate the same type

Last updated:
Explanation of the validation rule, not legal or tax advice.