BR-KSA-96: Line exemption reason code needs a reason text

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

Warning: accepted with a warningConditional, see belowFields: BG-25, KSA-33, KSA-42

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

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