BR-KSA-97: Non-SAR invoice: SAR VAT total must differ from the VAT total

Explained by Matheel from ZATCA's rule text and the condition SDK 3.4.8 executes · Updated

Warning: accepted with a warningConditional, see belowFields: BT-5, BT-110, BT-111

When cbc:DocumentCurrencyCode (BT-5) is not SAR, the warning fires if both document cac:TaxTotal/cbc:TaxAmount values are above 0 and the one with cac:TaxSubtotal (BT-110) equals the one without (BT-111) after rounding to 2 decimals. The expression shown for the rule is the failure condition, not the pass condition.

How to fix it

Put the VAT total in the invoice currency in the cac:TaxTotal that has subtotals, and the VAT total converted to SAR in the separate cac:TaxTotal without subtotals, e.g. <cac:TaxTotal><cbc:TaxAmount currencyID="SAR">...</cbc:TaxAmount></cac:TaxTotal>.

ZATCA's official text

[BR-KSA-97]-If the Document Currency Code (BT-5) is different from "SAR", then the value in "Invoice total VAT amount (BT-110)" cannot be the same as the value in "Invoice total VAT amount in accounting currency (BT-111)".
Source: ZATCA SDK 3.4.8 · ZATCA KSA rules

Fails when (the condition ZATCA's SDK runs)

(./cac:TaxTotal[cac:TaxSubtotal]/cbc:TaxAmount > 0) and (./cac:TaxTotal[not(cac:TaxSubtotal)]/cbc:TaxAmount > 0) and (round(./cac:TaxTotal[cac:TaxSubtotal]/cbc:TaxAmount * 100) div 100 = round(./cac:TaxTotal[not(cac:TaxSubtotal)]/cbc:TaxAmount * 100) div 100)

Related rules

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