BR-KSA-21: Each document-level charge needs a charge reason text (BT-104)
Applies only when the invoice has a document-level charge (BG-21): every cac:AllowanceCharge directly under the invoice with cbc:ChargeIndicator = true must contain a non-blank cbc:AllowanceChargeReason (BT-104).
How to fix it
Add a reason text to every document-level charge, for example <cbc:AllowanceChargeReason>Delivery charge</cbc:AllowanceChargeReason> inside the cac:AllowanceCharge whose cbc:ChargeIndicator is true.
ZATCA's official text
[BR-KSA-21]-Each Document level charge (BG-21) shall have a Reason for document level charge (BT-104).
Source: ZATCA SDK 3.4.8 · ZATCA KSA rules
Fails when (the condition ZATCA's SDK runs)
not (exists(cbc:AllowanceChargeReason) and normalize-space(cbc:AllowanceChargeReason )!='' )
Related rules
- BR-36 · Each document-level charge needs an amount (BT-99)
- BR-37 · Each document-level charge needs a VAT category code (BT-102)
- BR-E-01 · Exempt (E) items need an 'E' VAT breakdown
- BR-E-07 · Exempt (E) document charges must have a VAT rate of 0
- BR-KSA-13 · 'Not subject to VAT' (O) charges must have a VAT rate of 0 if given
- BR-KSA-19 · Each document-level charge needs a reason code
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