BR-KSA-23: VAT-exempt (E) breakdown needs an exemption reason code (BT-121)
Applies to each document-level cac:TaxTotal/cac:TaxSubtotal/cac:TaxCategory whose cbc:ID is 'E' (exempt): it must contain a non-blank cbc:TaxExemptionReasonCode (BT-121). This rule checks only that a code is present, not which code it is.
How to fix it
Inside every TaxCategory with cbc:ID 'E', add <cbc:TaxExemptionReasonCode> with the exemption code that applies; the exempt codes named in the rule's text are VATEX-SA-29, VATEX-SA-29-7 and VATEX-SA-30.
ZATCA's official text
[BR-KSA-23]-A VAT breakdown (BG-23) with VAT Category code (BT-118) 'Exempt from VAT' shall have a VAT exemption reason code (BT-121).
Source: ZATCA SDK 3.4.8 · ZATCA KSA rules
Fails when (the condition ZATCA's SDK runs)
not(exists(cbc:TaxExemptionReasonCode) and normalize-space(cbc:TaxExemptionReasonCode )!='' )
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-18 · Every invoice needs at least one VAT breakdown
- BR-E-01 · Exempt (E) items need an 'E' VAT breakdown
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