VAT categories and their 96 validation rules

Almost a third of the rule set is VAT rules, and they are not 96 different requirements. They are ten requirements, written out separately for nine categories.

96 rules · Rule set v2026-01-31

The category code appears in four places

Every line (BT-151), every document-level allowance (BT-95), every charge (BT-102) and every VAT breakdown block (BT-118) carries a category code. It is the same code in four places, and it decides which of the rule families below applies at all.

One document may use several categories at once — a standard-rated line beside an exempt one. Both families then apply together, and the breakdown needs a block per category.

CodeMeaningRule family
SStandard ratedBR-S
ZZero ratedBR-Z
EExempt from VATBR-E
AEReverse chargeBR-AE
KIntra-community supplyBR-IC
GExport outside the EUBR-G
ONot subject to VATBR-O
LIGIC (Canary Islands)BR-AF
MIPSI (Ceuta and Melilla)BR-AG

Ten positions, repeated nine times

The rules in each family are numbered, and the number means the same thing in every family. Understand BR-S-09 and you understand BR-E-09 and BR-AE-09 too — the same thing is checked, for a different category.

Two families break the pattern: BR-IC has twelve rules and BR-O fourteen, because intra-community supply and non-taxability carry extra conditions — that an invoice not subject to VAT may not contain other categories, for one.

NumberWhat is checked
-01The category must appear in the VAT breakdown (BG-23)
-02A line in this category requires a seller tax identifier
-03The same for a document-level allowance
-04The same for a document-level charge
-05The line VAT rate (BT-152)
-06The allowance VAT rate
-07The charge VAT rate
-08The taxable amount (BT-116) as the sum of this category’s amounts
-09The tax amount (BT-117) from the taxable amount and the rate
-10Whether an exemption reason (BT-120/BT-121) is required or forbidden

What actually goes wrong

The commonest failure is not on this list at all but one step before it: systems distinguish rates by percentage, not by category. 0% then stands for exempt, intra-community, reverse charge and export alike — four categories, one value, and the wrong family’s rules apply.

The second commonest is position -10. For E, AE, K, G and O the norm requires or forbids an exemption reason, and differently per category. A blanket free-text reason therefore fails on some categories and passes on others.

Positions -08 and -09 are arithmetic and behave like BR-CO-17: build the taxable base per category, compute the tax from it once, not the other way round.

All 96 rules

Grouped by category, with the official rule text.

NormAPI provides technical validation, not tax or legal advice.