BR-S-09: Standard-rated (S) tax amount = taxable amount × rate / 100
For each cac:TaxSubtotal with VAT category 'S', cbc:TaxAmount must equal cbc:TaxableAmount × cac:TaxCategory/cbc:Percent / 100 rounded to two decimals. The executed check allows a difference of 0.01 per invoice line (0.01 × number of cac:InvoiceLine) and also warns if cbc:Percent is empty; the published test expression shows a tolerance of ±1.
How to fix it
Compute the subtotal tax from its own taxable amount and rate, e.g. TaxableAmount 4.00 at <cbc:Percent>15.00</cbc:Percent> gives <cbc:TaxAmount currencyID="SAR">0.60</cbc:TaxAmount>.
ZATCA's official text
[BR-S-09]-The VAT category tax amount (BT-117) in a VAT breakdown (BG-23) where VAT category code (BT-118) is "Standard rated" shall equal the VAT category taxable amount (BT-116) multiplied by the VAT category rate (BT-119) / 100), rounded to two decimals.
Source: ZATCA SDK 3.4.8 · EN 16931 (CEN) rules
Fails when (the condition ZATCA's SDK runs)
$checkOne or not($checkTwo)
Related rules
- BR-45 · Each VAT breakdown needs a taxable amount (BT-116)
- BR-46 · Each VAT breakdown needs a VAT amount (BT-117)
- 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-14 · Total VAT must equal the sum of the VAT breakdown amounts
- 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