Rule reference

ATW-VAT-CATEGORY-UNSUPPORTED A line uses VAT category "B" (split payment), which this build does not support

Line 1 uses VAT category "B" (split payment), which this build does not support. "B" is a valid EN 16931 code — BR-CL-17 and BR-CL-18 both admit it — but it is the one category of the ten with no rule family of its own beyond BR-B-01 and BR-B-02, and both of those exist only to confine it: BR-B-01 restricts it to domestic Italian invoices, and BR-B-02 forbids it from sharing a document with any other category. Split payment ("scissione dei pagamenti") means the Italian public-sector buyer pays the net amount to you and the VAT directly to the Agenzia delle Entrate, so the invoice states VAT that you will never receive. Getting that wrong is not a formatting error, it is a payment that goes to the wrong party.

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": "ATW-VAT-CATEGORY-UNSUPPORTED",
  "field": "BT-151",
  "severity": "fatal",
  "message": "Line 1 uses VAT category \"B\" (split payment), which this build does not support. \"B\" is a valid EN 16931 code — BR-CL-17 and BR-CL-18 both admit it — but it is the one category of the ten with no rule family of its own beyond BR-B-01 and BR-B-02, and both of those exist only to confine it: BR-B-01 restricts it to domestic Italian invoices, and BR-B-02 forbids it from sharing a document with any other category. Split payment (\"scissione dei pagamenti\") means the Italian public-sector buyer pays the net amount to you and the VAT directly to the Agenzia delle Entrate, so the invoice states VAT that you will never receive. Getting that wrong is not a formatting error, it is a payment that goes to the wrong party.",
  "fix": "Use category \"S\" and handle the split-payment mechanics outside this library, or produce the document with a tool that implements the Italian FatturaPA rules. If the supply is not Italian public-sector, \"B\" is the wrong code regardless.",
  "example": "\"vatCategory\": \"S\", \"vatRate\": 22",
  "xpath": "/ubl:Invoice/cac:InvoiceLine[1]/cac:Item/cac:ClassifiedTaxCategory/cbc:ID",
  "docsUrl": "https://github.com/attestwire/en16931#not-implemented-yet"
}

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": 22

The fix

Use category "S" and handle the split-payment mechanics outside this library, or produce the document with a tool that implements the Italian FatturaPA rules. If the supply is not Italian public-sector, "B" is the wrong code regardless.

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