Skip to content

BR-CO-13: Invoice total amount without VAT (BT-109) does not match

Official message

[BR-CO-13] Invoice total amount without VAT (BT-109) = Σ Invoice line net amount (BT-131) - Sum of allowances on document level (BT-107) + Sum of charges on document level (BT-108).

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

[BR-CO-13] Invoice total amount without VAT (BT-109) = Σ Invoice line net amount (BT-131) - Sum of allowances on document level (BT-107) + Sum of charges on document level (BT-108).

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

[BR-CO-13] Invoice total amount without VAT (BT-109) = Σ Invoice line net amount (BT-131) - Sum of allowances on document level (BT-107) + Sum of charges on document level (BT-108).

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-109, BT-131, BT-107, BT-108

What does this mean?

The invoice total amount without VAT (BT-109) shall equal the sum of invoice line net amounts minus the allowances and plus the charges on document level. The value in BT-109 deviates from it.
Checked: BT-109 = BT-106 − BT-107 + BT-108, rounded to two decimals; if BT-107 or BT-108 is missing, it counts as 0. Example: 350.50 − 35.00 + 20.00 = 335.50.

Typical causes

BT-109 already contains VAT; it is a net amount, however.
Document level allowances were not subtracted or charges were not added.
Invoice line allowances or charges were subtracted again although they are already contained in BT-131 and thus in BT-106.
One of the totals BT-106, BT-107 or BT-108 was changed without recalculating BT-109.

How to fix the error

Calculate BT-109 as BT-106 − BT-107 + BT-108 and round it to two decimals.
First check that BT-106, BT-107 and BT-108 are correct themselves (BR-CO-10, BR-CO-11, BR-CO-12).
Recalculate the invoice total amount with VAT (BT-112) and the amount due for payment (BT-115).
CII: ram:SpecifiedTradeSettlementHeaderMonetarySummation/ram:TaxBasisTotalAmount, UBL: cac:LegalMonetaryTotal/cbc:TaxExclusiveAmount.

In E-Rechnungsfreund

In the invoice form, BT-109 is calculated from the invoice lines and the allowances and charges when the XML is generated, and rounded to two decimals; the value in the field "Steuerbasis gesamt (BT-109)" in section "Belegsummen (BG-22)" (document totals) is not used for this. Check the lines and the allowances and charges and validate the invoice again.

Example

Wrong

<ram:SpecifiedTradeSettlementHeaderMonetarySummation>
  <ram:LineTotalAmount>350.50</ram:LineTotalAmount>
  <ram:ChargeTotalAmount>20.00</ram:ChargeTotalAmount>
  <ram:AllowanceTotalAmount>35.00</ram:AllowanceTotalAmount>
  <ram:TaxBasisTotalAmount>315.50</ram:TaxBasisTotalAmount>
  ...
</ram:SpecifiedTradeSettlementHeaderMonetarySummation>

Correct

<ram:SpecifiedTradeSettlementHeaderMonetarySummation>
  <ram:LineTotalAmount>350.50</ram:LineTotalAmount>
  <ram:ChargeTotalAmount>20.00</ram:ChargeTotalAmount>
  <ram:AllowanceTotalAmount>35.00</ram:AllowanceTotalAmount>
  <ram:TaxBasisTotalAmount>335.50</ram:TaxBasisTotalAmount>
  ...
</ram:SpecifiedTradeSettlementHeaderMonetarySummation>
For developers: test expression per syntax

EN 16931 (CII) (CII)

Context: //ram:SpecifiedTradeSettlementHeaderMonetarySummation

(xs:decimal(ram:TaxBasisTotalAmount[1]) = round((xs:decimal(ram:LineTotalAmount[1]) - xs:decimal(ram:AllowanceTotalAmount[1]) + xs:decimal(ram:ChargeTotalAmount[1])) * 10 * 10) div 100) or ((xs:decimal(ram:TaxBasisTotalAmount[1]) = round((xs:decimal(ram:LineTotalAmount[1]) - xs:decimal(ram:AllowanceTotalAmount[1])) * 10 * 10) div 100) and not(ram:ChargeTotalAmount)) or ((xs:decimal(ram:TaxBasisTotalAmount[1]) = round((xs:decimal(ram:LineTotalAmount[1]) + xs:decimal(ram:ChargeTotalAmount[1])) * 10 * 10) div 100) and not(ram:AllowanceTotalAmount)) or ((xs:decimal(ram:TaxBasisTotalAmount[1]) = round((xs:decimal(ram:LineTotalAmount[1])) * 10 * 10) div 100) and not(ram:ChargeTotalAmount) and not(ram:AllowanceTotalAmount))

EN 16931 (UBL) (UBL)

Context: cac:LegalMonetaryTotal

((cbc:ChargeTotalAmount) and (cbc:AllowanceTotalAmount) and (xs:decimal(cbc:TaxExclusiveAmount) = round((xs:decimal(cbc:LineExtensionAmount) + xs:decimal(cbc:ChargeTotalAmount) - xs:decimal(cbc:AllowanceTotalAmount)) * 10 * 10) div 100 )) or (not(cbc:ChargeTotalAmount) and (cbc:AllowanceTotalAmount) and (xs:decimal(cbc:TaxExclusiveAmount) = round((xs:decimal(cbc:LineExtensionAmount) - xs:decimal(cbc:AllowanceTotalAmount)) * 10 * 10 ) div 100)) or ((cbc:ChargeTotalAmount) and not(cbc:AllowanceTotalAmount) and (xs:decimal(cbc:TaxExclusiveAmount) = round((xs:decimal(cbc:LineExtensionAmount) + xs:decimal(cbc:ChargeTotalAmount)) * 10 * 10 ) div 100)) or (not(cbc:ChargeTotalAmount) and not(cbc:AllowanceTotalAmount) and (xs:decimal(cbc:TaxExclusiveAmount) = xs:decimal(cbc:LineExtensionAmount)))

Factur-X / ZUGFeRD EN 16931 (CII)

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

Context: //ram:SpecifiedTradeSettlementHeaderMonetarySummation

(xs:decimal(ram:TaxBasisTotalAmount) = round((xs:decimal(ram:LineTotalAmount) - xs:decimal(ram:AllowanceTotalAmount) + xs:decimal(ram:ChargeTotalAmount)) *10 * 10) div 100) or ((xs:decimal(ram:TaxBasisTotalAmount) = round((xs:decimal(ram:LineTotalAmount) - xs:decimal(ram:AllowanceTotalAmount)) *10 * 10) div 100) and not (ram:ChargeTotalAmount)) or ((xs:decimal(ram:TaxBasisTotalAmount) = round((xs:decimal(ram:LineTotalAmount) + xs:decimal(ram:ChargeTotalAmount)) *10 * 10) div 100) and not (ram:AllowanceTotalAmount)) or ((xs:decimal(ram:TaxBasisTotalAmount) = round((xs:decimal(ram:LineTotalAmount)) *10 * 10) div 100) and not (ram:ChargeTotalAmount) and not (ram:AllowanceTotalAmount))

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.