robin.vision Appointment

SmartFormular

Tools › SmartFormular E-Rechnung lite › Validation rules › BR-E-01

BR-E-01

Lines, allowances or charges use the VAT category "exempt from VAT" (E), but the VAT breakdown (BG-23) does not list it correctly

Validation rule of EN 16931 (CEN, rule set 1.3.16) · Level: Error

What the message means

Lines, allowances or charges use the VAT category "exempt from VAT" (E), but the VAT breakdown (BG-23) does not list it correctly.

What the issuer needs to change

Add a VAT breakdown entry for E (exactly one).

Fields concerned

Your invoice reports BR-E-01? Check it with SmartFormular E-Rechnung lite, free to try until 31 December 2026: the tool shows every finding with an explanation, the invoice in readable form and a GiroCode to pay – in your browser, no upload.

Check an e-invoice

Origin

Rule set
EN 16931 (CEN, rule set 1.3.16)
Syntax
CII, UBL
Level
Error

Original rule text

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 "Exempt from VAT" shall contain exactly one VAT breakdown (BG-23) with the VAT category code (BT-118) equal to "Exempt from VAT".

Source: CEN/TC 434, EN 16931 validation rules 1.3.16, European Union Public Licence 1.2

Technical details for IT

UBL

Context: /ubl:Invoice | /cn:CreditNote
Test: not(((exists(//cac:TaxCategory[cac:TaxScheme/normalize-space(upper-case(cbc:ID))='VAT']/cbc:ID[normalize-space(.) = 'E']) or exists(//cac:ClassifiedTaxCategory[cac:TaxScheme/normalize-space(upper-case(cbc:ID))='VAT']/cbc:ID[normalize-space(.) = 'E'])) and (count(cac:TaxTotal/cac:TaxSubtotal/cac:TaxCategory[cac:TaxScheme/normalize-space(upper-case(cbc:ID))='VAT']/cbc:ID[normalize-space(.) = 'E']) = 1)) or (not(//cac:TaxCategory[cac:TaxScheme/normalize-space(upper-case(cbc:ID))='VAT']/cbc:ID[normalize-space(.) = 'E']) and not(//cac:ClassifiedTaxCategory[cac:TaxScheme/normalize-space(upper-case(cbc:ID))='VAT']/cbc:ID[normalize-space(.) = 'E'])))

CII

Context: /rsm:CrossIndustryInvoice
Test: not((count(//ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode='E'])=0 and count(//ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode='E'])=0 and count(//ram:CategoryTradeTax[ram:CategoryCode='E'])=0) or ( count(//ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode='E'])=1 and (exists(//ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode='E']) or exists(//ram:CategoryTradeTax[ram:CategoryCode='E']))))

Related rules

All validation rules

Technical explanation by robin.vision, not tax or legal advice. Rules as of 31 August 2026 (KoSIT validator configuration).