BR-CL-18 A line has an invoiced item VAT category code (BT-151) of "X", which is not in UNTDID 5305
Line 1 has an invoiced item VAT category code (BT-151) of "X", which is not in UNTDID 5305. EN 16931 admits exactly 10 codes: "AE", "L", "M", "E", "S", "Z", "G", "O", "K", "B". The category is not a label — it selects which BR-S/BR-Z/BR-E/BR-AE/BR-IC/BR-G/BR-O family of rules the line and its VAT breakdown are judged by.
This rule is implemented and its error payload below is real, but the long-form write-up — normative text, worked example, divergence note — is not written yet. Everything the library knows about this rule is on this page. Ask and we will prioritise it.
- Business term
BT-151- Severity
fatal
What the library returns
The exact object in result.errors when this rule fires.
Generated by running @attestwire/en16931, not transcribed:
{
"rule": "BR-CL-18",
"field": "BT-151",
"severity": "fatal",
"message": "Line 1 has an invoiced item VAT category code (BT-151) of \"X\", which is not in UNTDID 5305. EN 16931 admits exactly 10 codes: \"AE\", \"L\", \"M\", \"E\", \"S\", \"Z\", \"G\", \"O\", \"K\", \"B\". The category is not a label — it selects which BR-S/BR-Z/BR-E/BR-AE/BR-IC/BR-G/BR-O family of rules the line and its VAT breakdown are judged by.",
"fix": "Use \"S\" standard rated, \"Z\" zero rated, \"E\" exempt, \"AE\" reverse charge, \"K\" intra-community supply, \"G\" export outside the EU, \"O\" not subject to VAT, \"L\" IGIC (Canary Islands) or \"M\" IPSI (Ceuta and Melilla). The tenth code, \"B\" (split payment, Italy), is a valid EN 16931 code that this build does not express.",
"example": "\"vatCategory\": \"S\", \"vatRate\": 19",
"xpath": "/ubl:Invoice/cac:InvoiceLine[1]/cac:Item/cac:ClassifiedTaxCategory/cbc:ID",
"docsUrl": "https://attestwire.com/rules/BR-CL-18"
}
xpath locates the element in the generated UBL document,
which is where a KoSIT or Peppol validator will report the same problem.
A passing value
"vatCategory": "S", "vatRate": 19The fix
Use "S" standard rated, "Z" zero rated, "E" exempt, "AE" reverse charge, "K" intra-community supply, "G" export outside the EU, "O" not subject to VAT, "L" IGIC (Canary Islands) or "M" IPSI (Ceuta and Melilla). The tenth code, "B" (split payment, Italy), is a valid EN 16931 code that this build does not express.