Attestwire › Rule reference › BR-32
BR-32 Every document-level allowance must have a VAT category code
noun · EN 16931 · fatal · BT-95
For a sample invoice, the library reports: The document level allowance at allowances[0] has no VAT category code (BT-95): you supplied missing. A document level allowance is not a neutral adjustment to a total — it enters the VAT breakdown on its own account, reducing the taxable amount (BT-116) of exactly one category-and-rate group.
- Business term
BT-95- Severity
fatal
The fix
Set allowances[0].vatCategory to the category of the supply this allowance relates to — "S" Standard rated, "Z" Zero rated, "E" Exempt from VAT, "AE" Reverse charge, "K" Intra-community supply, "G" Export outside the EU, "O" Not subject to VAT, "L" Canary Islands general indirect tax (IGIC), "M" Tax on production, services and imports in Ceuta and Melilla (IPSI) — which should normally be the category of the lines it adjusts.
A passing value
"vatCategory": "S", "vatRate": 19What the library returns
The full error returned by @attestwire/en16931. It includes the rule ID,
affected field and suggested correction. Developers can use this object in their application:
{
"rule": "BR-32",
"field": "BT-95",
"severity": "fatal",
"message": "The document level allowance at allowances[0] has no VAT category code (BT-95): you supplied missing. A document level allowance is not a neutral adjustment to a total — it enters the VAT breakdown on its own account, reducing the taxable amount (BT-116) of exactly one category-and-rate group. Without a category there is no group to put it in, and the document's VAT would silently disagree with its totals.",
"fix": "Set allowances[0].vatCategory to the category of the supply this allowance relates to — \"S\" Standard rated, \"Z\" Zero rated, \"E\" Exempt from VAT, \"AE\" Reverse charge, \"K\" Intra-community supply, \"G\" Export outside the EU, \"O\" Not subject to VAT, \"L\" Canary Islands general indirect tax (IGIC), \"M\" Tax on production, services and imports in Ceuta and Melilla (IPSI) — which should normally be the category of the lines it adjusts.",
"example": "\"vatCategory\": \"S\", \"vatRate\": 19",
"xpath": "/ubl:Invoice/cac:AllowanceCharge[1]/cac:TaxCategory/cbc:ID",
"docsUrl": "https://attestwire.com/rules/BR-32"
}
xpath is always a UBL path. On a CII invoice, look for the
matching CII field instead.