BR-43: Each line-level charge needs an amount (BT-141)
Applies only to cac:InvoiceLine/cac:AllowanceCharge elements with cbc:ChargeIndicator = true (a line charge); the validator checks that each contains cbc:Amount. The published test text is malformed (lower-case cbc:amount via an absolute path), but the executed condition is the presence of cbc:Amount, matching the official message.
How to fix it
Add the amount inside each line-level charge, e.g. <cbc:Amount currencyID="SAR">5.00</cbc:Amount>.
ZATCA's official text
[BR-43]-Each Invoice line charge (BG-28) shall have an Invoice line charge amount (BT-141).
Source: ZATCA SDK 3.4.8 · EN 16931 (CEN) rules
Fails when (the condition ZATCA's SDK runs)
(not (exists(./cbc:Amount)))
Related rules
- BR-KSA-20 · Each invoice line charge needs a reason code
- BR-KSA-22 · Each invoice line charge needs a charge reason text (BT-144)
- BR-KSA-82 · Prepayment lines must carry zero line amounts
- BR-KSA-EN16931-03 · Allowance/charge amount must equal base amount × percentage / 100
- BR-KSA-EN16931-11 · Line net amount = quantity × net price ± line charges/allowances
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