Rule at a Glance

ID Severity Context (XPath)
Series ref. BR-110 | Schematron ID: ibr-001-ae Fatal (error) cac:DiscrepancyResponse/cbc:ResponseCode

Assert text: [ibr-001-ae]-Credit note reason code [BTAE-03] value should be from the Reasons for credit note code list.

Test: ( ( not(contains(normalize-space(.),' ')) and contains( ' DL8.61.1.A DL8.61.1.B DL8.61.1.C DL8.61.1.D DL8.61.1.E VD ',concat(' ',normalize-space(.),' ') ) ) )

Classification

Master Data / Code List.

What the Rule Is Checking

Every UAE credit note carries a reason code in BTAE-03, drawn from a closed list of six values (five DL8.61.1 sub-codes plus VD). The rule confirms the value on the invoice is one of exactly these six single-token codes and nothing else — no free text, no local abbreviation, no lowercase variant.

Why This Rule Exists

A credit note reduces a previously reported tax position, and the authority needs to know why, in a form it can aggregate across every credit note in the economy rather than parse from narrative text. VD in particular flags a note issued for reasons unrelated to the original supply's tax treatment, which changes whether a preceding invoice reference is even expected (see ibr-055-ae) — so this code does more than classify, it routes the validation that follows it.

UAE Data Example

PASSES ✓

<cac:DiscrepancyResponse>
  <cbc:ResponseCode>DL8.61.1.A</cbc:ResponseCode>
</cac:DiscrepancyResponse>

FAILS ✗

<cac:DiscrepancyResponse>
  <cbc:ResponseCode>Goods returned</cbc:ResponseCode>
</cac:DiscrepancyResponse>

A free-text reason such as "Goods returned" reads correctly to a person and fails validation outright, because the field is coded, not narrative — the descriptive reason belongs elsewhere on the document, not in BTAE-03.

What Your ERP / IT Team Must Ensure

  • Map the credit note reason held in the ERP's return or adjustment record to one of the six DL8.61.1 sub-codes or VD — most ERPs store a free-text or internal reason code that needs an explicit lookup table, not a direct pass-through.
  • Treat VD as a distinct branch in the mapping logic, since it changes whether cac:BillingReference is required on the same document (ibr-055-ae).
  • Reject the transaction before transmission if no mapping exists for a given internal reason code, rather than defaulting to a placeholder value that happens to validate.
  • Train AP/AR staff who key manual credit notes on the six permitted codes, since manual entry is where free text is most likely to appear.

Related Rules