Skip to content

BR-O-13: Category O: allowance with another category not allowed

Official message

[BR-O-13] An Invoice that contains a VAT breakdown group (BG-23) with a VAT category code (BT-118) "Not subject to VAT" shall not contain Document level allowances (BG-20) where Document level allowance VAT category code (BT-95) is not "Not subject to VAT".

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

[BR-O-13] An Invoice that contains a VAT breakdown group (BG-23) with a VAT category code (BT-118) "Not subject to VAT" shall not contain Document level allowances (BG-20) where Document level allowance VAT category code (BT-95) is not "Not subject to VAT".

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

[BR-O-13] An Invoice that contains a VAT breakdown group (BG-23) with a VAT category code (BT-118) "Not subject to VAT" shall not contain Document level allowances (BG-20) where Document level allowance VAT category code (BT-95) is not "Not subject to VAT".

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

What does this mean?

If the invoice contains a VAT breakdown (BG-23) with category O (Not subject to VAT), it must not contain document level allowances (BG-20) whose category (BT-95) is not O. An invoice not subject to VAT may only contain information of category O.
In CII the rule checks the same as BR-O-14 and fails for allowances and charges with another category. In UBL only allowances are checked.

Typical causes

Supplies not subject to VAT and taxable or exempt supplies were invoiced in one invoice.
A line or allowance/charge still has the default category S.

How to fix the error

Check whether all lines and allowances/charges are not subject to VAT; if so, use category O everywhere.
Otherwise invoice the supplies of category O and the other supplies in separate invoices.
CII: ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax, UBL: cac:TaxTotal/cac:TaxSubtotal/cac:TaxCategory.

In E-Rechnungsfreund

In the invoice form, the VAT breakdown (BG-23) is built from the VAT categories of the lines and allowances/charges when the XML is generated. Check the field "Steuerkategorie (BT-151)" (VAT category) in section "Rechnungspositionen (BG-25)" (invoice lines, "Experte" view) and the field "St-Kat." in section "Zu-/Abschläge auf Dokumentenebene (BG-20/BG-21)" (document level allowances and charges, "Experte" view); remove entries of other categories in section "Steueraufstellung (BG-23)" (VAT breakdown). In the simple view ("Einfach") lines without a category get category S.

Example

Wrong

<ram:SpecifiedTradeAllowanceCharge>
  <ram:ChargeIndicator>
    <udt:Indicator>false</udt:Indicator>
  </ram:ChargeIndicator>
  <ram:ActualAmount>50.00</ram:ActualAmount>
  <ram:Reason>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>
<ram:ApplicableTradeTax>
  <ram:CalculatedAmount>0.00</ram:CalculatedAmount>
  <ram:TypeCode>VAT</ram:TypeCode>
  <ram:BasisAmount>1000.00</ram:BasisAmount>
  <ram:CategoryCode>O</ram:CategoryCode>
  <ram:ExemptionReasonCode>VATEX-EU-O</ram:ExemptionReasonCode>
</ram:ApplicableTradeTax>

Correct

<ram:SpecifiedTradeAllowanceCharge>
  <ram:ChargeIndicator>
    <udt:Indicator>false</udt:Indicator>
  </ram:ChargeIndicator>
  <ram:ActualAmount>50.00</ram:ActualAmount>
  <ram:Reason>Discount</ram:Reason>
  <ram:CategoryTradeTax>
    <ram:TypeCode>VAT</ram:TypeCode>
    <ram:CategoryCode>O</ram:CategoryCode>
  </ram:CategoryTradeTax>
</ram:SpecifiedTradeAllowanceCharge>
<ram:ApplicableTradeTax>
  <ram:CalculatedAmount>0.00</ram:CalculatedAmount>
  <ram:TypeCode>VAT</ram:TypeCode>
  <ram:BasisAmount>1000.00</ram:BasisAmount>
  <ram:CategoryCode>O</ram:CategoryCode>
  <ram:ExemptionReasonCode>VATEX-EU-O</ram:ExemptionReasonCode>
</ram:ApplicableTradeTax>
For developers: test expression per syntax

EN 16931 (CII) (CII)

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

not(//ram:CategoryTradeTax[ram:CategoryCode != 'O'])

EN 16931 (UBL) (UBL)

Context: /ubl:Invoice | /cn:CreditNote

(exists(cac:TaxTotal/cac:TaxSubtotal/cac:TaxCategory[cac:TaxScheme/normalize-space(upper-case(cbc:ID))='VAT']/cbc:ID[normalize-space(.) = 'O']) and count(//cac:AllowanceCharge[cbc:ChargeIndicator=false()]/cac:TaxCategory[normalize-space(cbc:ID) != 'O'][cac:TaxScheme/normalize-space(upper-case(cbc:ID))='VAT']) = 0) or not(cac:TaxTotal/cac:TaxSubtotal/cac:TaxCategory[cac:TaxScheme/normalize-space(upper-case(cbc:ID))='VAT']/cbc:ID[normalize-space(.) = 'O'])

Factur-X / ZUGFeRD EN 16931 (CII)

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

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

not(//ram:CategoryTradeTax[ram:CategoryCode != 'O'])

Related validation rules

  • BR-O-01: Not exactly one VAT breakdown for category O
  • BR-O-02: VAT identifier not allowed for invoice line with category O
  • BR-O-03: VAT identifier not allowed for document level allowance with category O
  • BR-O-04: VAT identifier not allowed for document level charge with category O
  • BR-O-05: VAT rate not allowed for invoice line with category O
  • BR-O-06: VAT rate not allowed for document level allowance with category O

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