Rule at a Glance
| ID | Severity | Context (XPath) |
|---|---|---|
| Series ref. BR-32 | Fatal (error) | cac:InvoiceLine/cac:AllowanceCharge[cbc:ChargeIndicator=false] |
Schematron ID: ibr-041 | Field: IBT-136 (Invoice line allowance amount), cbc:Amount |
||
Classification
Transaction Data — this rule is the line-level counterpart to BR-31. Where BR-31 requires an amount on a document-level allowance (IBG-20), this rule requires an amount on an allowance attached to an individual invoice line (IBG-27). A single invoice can carry both: a document-level rebate applied to the whole invoice, and separate line-level discounts on specific items.
What the Rule Is Checking
Where an AllowanceCharge element with ChargeIndicator false sits inside an InvoiceLine or CreditNoteLine, the rule requires that cbc:Amount is present. A line-level allowance with a reason but no amount fails, for the same underlying reason as the document-level rule: the figure is what the line net amount calculation needs.
Why This Rule Exists
Line-level allowances are how PINT-AE represents item-specific discounts — a promotional price on one product line, a negotiated reduction for a specific service, or a quantity-break discount that applies to one line rather than the invoice as a whole. The invoice line net amount (governed separately by BR-24) is calculated using the line quantity, unit price, and any line-level allowances or charges. Without a defined amount, that calculation has no figure to subtract, and the line total cannot be verified against the document-level summation rules that check the sum of all line net amounts equals the invoice's declared line extension total.
For UAE VAT purposes, the taxable value of each line — after allowances — is what determines the VAT charged on that line. A line allowance without an amount leaves the true taxable value of that line undetermined.
UAE Data Example
PASSES ✓: Invoice line for 10 units at 50.00 AED, with a line-level AllowanceCharge, ChargeIndicator = false, Amount = 25.00 AED, reason "Promotional discount". Amount present; rule passes.
PASSES ✓: Invoice line with no AllowanceCharge block. No line-level allowance is being applied; the rule does not fire.
FAILS ✗: Invoice line with an AllowanceCharge, reason code populated, ChargeIndicator = false, but no Amount. Fatal error — the line discount has no quantified value.
What Your ERP / IT Team Must Ensure
- Verify that line-item discount functionality in your billing or sales module always writes a concrete amount into the line-level allowance structure, rather than storing only a discount percentage or reason code that is resolved elsewhere.
- Where discounts are configured as a percentage in the ERP (for example, "10% off this line"), confirm the extraction logic calculates the resulting amount and populates
cbc:Amountdirectly — PINT-AE does not accept a percentage alone as satisfying this rule. - Test invoices that combine multiple line-level allowances on the same line (for example, a promotional discount and a loyalty discount stacked on one item) to confirm each allowance block independently carries its own amount.
- Reconcile line-level allowance amounts against the line net amount (IBT-131, BR-24) in your pre-submission validation, since the two figures must be mathematically consistent.
Related Rules
BR-31 (ibr-031) applies the equivalent amount requirement at document level (IBG-20). BR-34 (ibr-042) requires that the same line-level allowance also carries a reason or reason code. BR-24 governs the invoice line net amount that this allowance feeds into.
