BR-S-10 A VAT breakdown with the VAT category code (BT-118) S (Standard rated) must not have a VAT exemption reason code (BT-121) or reason text (BT-120), but you supplied vatExemptionReasons.S = "not applicable"
A VAT breakdown with the VAT category code (BT-118) S (Standard rated) must not have a VAT exemption reason code (BT-121) or reason text (BT-120), but you supplied vatExemptionReasons.S = "not applicable". Standard-rated supplies are taxed, so there is no exemption to explain. BR-S-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.
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-120 / BT-121- Severity
warning
What the library returns
The exact object in result.errors when this rule fires.
Generated by running @attestwire/en16931, not transcribed:
{
"rule": "BR-S-10",
"field": [
"BT-120",
"BT-121"
],
"severity": "warning",
"message": "A VAT breakdown with the VAT category code (BT-118) S (Standard rated) must not have a VAT exemption reason code (BT-121) or reason text (BT-120), but you supplied vatExemptionReasons.S = \"not applicable\". Standard-rated supplies are taxed, so there is no exemption to explain. BR-S-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 \"S\" 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\": \"S\", \"vatRate\": 19 }]",
"xpath": "/ubl:Invoice/cac:TaxTotal/cac:TaxSubtotal/cac:TaxCategory/cbc:TaxExemptionReason",
"docsUrl": "https://attestwire.com/rules/BR-S-10"
}
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
"vatExemptionReasons": { }, "lines": [{ "id": "1", "description": "Beratung", "quantity": 1, "unitCode": "C62", "unitPrice": 100, "vatCategory": "S", "vatRate": 19 }]The fix
Remove the "S" 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.