BR-KSA-96: Line exemption reason code needs a reason text
For line-level cac:TaxTotal/cac:TaxSubtotal/cac:TaxCategory with cbc:ID Z, E or O (VAT), if cbc:TaxExemptionReasonCode is present then cbc:TaxExemptionReason (KSA-42) must be present and non-empty. The executed check does not compare the text with the paragraph 11.2.4 list, and it is evaluated only when the document also contains a standard-rated (S) VAT category.
How to fix it
Add the reason text next to the line's reason code, e.g. <cbc:TaxExemptionReasonCode>VATEX-SA-32</cbc:TaxExemptionReasonCode><cbc:TaxExemptionReason>Export of goods</cbc:TaxExemptionReason>.
ZATCA's official text
[BR-KSA-96]-An Invoice line (BG-25) with the Prepayment VAT category code (KSA-33) 'Exempt from VAT' or 'Zero rated' or 'Not subject to VAT' shall have a Prepayment VAT exemption(or exception) reason text (KSA-42) with one of the values from paragraph 11.2.4 of XML implementation standards on Tax exemption (or exception) reason text - specific to Saudi Arabia.
Source: ZATCA SDK 3.4.8 · ZATCA KSA rules
Fails when (the condition ZATCA's SDK runs)
not(exists(cbc:TaxExemptionReason) and normalize-space(cbc:TaxExemptionReason))
Related rules
- BR-16 · Every invoice needs at least one invoice line (BG-25)
- BR-21 · Each invoice line needs a line identifier (BT-126)
- BR-22 · Each invoice line needs an invoiced quantity (BT-129)
- BR-24 · Each invoice line needs a line net amount (BT-131)
- BR-25 · Each invoice line needs an item name (BT-153)
- BR-26 · Each invoice line needs an item net price (BT-146)
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