Rule at a Glance
| ID | Severity | Context (XPath) |
|---|---|---|
| BR-24 | Fatal (error) | ubl:Invoice/cac:InvoiceLine / cac:CreditNoteLine |
| Schematron ID: ibr-024 | Field: IBT-131 (Invoice line net amount) | ||
Classification
Transaction Data — BR-24 validates that the cbc:LineExtensionAmount element is present on every invoice line. This element carries the line net amount: the value after any line-level discounts or charges but before VAT. It is the figure that feeds into the document-level tax base calculations and the invoice total arithmetic checked by later cross-field rules.
What the Rule Is Checking
BR-24 tests for the existence of the cbc:LineExtensionAmount element within each cac:InvoiceLine or cac:CreditNoteLine. The rule checks presence only — whether the element exists. A later arithmetic consistency rule (BR-CO-10) checks that the line net amount is mathematically consistent with the quantity, unit price, and any line-level allowances or charges. BR-24 must be satisfied before the arithmetic rules can even execute.
The cbc:LineExtensionAmount element carries a mandatory currencyID attribute identifying the invoice currency (IBT-005). A line net amount present without that attribute will fail a different rule; BR-24 itself is satisfied by the element's existence regardless of the attribute.
Why This Rule Exists
The line net amount is the document's arithmetic foundation. Document-level totals — taxable amounts by tax category, the invoice total without tax, VAT amounts — are derived by aggregating line net amounts. Without a value at line level, none of those aggregations can be validated for internal consistency. In the UAE's Corner 5 reporting model, the authority receives the full structured invoice and can recalculate every subtotal from first principles. An invoice missing a line net amount cannot be processed, reconciled against the buyer's records, or cross-matched with supplier reporting — the structural gap defeats the purpose of real-time data collection.
UAE Data Example
PASSES ✓ <cbc:LineExtensionAmount currencyID="AED">5000.00</cbc:LineExtensionAmount> <!-- Line net amount present, AED, consistent with unit price × quantity --> FAILS ✗ <cac:InvoiceLine> <cbc:ID>1</cbc:ID> <cbc:InvoicedQuantity unitCode="PCE">10</cbc:InvoicedQuantity> <!-- No cbc:LineExtensionAmount element — BR-24 fatal error --> ... </cac:InvoiceLine>
What Your ERP / IT Team Must Ensure
- Every invoice line in the UBL output must include a
cbc:LineExtensionAmountelement with acurrencyIDattribute matching the document currency (IBT-005). - The line net amount must reflect the post-discount, pre-VAT value. If your ERP stores gross line amounts and discount amounts separately, the XML generation layer must compute the net figure before writing the element — do not pass the gross amount through and rely on downstream processing.
- For zero-value lines (free goods, samples, informational lines), the element must still be present with a value of
0.00. Omitting the element entirely on zero-value lines is a common implementation gap. - Validate that the line net amount rounds correctly to the precision required by the invoice currency. AED uses two decimal places.
- Run arithmetic consistency checks between the line net amount and the document-level taxable amounts before submitting — BR-24 failure will surface during schema validation, but arithmetic inconsistencies surface at the cross-field rule stage and are harder to diagnose without pre-validation.
Related Rules
BR-22 (quantity) · BR-23 (unit code) · BR-25 (item name) · BR-CO-10 (line net amount arithmetic consistency)
