Rule at a Glance

ID Severity Context (XPath)
Series ref. BR-52 Fatal (error) /ubl:Invoice | /cn:CreditNote
Schematron ID: ibr-067  |  Field: cac:PaymentMeans/cac:PaymentMandate (Direct Debit, IBG-19)

Classification

Syntax & Integration — like its card-account sibling, this is a document-level cardinality constraint that UBL syntax does not enforce on its own. The schematron layer is the only thing standing between a loop in the extract and a rejected invoice.

What the Rule Is Checking

The assert reads: "An Invoice MUST contain maximum one Payment Mandate (ibg-19)." The direct debit group carries the mandate reference and the debited account. However many cac:PaymentMeans blocks the invoice offers, at most one may contain a cac:PaymentMandate; a second mandate anywhere in the document fails validation with a fatal error.

Why This Rule Exists

A direct debit instruction on an invoice asserts that this specific amount will be collected under this specific mandate from this specific account. Two mandates on one invoice would make the collection instruction ambiguous — which authorisation covers the debit, and against which account — and ambiguity in a pull-payment instruction is a dispute waiting to happen. The rule keeps the invoice's payment story singular so the buyer's bank reconciliation and the seller's collections process read the same fact.

Standard / Code List

Direct debit is signalled through the payment means code (UNCL4461 code 49), covered in UNCL4461 Payment Means Codes in PINT-AE. The mandate group is only relevant when that code is used; most UAE B2B invoices settle by transfer and never populate it.

UAE Data Example

PASSES ✓: A subscription invoice with one cac:PaymentMeans carrying code 49 and a single cac:PaymentMandate holding the mandate reference agreed with the customer.

FAILS ✗: A billing engine that stores one mandate row per instalment plan, or per bank account on file, and emits a cac:PaymentMandate for each row. Structurally valid UBL, fatally invalid PINT-AE.

What Your ERP / IT Team Must Ensure

Source the mandate from the invoice's payment terms, selecting exactly one active mandate reference at extract time. Where a customer holds multiple mandates, the selection logic belongs in the billing engine, before XML generation — a validator rejection is the wrong place to discover the tie-break was never designed. Utilities, telecoms, insurance and any recurring-billing flow are the natural test candidates, since those are the businesses where direct debit data exists at all.

Related Rules

The parallel constraint for card payments is BR-51 (ibr-066). Both rules share the same failure mechanics: an extract loop over payment records that the UBL schema will not catch.