AttestwireRule referenceBR-AG-10

BR-AG-10 A Ceuta and Melilla IPSI breakdown should not give an exemption reason

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

For a sample invoice, the library reports: A VAT breakdown with the VAT category code (BT-118) M (Tax on production, services and imports in Ceuta and Melilla (IPSI)) must not have a VAT exemption reason code (BT-121) or reason text (BT-120), but you supplied vatExemptionReasons.M = "Exento".

Business term
BT-120 / BT-121
Severity
warning

The fix

Remove the "M" entry from vatExemptionReasons. If you need to say something to the buyer about this line, use the invoice note (BT-22) or the line note (BT-127), which carry free text without making a VAT claim.

A passing value

the shape this field expects
"vatExemptionReasons": { }, "lines": [{ "id": "1", "description": "Beratung", "quantity": 1, "unitCode": "C62", "unitPrice": 100, "vatCategory": "M", "vatRate": 10 }]

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-AG-10",
  "field": [
    "BT-120",
    "BT-121"
  ],
  "severity": "warning",
  "message": "A VAT breakdown with the VAT category code (BT-118) M (Tax on production, services and imports in Ceuta and Melilla (IPSI)) must not have a VAT exemption reason code (BT-121) or reason text (BT-120), but you supplied vatExemptionReasons.M = \"Exento\". Category M charges IPSI, which is a tax actually levied on the supply — an exemption reason would claim relief from the very tax the breakdown says you collected. BR-AG-10 is fatal at document level; this finding is a warning because the library drops the value rather than emitting it, so the generated XML still passes — but your intent was silently discarded, which you should know about.",
  "fix": "Remove the \"M\" entry from vatExemptionReasons. If you need to say something to the buyer about this line, use the invoice note (BT-22) or the line note (BT-127), which carry free text without making a VAT claim.",
  "example": "\"vatExemptionReasons\": { }, \"lines\": [{ \"id\": \"1\", \"description\": \"Beratung\", \"quantity\": 1, \"unitCode\": \"C62\", \"unitPrice\": 100, \"vatCategory\": \"M\", \"vatRate\": 10 }]",
  "xpath": "/ubl:Invoice/cac:TaxTotal/cac:TaxSubtotal/cac:TaxCategory/cbc:TaxExemptionReason",
  "docsUrl": "https://attestwire.com/rules/BR-AG-10"
}

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