Rule at a Glance

ID Severity Context (XPath)
BR-31 Fatal (error) ubl:Invoice/cac:AllowanceCharge[cbc:ChargeIndicator=false]
Schematron ID: ibr-031  |  Field: IBT-092 (Document level allowance amount), cbc:Amount

Classification

Transaction Data — BR-31 governs the document-level allowance group (IBG-20), the set of fields that record a deduction applied to the whole invoice rather than to a single line. An allowance at this level typically represents a discount, rebate, or price adjustment negotiated across the full commercial transaction, distinct from the line-level allowances covered separately under BR-41 (IBG-27).

What the Rule Is Checking

Where an AllowanceCharge element with ChargeIndicator set to false (an allowance, not a charge) sits at document level — meaning it is not nested inside an InvoiceLine or CreditNoteLine — the rule requires that cbc:Amount is present. The test is scoped precisely: it fires only for document-level allowance blocks. A line-level allowance is exempt from BR-31 because line-level amounts are governed by the separate rule BR-41.

An AllowanceCharge block that declares a reason or a percentage but omits the amount fails this rule, because the amount is the field the invoice arithmetic depends on.

Why This Rule Exists

A document-level allowance exists to reduce the invoice total by a defined figure. The VAT-inclusive and VAT-exclusive totals, the taxable base, and the payable amount all depend on that figure flowing correctly into the document-level summation rules. An allowance block with a reason but no amount gives the buyer's accounts payable system nothing to post against — it signals that a deduction exists without stating what it is worth.

For UAE businesses, document-level allowances most commonly represent early-payment discount terms, volume rebates applied across the full invoice value, or promotional price reductions agreed at the point of sale. Each of these needs a quantified amount for the FTA's Corner 5 data matching to reconcile the seller's reported taxable value against the buyer's received value.

UAE Data Example

PASSES ✓: Document-level AllowanceCharge with ChargeIndicator = false, Amount = 250.00 AED, reason "Early payment discount". Amount is present; rule passes.

PASSES ✓: No document-level AllowanceCharge block at all. The invoice carries no document-level allowance; BR-31 does not apply.

FAILS ✗: Document-level AllowanceCharge with ChargeIndicator = false, reason "Volume rebate", no Amount element. Fatal error — a deduction is declared with no value to apply.

What Your ERP / IT Team Must Ensure

  • Confirm that any pricing or billing module capable of generating a document-level discount always populates the amount field before the AllowanceCharge block is written to the UBL document, rather than allowing a reason-only placeholder.
  • Distinguish document-level allowances from line-level allowances explicitly in your extraction logic. The two are governed by different rules (BR-31 versus BR-41) and mapping a line-level discount into the document-level block, or vice versa, will misstate where the deduction applies.
  • For early-payment or settlement discount terms that are conditional on the buyer's payment date, decide at invoice generation time whether the discount is reflected as a document-level allowance now, or handled separately as a credit note if and when the buyer actually pays early. PINT-AE does not support a conditional allowance amount.
  • Include a test case with a discount reason populated but the amount field deliberately left blank, to confirm your pre-submission validation catches BR-31 before the invoice reaches your ASP.

Related Rules

BR-33 (ibr-033) requires that the same document-level allowance also carries a reason or reason code. BR-41 (ibr-041) and BR-42 (ibr-042) apply the equivalent amount and reason requirements to invoice line-level allowances (IBG-27).