Rule at a Glance

ID Severity Context (XPath)
Series ref. BR-69 Fatal (error) cac:InvoiceLine/cac:InvoicePeriod | cac:CreditNoteLine/cac:InvoicePeriod
Schematron ID: ibr-086  |  Field: ibt-135 — Invoice line period end date, within ibg-14

Classification

Contextual — the rule tests one date in the document against another date in the same document, so no code list or format library will catch a breach of it.

What the Rule Is Checking

Where an invoice line carries its own billing period, the end date of that line period must fall on or before the end date of the document-level invoice period. The schematron casts both values to xs:date and compares them, and it passes the test where either date is absent. A line may therefore carry no period at all, and a document may carry no period at all, without tripping the rule.

This is the mirror of the start-date constraint that sits immediately above it in the schematron. Together the pair enforce containment: every line period must sit wholly inside the document period.

Why This Rule Exists

The invoice period is what fixes the tax point on a continuous supply. A lease, a maintenance retainer, a telecoms account or a SaaS subscription is not invoiced for an event on a date; it is invoiced for a span of time, and that span determines which VAT return the output tax belongs in. Where a line claims to run past the end of the document period, the invoice asserts two different answers to the question of when the supply occurred.

The UAE profile raises the stakes because it makes the invoicing period mandatory for summary invoices. Rule ibr-138-ae requires that where the transaction type code marks the document as a summary invoice, cac:InvoicePeriod must be present at document level. Summary invoicing is precisely the pattern that aggregates many line-level periods into one document, so the documents most likely to carry line periods are the same documents where the header period is compulsory and the containment test will always run.

The failure clusters at period close. A billing run executed on the last day of a quarter, picking up a subscription line that has already been extended into the next month, produces a line period ending after the header period ends. The line is commercially correct and the document is structurally invalid.

Standard / Code List

Not applicable. Dates use the ISO 8601 YYYY-MM-DD form required throughout the profile.

UAE Data Example

PASSES ✓: Document period 2027-04-01 to 2027-06-30 on a summary invoice, with line periods of 2027-04-01 to 2027-04-30, 2027-05-01 to 2027-05-31 and 2027-06-01 to 2027-06-30.

PASSES ✓: Document period 2027-04-01 to 2027-06-30 with a line period of 2027-05-15 to 2027-06-14 for a service billed on an anniversary cycle.

FAILS ✗: Document period 2027-04-01 to 2027-06-30 with a line period of 2027-06-01 to 2027-07-31, created when a customer prepaid an extra month and the billing clerk extended the line rather than raising a separate document.

What Your ERP / IT Team Must Ensure

  • Derive the document-level period end as the latest line period end in the document, rather than defaulting it to the billing-run date or the accounting period end.
  • Validate containment at document creation, not at transmission. A rejection returned by the Accredited Service Provider after the invoice has been posted is an accounting correction, not a data-entry fix.
  • Handle prepayment and mid-cycle extensions by issuing a separate document for the out-of-range span.
  • Include the summary-invoice scenario in test packs specifically, since ibr-138-ae forces the header period to exist there and the containment test will run on every line.
  • Check the credit-note path as well as the invoice path. The rule context covers cac:CreditNoteLine/cac:InvoicePeriod on identical terms.

Related Rules

The start-date containment rule for ibt-134 is the direct companion and will usually fail alongside this one where header period derivation is wrong. UAE rule ibr-138-ae governs when the document-level period must exist at all, and ibr-160-ae requires a note where the billing frequency is recorded as 'Others'. A billing engine that treats the invoice period as a display field rather than a derived one will trip all four.