Tools › SmartFormular E-Rechnung lite › Validation rules › BR-O-01
BR-O-01
Lines, allowances or charges use the VAT category "not subject to VAT" (O), but the VAT breakdown (BG-23) does not list it correctly
What the message means
Lines, allowances or charges use the VAT category "not subject to VAT" (O), but the VAT breakdown (BG-23) does not list it correctly.
What the issuer needs to change
Add a VAT breakdown entry for O (exactly one).
Fields concerned
BG-20document level allowancesBG-21document level chargesBG-23VAT breakdownBG-25invoice lineBT-95document level allowance VAT category codeBT-102document level charge VAT category codeBT-118VAT category codeBT-151invoiced item VAT category code
Your invoice reports BR-O-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-invoiceOrigin
- 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 "Not subject to VAT" shall contain exactly one VAT breakdown group (BG-23) with the VAT category code (BT-118) equal to "Not subject to VAT".
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(.) = 'O']) or exists(//cac:ClassifiedTaxCategory[cac:TaxScheme/normalize-space(upper-case(cbc:ID))='VAT']/cbc:ID[normalize-space(.) = 'O'])) and (count(cac:TaxTotal/cac:TaxSubtotal/cac:TaxCategory[cac:TaxScheme/normalize-space(upper-case(cbc:ID))='VAT']/cbc:ID[normalize-space(.) = 'O']) = 1)) or (not(//cac:TaxCategory[cac:TaxScheme/normalize-space(upper-case(cbc:ID))='VAT']/cbc:ID[normalize-space(.) = 'O']) and not(//cac:ClassifiedTaxCategory[cac:TaxScheme/normalize-space(upper-case(cbc:ID))='VAT']/cbc:ID[normalize-space(.) = 'O'])))
CII
Context: /rsm:CrossIndustryInvoice Test: not(not(//ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode='O']) or ( count(//ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode='O'])=1 and (exists(//ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode='O']) or exists(//ram:CategoryTradeTax[ram:CategoryCode='O']))))
Related rules
- BR-IC-10The invoice shows no VAT – category "intra-community supply" (K) – but gives no reason (BT-120 or BT-121)
- BR-IC-11For an intra-community supply, the delivery date (BT-72) and invoicing period (BG-14) are missing
- BR-IC-12For an intra-community supply, the deliver-to country (BT-80) is missing
- BR-O-02Lines with "not subject to VAT" (O): the invoice must then not contain VAT numbers (BT-31, BT-48, BT-63)
- BR-O-03An allowance with "not subject to VAT" (O): the invoice must then not contain VAT numbers (BT-31, BT-48, …
- BR-O-04A charge with "not subject to VAT" (O): the invoice must then not contain VAT numbers (BT-31, BT-48, BT-63)