Skip to content

PEPPOL-EN16931-R061: Mandate reference (BT-89) missing for direct debit

Official message

[PEPPOL-EN16931-R061] Mandate reference MUST be provided for direct debit.

XRechnung (CII) · Error · Message language: English · Version: xrechnung-3.0.2-validator-configuration-2026-08-31

[PEPPOL-EN16931-R061] Mandate reference MUST be provided for direct debit.

XRechnung (UBL) · Error · Message language: English · Version: xrechnung-3.0.2-validator-configuration-2026-08-31
Severity
Error The invoice is invalid and may be rejected by the recipient.
Applies to
XRechnung (CII), XRechnung (UBL)

What does this mean?

Mandate reference MUST be provided for direct debit: if the payment means type code (BT-81) is a direct debit, i.e. 49 (direct debit) or 59 (SEPA direct debit), the mandate reference identifier (BT-89) must be provided. It is missing.
The rule originates from Peppol BIS Billing 3.0 and is applied in the XRechnung validation. CII: ram:SpecifiedTradePaymentTerms/ram:DirectDebitMandateID, UBL: cac:PaymentMeans/cac:PaymentMandate/cbc:ID.

Typical causes

The mandate reference was only mentioned in the remittance information or in the payment terms.
A direct debit was selected as payment means by mistake instead of a credit transfer (e.g. 58).

How to fix the error

State the mandate reference of the direct debit mandate in BT-89. The direct debit group (BG-19) also contains the bank assigned creditor identifier (BT-90) and the debited account identifier (BT-91).
If no direct debit is intended, state the applicable payment means in BT-81.
Generate and validate the invoice again.

In E-Rechnungsfreund

In the invoice form, "Experte" view, section "Zahlungsinformationen / SEPA" (payment information), fill in the field "Mandatsreferenz SEPA (BT-89)" (mandate reference). If no direct debit is meant, choose another "Zahlungscode (BT-81)" (payment means code) in section "Zahlungsmittel (BG-16)" (payment means).

Example

Wrong

<ram:SpecifiedTradeSettlementPaymentMeans>
  <ram:TypeCode>59</ram:TypeCode>
  ...
</ram:SpecifiedTradeSettlementPaymentMeans>
...
<ram:SpecifiedTradePaymentTerms>
  <ram:DueDateDateTime>
    <udt:DateTimeString format="102">20260215</udt:DateTimeString>
  </ram:DueDateDateTime>
</ram:SpecifiedTradePaymentTerms>

Correct

<ram:SpecifiedTradeSettlementPaymentMeans>
  <ram:TypeCode>59</ram:TypeCode>
  ...
</ram:SpecifiedTradeSettlementPaymentMeans>
...
<ram:SpecifiedTradePaymentTerms>
  <ram:DueDateDateTime>
    <udt:DateTimeString format="102">20260215</udt:DateTimeString>
  </ram:DueDateDateTime>
  <ram:DirectDebitMandateID>MANDATE-2026-001</ram:DirectDebitMandateID>
</ram:SpecifiedTradePaymentTerms>
For developers: test expression per syntax

XRechnung (CII) (CII)

Context: ram:SpecifiedTradeSettlementPaymentMeans[some $code in tokenize('49 59', '\s') satisfies normalize-space(ram:TypeCode) = $code]

../ram:SpecifiedTradePaymentTerms/ram:DirectDebitMandateID

XRechnung (UBL) (UBL)

Context: cac:PaymentMeans[some $code in tokenize('49 59', '\s') satisfies normalize-space(cbc:PaymentMeansCode) = $code]

cac:PaymentMandate/cbc:ID

Related validation rules

Last updated:
Explanation of the validation rule, not legal or tax advice.