Attestwire › Rule reference › BR-AG-07
BR-AG-07 A Ceuta and Melilla IPSI charge must state a rate of zero or more
noun · EN 16931 · fatal · BT-103
For a sample invoice, the library reports: The document level charge at charges[0] uses VAT category M (Tax on production, services and imports in Ceuta and Melilla (IPSI)), so its VAT rate (BT-103) must be 0 (zero) or greater than zero, but it is missing.
- Business term
BT-103- Severity
fatal
The fix
Set charges[0].vatRate to the IPSI percentage the adjusted supply bears, as a number. Zero is a legal value here — unlike category S — but the term must be present, because a missing rate and a rate of zero are different claims about a tax that is genuinely levied.
A passing value
"vatCategory": "M", "vatRate": 10What 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:
{
"rule": "BR-AG-07",
"field": "BT-103",
"severity": "fatal",
"message": "The document level charge at charges[0] uses VAT category M (Tax on production, services and imports in Ceuta and Melilla (IPSI)), so its VAT rate (BT-103) must be 0 (zero) or greater than zero, but it is missing. IPSI is charged, so the adjustment carries a rate, and that rate may be 0 as well as positive — the Ceuta and Melilla tariffs include a zero band. An absent rate would leave the adjustment untethered from the tax the document says applies to it.",
"fix": "Set charges[0].vatRate to the IPSI percentage the adjusted supply bears, as a number. Zero is a legal value here — unlike category S — but the term must be present, because a missing rate and a rate of zero are different claims about a tax that is genuinely levied.",
"example": "\"vatCategory\": \"M\", \"vatRate\": 10",
"xpath": "/ubl:Invoice/cac:AllowanceCharge[3]/cac:TaxCategory/cbc:Percent",
"docsUrl": "https://attestwire.com/rules/BR-AG-07"
}
xpath is always a UBL path. On a CII invoice, look for the
matching CII field instead.