AttestwireRule referenceBR-AE-10

BR-AE-10 A reverse-charge VAT breakdown must give the reverse-charge reason

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

For a sample invoice, the library reports: The VAT breakdown for category AE (Reverse charge) must have a VAT exemption reason code (BT-121) meaning "Reverse charge", or the VAT exemption reason text (BT-120) "Reverse charge" (or the equivalent standard text in another language).

Business term
BT-120 / BT-121
Severity
fatal

The fix

Either remove vatExemptionReasons.AE entirely, in which case this library supplies the standard text "Reverse charge", or set it to your own wording in the invoice language.

A passing value

the shape this field expects
"vatExemptionReasons": { "AE": "Reverse charge" }

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-AE-10",
  "field": [
    "BT-120",
    "BT-121"
  ],
  "severity": "fatal",
  "message": "The VAT breakdown for category AE (Reverse charge) must have a VAT exemption reason code (BT-121) meaning \"Reverse charge\", or the VAT exemption reason text (BT-120) \"Reverse charge\" (or the equivalent standard text in another language). You set vatExemptionReasons.AE to an empty value, which suppresses the wording this library would otherwise supply. The reason is what tells the buyer — and their auditor — why an invoice line carries no VAT; a zero with no explanation is indistinguishable from a mistake.",
  "fix": "Either remove vatExemptionReasons.AE entirely, in which case this library supplies the standard text \"Reverse charge\", or set it to your own wording in the invoice language.",
  "example": "\"vatExemptionReasons\": { \"AE\": \"Reverse charge\" }",
  "xpath": "/ubl:Invoice/cac:TaxTotal/cac:TaxSubtotal/cac:TaxCategory/cbc:TaxExemptionReason",
  "docsUrl": "https://attestwire.com/rules/BR-AE-10"
}

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