Skip to content

BR-AG-09: Tax amount of category M (BT-117) does not match taxable amount and rate

Official message

[BR-AG-09] The VAT category tax amount (BT-117) in a VAT breakdown (BG-23) where VAT category code (BT-118) is "IPSI" shall equal the VAT category taxable amount (BT-116) multiplied by the VAT category rate (BT-119).

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

[BR-AG-09] The VAT category tax amount (BT-117) in a VAT breakdown (BG-23) where VAT category code (BT-118) is "IPSI" shall equal the VAT category taxable amount (BT-116) multiplied by the VAT category rate (BT-119).

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

[BR-AG-09] The VAT category tax amount (BT-117) in a VAT breakdown (BG-23) where VAT category code (BT-118) is "IPSI" shall equal the VAT category taxable amount (BT-116) multiplied by the VAT category rate (BT-119).

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-117, BG-23, BT-118, BT-116, BT-119

What does this mean?

In a VAT breakdown (BG-23) with category M (IPSI, tax for production, services and importation in Ceuta and Melilla) the VAT category tax amount (BT-117) must equal the taxable amount (BT-116) multiplied by the rate (BT-119): BT-117 = BT-116 × BT-119 / 100. The amount deviates from it.
Only the UBL check recalculates (amounts without sign, deviation of less than one currency unit tolerated); in the official CII checks for EN 16931 and Factur-X the rule is always fulfilled.

Typical causes

The tax amount was calculated with a different rate than the one stated in BT-119.
The taxable amount (BT-116) was changed without recalculating the tax amount.
The decimal point was shifted in the calculation, e.g. rate 1.9 instead of 19.

How to fix the error

Calculate BT-117 per breakdown as BT-116 × BT-119 / 100 and round it to two decimals.
Then recalculate the invoice total VAT amount (BT-110) (BR-CO-14).
CII: ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:CalculatedAmount, UBL: cac:TaxTotal/cac:TaxSubtotal/cbc:TaxAmount.

In E-Rechnungsfreund

In the invoice form, the tax amount per VAT category (BT-117) is calculated from taxable amount and rate when the XML is generated, and rounded to two decimals; the value in the field "Steuerbetrag (BT-117)" in section "Steueraufstellung (BG-23)" (VAT breakdown) is not used for this. Generate and validate the invoice again.

Example

Wrong

<ram:ApplicableTradeTax>
  <ram:CalculatedAmount>10.00</ram:CalculatedAmount>
  <ram:TypeCode>VAT</ram:TypeCode>
  <ram:BasisAmount>1000.00</ram:BasisAmount>
  <ram:CategoryCode>M</ram:CategoryCode>
  <ram:RateApplicablePercent>10.00</ram:RateApplicablePercent>
</ram:ApplicableTradeTax>

Correct

<ram:ApplicableTradeTax>
  <ram:CalculatedAmount>100.00</ram:CalculatedAmount>
  <ram:TypeCode>VAT</ram:TypeCode>
  <ram:BasisAmount>1000.00</ram:BasisAmount>
  <ram:CategoryCode>M</ram:CategoryCode>
  <ram:RateApplicablePercent>10.00</ram:RateApplicablePercent>
</ram:ApplicableTradeTax>
For developers: test expression per syntax

EN 16931 (CII) (CII)

Context: //rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode = 'M'][upper-case(ram:TypeCode) = 'VAT']

true()

EN 16931 (UBL) (UBL)

Context: /*/cac:TaxTotal/cac:TaxSubtotal/cac:TaxCategory[normalize-space(cbc:ID) = 'M'][cac:TaxScheme/normalize-space(upper-case(cbc:ID))='VAT']

(abs(xs:decimal(../cbc:TaxAmount)) - 1 < round((abs(xs:decimal(../cbc:TaxableAmount)) * (xs:decimal(cbc:Percent) div 100)) * 10 * 10) div 100 ) and (abs(xs:decimal(../cbc:TaxAmount)) + 1 > round((abs(xs:decimal(../cbc:TaxableAmount)) * (xs:decimal(cbc:Percent) div 100)) * 10 * 10) div 100 )

Factur-X / ZUGFeRD EN 16931 (CII)

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

Context: //rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode = 'M']

true()

Related validation rules

  • BR-AG-01: VAT breakdown for category M is missing
  • BR-AG-02: Seller VAT or tax registration identifier missing for invoice line with category M
  • BR-AG-03: Seller VAT or tax registration identifier missing for document level allowance with category M
  • BR-AG-04: Seller VAT or tax registration identifier missing for document level charge with category M
  • BR-AG-05: VAT rate of invoice line with category M (IPSI) is missing or negative
  • BR-AG-06: VAT rate of document level allowance with category M (IPSI) is missing or negative

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