BR-KSA-84: Standard-rated (S) VAT rate must be 15 or 5
Wherever a VAT cac:TaxCategory or cac:ClassifiedTaxCategory has cbc:ID 'S' (document allowances and charges, document and line cac:TaxSubtotal, line items), its cbc:Percent, if present, must be 15 or 5. The executed check compares the whole-number part with 15 (floor), so a value such as 15.50 also passes, while 5 must match exactly.
How to fix it
Use <cbc:Percent>15.00</cbc:Percent>, or 5.00 where the 5% rate applies, in every S-category tax category.
ZATCA's official text
The Document level allowance VAT rate (BT-96), Document level Charge VAT rate (BT-103), VAT category rate(BT-119), Invoiced item VAT rate (BT-152), Prepayment VAT rate(KSA-34) must be limited to one of the following values (5 or 15) when the relevant Document level allowance VAT category code (BT-95), Document level Charge VAT category code(BT-102), VAT category code(BT-118), Invoiced item VAT category code(BT-151), Prepayment VAT Category Code (KSA-33) is "S"- "Standard rated". In other words, for Standard Rate VAT Category the rate can either be 15% or 5%.
Source: ZATCA SDK 3.4.8 · ZATCA KSA rules
Fails when (the condition ZATCA's SDK runs)
exists(./cbc:Percent) and not(floor(number(./cbc:Percent)) = 15 or floor(number(./cbc:Percent = 5)))
Related rules
- BR-32 · Each document-level allowance needs a VAT category code (BT-95)
- BR-37 · Each document-level charge needs a VAT category code (BT-102)
- BR-47 · Each VAT breakdown needs a VAT category code (BT-118)
- BR-48 · Each VAT breakdown needs a VAT rate (BT-119) unless category is O
- BR-CO-04 · Every invoice line needs a VAT category code
- BR-CO-17 · VAT amount per category must equal taxable amount x rate
Validate your invoice against ZATCA's rules
Paste the XML and see every error and warning. It runs in your browser; the invoice goes nowhere.
Validate an invoice or try Matheel