BR-KSA-21: Each document-level charge needs a charge reason text (BT-104)

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-21, 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

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