Rule at a Glance

ID Severity Context (XPath)
Series ref. BR-96 | Schematron ID: ibr-196-ae Fatal (error) cac:DeliveryTerms

Assert text: [ibr-196-ae]- The Incoterms (BTAE-22) must be provided.

Test: exists(cbc:ID)

Classification

Transaction Data. The rule fires only when the invoice already carries a cac:DeliveryTerms block; it governs what that block must contain, not whether delivery terms are mandatory on every invoice.

What the Rule Is Checking

Where an invoice includes a Delivery Terms group at all, it must state the Incoterms code (BTAE-22) in cbc:ID. An empty or absent cbc:ID inside a present DeliveryTerms block fails the document. A DeliveryTerms group is a UAE-specific addition on top of the base PINT model, used to record which party bears transport risk and cost at which point in the shipment — FOB, CIF, EXW, and the rest of the Incoterms 2020 set.

The rule does not force every invoice to declare delivery terms. Domestic service invoices with no shipment leg will simply omit the block, and this assertion never triggers.

Why This Rule Exists

Once a business chooses to state delivery terms — typically because the transaction involves cross-border goods movement — a half-populated block is worse than no block at all. An empty DeliveryTerms element signals to the receiver and to downstream customs and VAT logic that shipment terms were considered, without saying what they were. Since the Incoterm affects who is responsible for import VAT and duty at the border, an incomplete declaration here can misdirect the tax treatment applied on the buyer's side.

Requiring the code whenever the group appears keeps the field binary: either the invoice says nothing about delivery terms, or it says something specific and checkable against the Incoterms 2020 list.

UAE Data Example

PASSES ✓

<cac:DeliveryTerms>
  <cbc:ID>FOB</cbc:ID>
</cac:DeliveryTerms>

Free On Board declared explicitly for a cross-border shipment invoice.

FAILS ✗

<cac:DeliveryTerms>
  <cbc:SpecialTerms>Ex-works warehouse, Jebel Ali</cbc:SpecialTerms>
</cac:DeliveryTerms>

A DeliveryTerms block is present with descriptive text but no Incoterms code in cbc:ID. The document fails, because free text is not a substitute for the coded value.

What Your ERP / IT Team Must Ensure

  • Where the sales or shipping module captures Incoterms as a header or line attribute, map it into cac:DeliveryTerms/cbc:ID using the standard three-letter Incoterms 2020 code — not a free-text description of the delivery arrangement.
  • Suppress the entire DeliveryTerms block on invoices where no Incoterm is recorded, rather than emitting an empty group by default from the invoice template.
  • For businesses that trade both domestically and cross-border, condition the mapping on shipment type so domestic invoices are not forced to carry a meaningless Incoterms code just to satisfy this rule.
  • Validate that the code used is a real, current Incoterms 2020 term; a legacy or non-standard delivery term string will pass this existence check but create downstream reconciliation problems with customs data.

Related Rules