BR-KSA-69: Zero-rated (Z) VAT breakdown needs a reason code (BT-121)

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-23, BT-118, BT-121

Applies to each document-level cac:TaxTotal/cac:TaxSubtotal/cac:TaxCategory whose cbc:ID is 'Z' (zero rated): 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 'Z', add <cbc:TaxExemptionReasonCode> with the applicable code; the zero-rated codes named in the rule's text are VATEX-SA-32, VATEX-SA-33, VATEX-SA-34-1 to VATEX-SA-34-5, VATEX-SA-35, VATEX-SA-36, VATEX-SA-EDU, VATEX-SA-HEA, VATEX-SA-MLTRY and VATEX-SA-DIPLOMAT.

ZATCA's official text

[BR-KSA-69]-A VAT breakdown (BG-23) with VAT Category code (BT-118) 'Zero rated' shall have a VAT exception 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

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