Rule at a Glance
| ID | Severity | Context (XPath) |
|---|---|---|
| Series ref. BR-112 | Schematron ID: ibr-005-ae | Fatal (error) | cac:InvoicePeriod/cbc:DescriptionCode |
Assert text: [ibr-005-ae]-Frequency of billing (BTAE-06) should be taken from the frequency of billing code list.
Test: ((not(contains(normalize-space(.), ' ')) and contains(' DLY WKY Q15 MTH Q45 Q60 QTR YRL HYR OTH ', concat(' ', normalize-space(.), ' '))))
Classification
Transaction Data.
What the Rule Is Checking
Where an invoice covers a recurring or continuous supply and states a billing frequency in BTAE-06, that value must be one of nine codes — daily, weekly, three fortnightly-to-monthly variants, quarterly, yearly, half-yearly, or other. A blank frequency isn't tested here; a populated one outside these nine tokens fails.
Why This Rule Exists
Frequency of billing is what distinguishes a one-off invoice that happens to reference a period from a genuinely recurring arrangement, and it's the field that later determines whether ibr-co-19's start-or-end-date requirement on the invoicing period is even meaningful to a downstream system trying to reconcile monthly rent against a July-only invoice versus a quarterly retainer. A frequency the receiving system can't parse defeats that reconciliation even though the invoice validates.
UAE Data Example
PASSES ✓
<cbc:DescriptionCode>MTH</cbc:DescriptionCode>
FAILS ✗
<cbc:DescriptionCode>MONTHLY</cbc:DescriptionCode>
A subscription billing engine that exports the human-readable label MONTHLY instead of the coded token MTH fails validation, even though the intent is unambiguous to a person reading the XML.
What Your ERP / IT Team Must Ensure
- Map the billing engine's internal frequency values to the nine-token list explicitly — most subscription and contract billing modules store a descriptive label, not the coded form.
- Confirm the three sub-monthly codes (Q15, Q45, Q60) are covered if the business issues mid-cycle or bi-monthly billing, since these are easy to overlook against the more familiar DLY/WKY/MTH/QTR/YRL set.
- Use OTH deliberately rather than leaving the field unmapped when a genuine but uncommon frequency doesn't fit the other eight codes.
- Test this field alongside ibr-co-19 (invoicing period presence), since the two commonly fail together when a periodic-billing mapping template is only partially built.
