Rule reference

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:

TeachingError
{
  "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

the shape this field expects
"vatCategory": "S", "vatRate": 19

The 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.

Arrived from a stack trace? The docsUrl on every error links straight here. Something wrong on this page — tell us.