AttestwireRule referenceBR-E-10

BR-E-10 An exempt VAT breakdown must give an exemption reason

noun · EN 16931 · fatal · BT-120 / BT-121

For a sample invoice, the library reports: A VAT breakdown with category E (exempt from VAT) must have a VAT exemption reason code (BT-121) or reason text (BT-120).

Business term
BT-120 / BT-121
Severity
fatal

The fix

Set vatExemptionReasons.E to the statutory reason, ideally naming the provision, e.g. "Steuerbefreit nach §4 Nr. 21 UStG" or "Exempt under Article 132 of Directive 2006/112/EC". A VATEX code in vatExemptionReasonCodes.E satisfies the rule on its own, and is the machine-checkable form: "VATEX-EU-132-1I" for education.

A passing value

the shape this field expects
"vatExemptionReasons": { "E": "Exempt under Article 132(1)(i) of Directive 2006/112/EC" }

What 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:

TeachingError
{
  "rule": "BR-E-10",
  "field": [
    "BT-120",
    "BT-121"
  ],
  "severity": "fatal",
  "message": "A VAT breakdown with category E (exempt from VAT) must have a VAT exemption reason code (BT-121) or reason text (BT-120). Unlike reverse charge or export, \"exempt\" has no single standard wording — the exemption is granted by a specific provision, and the buyer and the auditor both need to know which one you are relying on.",
  "fix": "Set vatExemptionReasons.E to the statutory reason, ideally naming the provision, e.g. \"Steuerbefreit nach §4 Nr. 21 UStG\" or \"Exempt under Article 132 of Directive 2006/112/EC\". A VATEX code in vatExemptionReasonCodes.E satisfies the rule on its own, and is the machine-checkable form: \"VATEX-EU-132-1I\" for education.",
  "example": "\"vatExemptionReasons\": { \"E\": \"Exempt under Article 132(1)(i) of Directive 2006/112/EC\" }",
  "xpath": "/ubl:Invoice/cac:TaxTotal/cac:TaxSubtotal/cac:TaxCategory/cbc:TaxExemptionReason",
  "docsUrl": "https://attestwire.com/rules/BR-E-10"
}

xpath is always a UBL path. On a CII invoice, look for the matching CII field instead.