BR-KSA-22: Each invoice line charge needs a charge reason text (BT-144)

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-28, BT-144

Applies only when a line has a charge (BG-28): every cac:InvoiceLine/cac:AllowanceCharge with cbc:ChargeIndicator = true must contain a non-blank cbc:AllowanceChargeReason (BT-144).

How to fix it

Add a reason text to every line-level charge, for example <cbc:AllowanceChargeReason>Installation</cbc:AllowanceChargeReason> inside the line's cac:AllowanceCharge whose cbc:ChargeIndicator is true.

ZATCA's official text

[BR-KSA-22]- Each Invoice line charge (BG-28) shall have a Reason for invoice line charge (BT-144).
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