Skip to content

BR-CL-18: VAT category of an invoice line or the VAT breakdown not from UNCL 5305

Official message

[BR-CL-18] Invoice tax categories MUST be coded using UNCL 5305 code list

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

[BR-CL-18] Invoice tax categories MUST be coded using UNCL5305 code list

EN 16931 (UBL) · Error · Message language: English · Version: xrechnung-3.0.2-validator-configuration-2026-08-31
Severity
Error The invoice is invalid and may be rejected by the recipient.
Applies to
EN 16931 (CII), EN 16931 (UBL)

What does this mean?

VAT categories must be coded using the UNCL 5305 code list as restricted for EN 16931: S, Z, E, AE, K, G, O, L, M or B. The value given is not permitted.
CII: every ram:ApplicableTradeTax/ram:CategoryCode is checked, i.e. the category of the invoice lines (BT-151) and of the VAT breakdown (BT-118). UBL: cac:ClassifiedTaxCategory/cbc:ID is checked, i.e. the category of the invoice lines (BT-151).

Typical causes

A VAT rate (e.g. 19) or a name ("VAT") instead of the category code.
Lower case (s) or spaces.
A code from UNCL 5305 that is not intended for EN 16931, e.g. A.

How to fix the error

State the category with one of the permitted codes; the VAT rate belongs in a separate field (BT-152 or BT-119).
CII: ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax/ram:CategoryCode or ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:CategoryCode, UBL: cac:Item/cac:ClassifiedTaxCategory/cbc:ID.
Generate and validate the invoice again.

In E-Rechnungsfreund

In the invoice form, "Experte" view, select a category from the list in the field "Steuerkategorie (BT-151)" (VAT category) in section "Rechnungspositionen (BG-25)" (invoice lines) and, if the VAT breakdown is maintained manually, in the field "Kategorie (BT-118)" in section "Steueraufstellung (BG-23)" (VAT breakdown).

Example

Wrong

<ram:ApplicableTradeTax>
  <ram:TypeCode>VAT</ram:TypeCode>
  <ram:CategoryCode>VAT</ram:CategoryCode>
  <ram:RateApplicablePercent>19</ram:RateApplicablePercent>
</ram:ApplicableTradeTax>

Correct

<ram:ApplicableTradeTax>
  <ram:TypeCode>VAT</ram:TypeCode>
  <ram:CategoryCode>S</ram:CategoryCode>
  <ram:RateApplicablePercent>19</ram:RateApplicablePercent>
</ram:ApplicableTradeTax>
For developers: test expression per syntax

EN 16931 (CII) (CII)

Context: ram:ApplicableTradeTax/ram:CategoryCode

((not(contains(normalize-space(.), ' ')) and contains(' AE L M E S Z G O K B ', concat(' ', normalize-space(.), ' '))))

EN 16931 (UBL) (UBL)

Context: cac:ClassifiedTaxCategory/cbc:ID

( ( not(contains(normalize-space(.),' ')) and contains( ' AE L M E S Z G O K B ',concat(' ',normalize-space(.),' ') ) ) )

Related validation rules

  • BR-CL-01: Invoice type code (BT-3) not from UNTDID 1001
  • BR-CL-03: Currency attribute currencyID not according to ISO 4217
  • BR-CL-04: Invoice currency code (BT-5) not according to ISO 4217
  • BR-CL-05: VAT accounting currency code (BT-6) not according to ISO 4217
  • BR-CL-06: Value added tax point date code (BT-8) not permitted
  • BR-CL-07: Object identifier scheme (BT-18-1, BT-128-1) not from UNTDID 1153

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