Skip to content

BR-32: Document level allowance VAT category code (BT-95) is missing

Official message

[BR-32] Each Document level allowance (BG-20) shall have a Document level allowance VAT category code (BT-95).

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

[BR-32] Each Document level allowance (BG-20) shall have a Document level allowance VAT category code (BT-95).

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

[BR-32] Each Document level allowance (BG-20) shall have a Document level allowance VAT category code (BT-95).

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
BG-20, BT-95

What does this mean?

Every document level allowance (BG-20) must contain the VAT category code (Document level allowance VAT category code, BT-95) so that it can be assigned to the right VAT group. It is missing for at least one allowance.

Typical causes

The allowance was output without tax details.
The tax details exist but are not marked as VAT (TypeCode or TaxScheme not VAT).

How to fix the error

State the VAT category for every allowance, e.g. S (standard rate), Z (zero rated), E (exempt), AE (reverse charge); for category S also the rate.
The category must match a group of the VAT breakdown (BG-23).
CII: ram:SpecifiedTradeAllowanceCharge/ram:CategoryTradeTax with ram:TypeCode VAT and ram:CategoryCode, UBL: cac:AllowanceCharge/cac:TaxCategory/cbc:ID with cac:TaxScheme/cbc:ID VAT.
Generate and validate the invoice again.

In E-Rechnungsfreund

In the invoice form ("Experte" view), section "Zu-/Abschläge auf Dokumentenebene (BG-20/BG-21)" (document level allowances and charges), select the VAT category in the field "St-Kat." for every entry of type "Abschlag (BG-20)" (allowance) and check the rate in the field "St-Satz %".

Example

Wrong

<ram:SpecifiedTradeAllowanceCharge>
  <ram:ChargeIndicator>
    <udt:Indicator>false</udt:Indicator>
  </ram:ChargeIndicator>
  <ram:ActualAmount>25.00</ram:ActualAmount>
  <ram:Reason>Loyalty discount</ram:Reason>
</ram:SpecifiedTradeAllowanceCharge>

Correct

<ram:SpecifiedTradeAllowanceCharge>
  <ram:ChargeIndicator>
    <udt:Indicator>false</udt:Indicator>
  </ram:ChargeIndicator>
  <ram:ActualAmount>25.00</ram:ActualAmount>
  <ram:Reason>Loyalty discount</ram:Reason>
  <ram:CategoryTradeTax>
    <ram:TypeCode>VAT</ram:TypeCode>
    <ram:CategoryCode>S</ram:CategoryCode>
    <ram:RateApplicablePercent>19.00</ram:RateApplicablePercent>
  </ram:CategoryTradeTax>
</ram:SpecifiedTradeAllowanceCharge>
For developers: test expression per syntax

EN 16931 (CII) (CII)

Context: //ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:ChargeIndicator[udt:Indicator='false']

(../ram:CategoryTradeTax[upper-case(ram:TypeCode) = 'VAT']/ram:CategoryCode)

EN 16931 (UBL) (UBL)

Context: /ubl:Invoice/cac:AllowanceCharge[cbc:ChargeIndicator = false()] | /cn:CreditNote/cac:AllowanceCharge[cbc:ChargeIndicator = false()]

exists(cac:TaxCategory[cac:TaxScheme/normalize-space(upper-case(cbc:ID))='VAT']/cbc:ID)

Factur-X / ZUGFeRD EN 16931 (CII)

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

Context: //ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:ChargeIndicator[udt:Indicator='false']

(../ram:CategoryTradeTax[upper-case(ram:TypeCode) = 'VAT']/ram:CategoryCode)

Related validation rules

  • BR-01: Specification identifier (BT-24) is missing
  • BR-02: Invoice number (BT-1) is missing
  • BR-03: Invoice issue date (BT-2) is missing
  • BR-04: Invoice type code (BT-3) is missing
  • BR-05: Invoice currency code (BT-5) is missing
  • BR-06: Seller name (BT-27) is missing

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