Skip to content

BR-31: Document level allowance amount (BT-92) is missing

Official message

[BR-31] Each Document level allowance (BG-20) shall have a Document level allowance amount (BT-92).

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

[BR-31] Each Document level allowance (BG-20) shall have a Document level allowance amount (BT-92).

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

[BR-31] Each Document level allowance (BG-20) shall have a Document level allowance amount (BT-92).

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-92

What does this mean?

Every document level allowance (BG-20) must contain an amount (Document level allowance amount, BT-92). The element is missing for at least one allowance.

Typical causes

The allowance was only given as a percentage (BT-94), without the amount calculated from it.
An empty allowance without amount was output.

How to fix the error

State the amount without VAT for every allowance, with at most two decimals. For percentage allowances additionally state the base amount (BT-93) and the percentage (BT-94); the amount is base amount × percentage / 100.
CII: ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge (ChargeIndicator false)/ram:ActualAmount, UBL: cac:AllowanceCharge (cbc:ChargeIndicator false)/cbc:Amount.
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), fill in the field "Betrag" (amount) for every entry of type "Abschlag (BG-20)" (allowance).

Example

Wrong

<ram:SpecifiedTradeAllowanceCharge>
  <ram:ChargeIndicator>
    <udt:Indicator>false</udt:Indicator>
  </ram:ChargeIndicator>
  <ram:CalculationPercent>5.00</ram:CalculationPercent>
  <ram:BasisAmount>500.00</ram:BasisAmount>
  <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>

Correct

<ram:SpecifiedTradeAllowanceCharge>
  <ram:ChargeIndicator>
    <udt:Indicator>false</udt:Indicator>
  </ram:ChargeIndicator>
  <ram:CalculationPercent>5.00</ram:CalculationPercent>
  <ram:BasisAmount>500.00</ram:BasisAmount>
  <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:ActualAmount)

EN 16931 (UBL) (UBL)

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

exists(cbc:Amount)

Factur-X / ZUGFeRD EN 16931 (CII)

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

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

(../ram:ActualAmount)

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.