Skip to content

BR-S-01: VAT breakdown for category S is missing

Official message

[BR-S-01] An Invoice that contains an Invoice line (BG-25), a Document level allowance (BG-20) or a Document level charge (BG-21) where the VAT category code (BT-151, BT-95 or BT-102) is "Standard rated" shall contain in the VAT breakdown (BG-23) at least one VAT category code (BT-118) equal with "Standard rated".

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

[BR-S-01] An Invoice that contains an Invoice line (BG-25), a Document level allowance (BG-20) or a Document level charge (BG-21) where the VAT category code (BT-151, BT-95 or BT-102) is "Standard rated" shall contain in the VAT breakdown (BG-23) at least one VAT category code (BT-118) equal with "Standard rated".

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

[BR-S-01] An Invoice that contains an Invoice line (BG-25), a Document level allowance (BG-20) or a Document level charge (BG-21) where the VAT category code (BT-151, BT-95 or BT-102) is "Standard rated" shall contain in the VAT breakdown (BG-23) at least one VAT category code (BT-118) equal with "Standard rated".

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-25, BG-20, BG-21, BT-151, BT-95, BT-102, BG-23, BT-118

What does this mean?

If the invoice contains an invoice line (BG-25), a document level allowance (BG-20) or a document level charge (BG-21) with VAT category S (Standard rated, VAT rate above zero), the VAT breakdown (BG-23) must contain at least one entry with VAT category code (BT-118) S, one for every rate used (BR-S-08). Such an entry is missing.
Differences: in UBL the rule also fails if there is a breakdown S but no line and no allowance/charge with S. In CII the official check counts lines or allowances/charges and breakdowns of the category together and therefore does not detect a missing breakdown in every case, e.g. not with two lines with S.

Typical causes

No breakdown was generated for lines or allowances/charges of category S, e.g. because the VAT breakdown is maintained manually.
The breakdown was created with a different category code than the lines.
UBL: a breakdown S is present although no line and no allowance/charge has this category.

How to fix the error

Create a breakdown with BT-118 = S and the respective rate (BT-119) for every rate used by lines or allowances/charges of category S.
Remove breakdowns of category S without a matching line or allowance/charge.
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 VAT category and rate of the lines and allowances/charges when the XML is generated; every combination of category and rate gives one entry. Entries in section "Steueraufstellung (BG-23)" (VAT breakdown, "Experte" view) without a line or allowance/charge of the same category and rate are output additionally with taxable amount 0; remove such entries.

Example

Wrong

<!-- Invoice line -->
<ram:SpecifiedLineTradeSettlement>
  <ram:ApplicableTradeTax>
    <ram:TypeCode>VAT</ram:TypeCode>
    <ram:CategoryCode>S</ram:CategoryCode>
    <ram:RateApplicablePercent>19.00</ram:RateApplicablePercent>
  </ram:ApplicableTradeTax>
  ...
</ram:SpecifiedLineTradeSettlement>
<!-- VAT breakdown (BG-23): no entry with S -->

Correct

<!-- Invoice line -->
<ram:SpecifiedLineTradeSettlement>
  <ram:ApplicableTradeTax>
    <ram:TypeCode>VAT</ram:TypeCode>
    <ram:CategoryCode>S</ram:CategoryCode>
    <ram:RateApplicablePercent>19.00</ram:RateApplicablePercent>
  </ram:ApplicableTradeTax>
  ...
</ram:SpecifiedLineTradeSettlement>
<!-- VAT breakdown (BG-23) -->
<ram:ApplicableTradeTax>
  <ram:CalculatedAmount>190.00</ram:CalculatedAmount>
  <ram:TypeCode>VAT</ram:TypeCode>
  <ram:BasisAmount>1000.00</ram:BasisAmount>
  <ram:CategoryCode>S</ram:CategoryCode>
  <ram:RateApplicablePercent>19.00</ram:RateApplicablePercent>
</ram:ApplicableTradeTax>
For developers: test expression per syntax

EN 16931 (CII) (CII)

Context: /rsm:CrossIndustryInvoice

((count(//ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode='S']) + count(//ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode='S'])) >=2 or not (//ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode='S'])) and ((count(//ram:CategoryTradeTax[ram:CategoryCode='S']) + count(//ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode='S'])) >=2 or not (//ram:CategoryTradeTax[ram:CategoryCode='S']))

EN 16931 (UBL) (UBL)

Context: /ubl:Invoice | /cn:CreditNote

((count(//cac:AllowanceCharge/cac:TaxCategory[normalize-space(cbc:ID) = 'S']) + count(//cac:ClassifiedTaxCategory[normalize-space(cbc:ID) = 'S'])) > 0 and count(cac:TaxTotal/cac:TaxSubtotal/cac:TaxCategory[normalize-space(cbc:ID) = 'S']) > 0) or ((count(//cac:AllowanceCharge/cac:TaxCategory[normalize-space(cbc:ID) = 'S']) + count(//cac:ClassifiedTaxCategory[normalize-space(cbc:ID) = 'S'])) = 0 and count(cac:TaxTotal/cac:TaxSubtotal/cac:TaxCategory[normalize-space(cbc:ID) = 'S']) = 0)

Factur-X / ZUGFeRD EN 16931 (CII)

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

Context: /rsm:CrossIndustryInvoice

((count(//ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode='S']) + count(//ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode='S'])) >=2 or not (//ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode='S'])) and ((count(//ram:CategoryTradeTax[ram:CategoryCode='S']) + count(//ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode='S'])) >=2 or not (//ram:CategoryTradeTax[ram:CategoryCode='S']))

Related validation rules

  • BR-S-02: Seller VAT or tax registration identifier missing for invoice line with category S
  • BR-S-03: Seller VAT or tax registration identifier missing for document level allowance with category S
  • BR-S-04: Seller VAT or tax registration identifier missing for document level charge with category S
  • BR-S-05: VAT rate of invoice line with category S is not greater than zero
  • BR-S-06: VAT rate of document level allowance with category S is not greater than zero
  • BR-S-07: VAT rate of document level charge with category S is not greater than zero

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