BR-KSA-CL-05Zero-rated or exempt breakdown gives no VAT exemption reason text
This rule was retired in rule pack 2.0.0: ZATCA's SDK 3.4.8 no longer includes the assertion it mirrored, so Mutabiq no longer reports it. Reports produced by earlier rule packs may still name it; the explanations below are kept for them.
What kind of value was found — empty, not_15_digits and the like — never the value itself.
Zero-rated or exempt breakdown gives no VAT exemption reason text
Reported asreason_missingthe reason text is missing
What is wrong
Only rule packs before 2.0.0 report this: SDK 3.4.8, which rule pack 2.0.0 reads, removed BR-KSA-CL-05 and checks the reason text against no list (BR-KSA-F-06-C16 bounds only its length), so a report produced under 2.0.0 never carries this note. What follows is the rule as SDK 3.0.8 ran it. A cac:TaxCategory coded Z - zero-rated - or E - exempt - inside a cac:TaxTotal/cac:TaxSubtotal carries no cbc:TaxExemptionReason. SDK 3.0.8 refused the document under BR-KSA-CL-05, which required the reason text and required it to contain one of fourteen published wordings. The text was checked here and the code beside it by BR-KSA-CL-04, so both elements had to be filled and both from ZATCA's own lists. The node set this rule read was the widest of the VAT-category family: it is not confined to the cac:TaxTotal directly under the document root, so a breakdown nested inside an invoice line is inside it, and it carries no test that the tax scheme is VAT, so a category lettered Z or E under any other scheme is inside it too.
What to check in your ERP
Nothing needs changing for rule pack 2.0.0 on this account: SDK 3.4.8 checks the reason text against no list, so a wording of your own is accepted within the length limits BR-KSA-F-06-C16 sets. What SDK 3.4.8 does check is the code beside it, in cbc:TaxExemptionReasonCode: present on a zero-rated, exempt or out-of-scope breakdown, and on the list for its category, which BR-KSA-CL-04 checks.
Zero-rated or exempt breakdown's VAT exemption reason text is empty
Reported asreason_emptythe reason text is present but empty
What is wrong
Only rule packs before 2.0.0 report this: SDK 3.4.8, which rule pack 2.0.0 reads, removed BR-KSA-CL-05 and checks the reason text against no list (BR-KSA-F-06-C16 bounds only its length), so a report produced under 2.0.0 never carries this note. What follows is the rule as SDK 3.0.8 ran it. The cbc:TaxExemptionReason of a zero-rated or exempt breakdown holds text that is empty once leading, trailing and repeated whitespace has been normalised away. SDK 3.0.8 refused the document under BR-KSA-CL-05. Note the difference from BR-KSA-69, which reads the same element: that rule compares the raw text, so a reason consisting of a single space satisfies it, while this rule normalises the whitespace first and the same value is empty here. One element, two rules, one function call apart - a space clears BR-KSA-69 and is caught here.
What to check in your ERP
Nothing needs changing for rule pack 2.0.0 on this account: SDK 3.4.8 checks the reason text against no list, so a wording of your own is accepted within the length limits BR-KSA-F-06-C16 sets. What SDK 3.4.8 does check is the code beside it, in cbc:TaxExemptionReasonCode: present on a zero-rated, exempt or out-of-scope breakdown, and on the list for its category, which BR-KSA-CL-04 checks.
VAT exemption reason text contains none of the published wordings
Reported asreason_not_in_codelistthe reason text is none of the published wordings
What is wrong
Only rule packs before 2.0.0 report this: SDK 3.4.8, which rule pack 2.0.0 reads, removed BR-KSA-CL-05 and checks the reason text against no list (BR-KSA-F-06-C16 bounds only its length), so a report produced under 2.0.0 never carries this note. What follows is the rule as SDK 3.0.8 ran it. The cbc:TaxExemptionReason of a zero-rated or exempt breakdown holds text that does not contain any of the fourteen wordings SDK 3.0.8 checked. Read what the test does before editing the field, because it is more permissive than it looks: each of the fourteen is matched as an unanchored pattern, so the rule is satisfied by any text that CONTAINS one of them. Export of goods to Bahrain passes, because Export of goods is inside it. The rule is not that the reason must be exactly one of the fourteen, and words you have added around a published wording are not what is wrong here - the published wording itself is absent. The fourteen, as ZATCA writes them: Financial services mentioned in Article 29 of the VAT Regulations; Life insurance services mentioned in Article 29 of the VAT Regulations; Real estate transactions mentioned in Article 30 of the VAT Regulations; Export of goods; Export of services; The international transport of goods; International transport of passengers; Services directly connected and incidental to a Supply of international passenger transport; Supply of a qualifying means of transport; Any services relating to Goods or passenger transportation, as defined in article twenty five of these Regulations; Medicines and medical equipment; Qualifying metals; Private education to citizen; Private healthcare to citizen. The value is normalised before the comparison, so leading, trailing and repeated spaces make no difference; it is otherwise exact and case-sensitive, so export of goods in lower case does not match, and neither does a wording retyped with a word changed. The node set this rule reads is the widest of the VAT-category family: it is not confined to the cac:TaxTotal directly under the document root, so a breakdown nested inside an invoice line is inside it, and it carries no test that the tax scheme is VAT, so a category lettered Z or E under any other scheme is inside it too.
What to check in your ERP
Nothing needs changing for rule pack 2.0.0 on this account: SDK 3.4.8 checks the reason text against no list, so a wording of your own is accepted within the length limits BR-KSA-F-06-C16 sets. What SDK 3.4.8 does check is the code beside it, in cbc:TaxExemptionReasonCode: present on a zero-rated, exempt or out-of-scope breakdown, and on the list for its category, which BR-KSA-CL-04 checks.