Rule at a Glance

ID Severity Context (XPath)
Series ref. BR-84 Fatal (error) /ubl:Invoice | /cn:CreditNote (test scans //cac:TaxCategory)
Schematron ID: ibr-190-ae  |  Fields: ibt-152, ibt-096, ibt-103 — Invoiced item VAT rate, Document level allowance VAT rate, Document level charge VAT rate

Classification

Transaction Data — a value constraint tying a tax category code to the one numeric rate UAE law permits for it.

What the Rule Is Checking

The assert reads not(//cac:TaxCategory/cbc:ID = "S") or //cac:TaxCategory[cbc:ID = "S"]/cbc:Percent = 5.00. Wherever a VAT category code is "S" (Standard rated), the accompanying percentage must be numerically equal to 5. The comparison is numeric rather than textual, so 5, 5.0 and 5.00 all satisfy it, while 5.25 or 5.5 fails fatally.

A scoping point matters more here than the arithmetic. The assert scans cac:TaxCategory, which is the element the VAT breakdown and the document-level allowance and charge blocks use. An invoice line carries its code in cac:Item/cac:ClassifiedTaxCategory — a different element name that this XPath does not select, even though the rule's own message text names the invoiced item VAT rate (ibt-152). A wrong rate sitting only on a line therefore clears ibr-190-ae, so a clean report on this rule is not evidence that line-level tax coding is right.

Why This Rule Exists

UAE VAT has one standard rate, set at 5% by the VAT Decree-Law, and Guidelines V1.1 carries it into the worked sample invoice, where the standard-rated line shows a tax rate of 5.00. There is no tiered band and no invoice-level discretion to apply a different percentage under the "Standard rated" label, so the schematron fixes the value at the syntax layer rather than leaving it to downstream reconciliation.

The practical risk this closes is a stale tax code in an ERP tax determination table. A business that migrated pricing data from a legacy system, or inherited a customised tax procedure years ago, can carry a standard-rate condition at 5.25% — a mis-keyed entry that stays invisible through years of printed invoices and surfaces the first time an ASP validates the document.

Standard / Code List

The permitted VAT category codes are fixed by the Aligned-TaxCategoryCodes list shipped with the PINT-AE package: S (Standard rate), E (Exempt from tax), O (Services outside scope of tax / not subject to tax), AE (VAT Reverse Charge), Z (Zero rated) and N (Standard rate additional VAT), of which ibr-190-ae reaches only S. A companion rule, ibr-119-ae, requires every VAT breakdown to carry a category rate except where the invoice is not subject to VAT.

UAE Data Example

PASSES ✓ — a standard-rated VAT breakdown at the correct rate:

<cac:TaxSubtotal>
  <cac:TaxCategory>
    <cbc:ID>S</cbc:ID>
    <cbc:Percent>5.00</cbc:Percent>
    <cac:TaxScheme><cbc:ID>VAT</cbc:ID></cac:TaxScheme>
  </cac:TaxCategory>
</cac:TaxSubtotal>

FAILS ✗ — a legacy tax code carried through unchanged:

<cac:TaxSubtotal>
  <cac:TaxCategory>
    <cbc:ID>S</cbc:ID>
    <cbc:Percent>5.5</cbc:Percent>
    <cac:TaxScheme><cbc:ID>VAT</cbc:ID></cac:TaxScheme>
  </cac:TaxCategory>
</cac:TaxSubtotal>

What Your ERP / IT Team Must Ensure

  • Audit every tax determination rule mapped to the standard-rate condition code and confirm the stored percentage is exactly 5.00, not a rounded or truncated variant.
  • Treat this as a value check rather than a formatting one: the assert compares numerically, so 5.0 clears it, and standardising the payload on two decimal places serves presentational consistency rather than ibr-190-ae.
  • Extend the check across the VAT breakdown and both document-level allowance and charge blocks, since each carries its own category and rate pair. Check invoice lines separately, because a wrong line rate still breaks the totals it rolls into.
  • Flag any manually keyed invoice line where a user can override the tax rate field, and lock that field for standard-rated transactions.

Related Rules

ibr-119-ae requires a VAT category rate on every VAT breakdown except where the invoice is not subject to VAT. ibr-105-ae requires exactly one VAT breakdown group coded N where any invoice line uses N. ibr-122-ae restricts the permitted category codes when the invoice type code is 81 (out of scope of VAT) or 480 (credit note related to goods or services). ibr-116-ae requires category code N where the transaction type code indicates a margin scheme supply.