Rule at a Glance
| ID | Severity | Context (XPath) |
|---|---|---|
| Series ref. BR-66 | Fatal (error) | cac:Price/cac:AllowanceCharge |
| Schematron ID: ibr-083 | Field: ibt-147 — Item price discount / charge indicator | ||
Classification
Transaction Data — the value is produced by pricing logic at the moment the invoice line is built.
What the Rule Is Checking
Where an AllowanceCharge element appears inside the price block of an invoice line, its ChargeIndicator must be false. The assert text is direct: charge on price level is not allowed, only value 'false' is permitted.
false means allowance, a discount reducing the item price. true means charge, an addition. The price block accepts the first and rejects the second.
Why This Rule Exists
The structure reflects a deliberate asymmetry in how the invoice model treats price. The price of an item can be net of a discount, and the discount can be shown so the buyer sees both the gross price and the reduction applied. An addition to price is a separate economic event — freight, insurance, a handling fee, a surcharge — and the model requires those to be declared as document-level or line-level charges where they carry their own reason code and their own tax treatment.
That distinction has a tax consequence. A charge buried inside a unit price inherits whatever VAT treatment the item carries, which may be wrong. A charge declared at line or document level is assigned its own tax category and rate, and can be treated correctly where an item is zero-rated but the associated freight is not. Collapsing the two into a single price figure removes the authority's ability to see the treatment, and removes yours.
Standard / Code List
Not applicable to this rule directly. Charges moved to line or document level require an allowance or charge reason code from UNCL5189 or UNCL7161 depending on direction.
UAE Data Example
PASSES ✓: A list price of AED 100.00 with a price-level allowance of AED 10.00 and a net price of AED 90.00, carrying <cbc:ChargeIndicator>false</cbc:ChargeIndicator>.
FAILS ✗: A delivery surcharge of AED 15.00 written into the price block with <cbc:ChargeIndicator>true</cbc:ChargeIndicator>. The correct placement is a line-level or document-level allowance-charge with reason code and tax category.
What Your ERP / IT Team Must Ensure
- Map every pricing condition type in the ERP to a destination: price-level allowance, line-level charge, or document-level charge. Surcharge condition types must not route to the price block.
- Confirm that surcharges routed out of the price block carry their own tax category and rate rather than inheriting the line item's.
- Review pricing procedures for conditions historically netted into the unit price for simplicity. That shortcut now produces a fatal validation error.
- Test the transaction types where surcharges are common: cross-emirate delivery, expedited fulfilment, and small-order handling fees.
Related Rules
Charges relocated to line or document level fall under the allowance and charge structural rules elsewhere in the series, which require a reason code, a base amount and a tax category on each. Moving a charge to satisfy ibr-083 without adding those attributes trades one fatal error for another.
