Attestwire › Rule reference › BR-DE-25-a
BR-DE-25-a A direct debit code requires the direct debit group
noun · XRechnung · fatal · BG-19
Your invoice was refused because it names SEPA direct debit as the payment method but the direct debit details are missing: the mandate reference, the creditor identifier and the account to be debited. In the standard this is group BG-19, with payment means code 59 in BT-81; BR-DE-25-a is the rule that requires it.
Diese Regel auf Deutsch: BR-DE-25-a — auf Deutsch erklärt.
- Business term
BG-19— Direct debit- Severity
fatal- Applies to
xrechnung-ubl, xrechnung-cii
The fix
Set payment.directDebit with mandateReference (BT-89), creditorIdentifier (BT-90, your SEPA creditor identifier) and debitedAccount (BT-91, the payer’s IBAN). If you want to be paid rather than to collect, use payment.meansCode "58" with payment.iban instead, even when a mandate exists: the mandate governs the collection, not the invoice.
What the rule requires
With payment means code 59, group BG-19 (direct debit) is mandatory, exactly once.
It carries three items: the mandate reference (BT-89), the creditor identifier (BT-90), required by BR-DE-30, and the debited account (BT-91), required by BR-DE-31.
The collection is matched against these three. Without them, the payer’s bank cannot tell whether the debit you are about to raise is covered by a mandate.
In this library the group is payment.directDebit.
Wenn BT-81 "Payment means type code" einen Schlüssel für Lastschriften enthält (59), muss genau BG-19 "DIRECT DEBIT" übermittelt werden.
A passing value
"payment": { "meansCode": "59", "directDebit": { "mandateReference": "MANDAT-2026-01", "creditorIdentifier": "DE98ZZZ09999999999", "debitedAccount": "DE98700500001234567890" } }Why it exists
The mandate is what makes the collection lawful rather than merely expected. An invoice that announces a direct debit but does not name the mandate asks for money without showing the right to ask for it.
What the library returns
The full error returned by @attestwire/en16931. It includes the rule ID,
affected field and suggested correction. Developers can use this object in their application:
{
"rule": "BR-DE-25-a",
"field": "BG-19",
"severity": "fatal",
"message": "The payment means type code (BT-81) is \"59\" (SEPA direct debit), so exactly one DIRECT DEBIT group (BG-19) must be present. BG-19 carries the mandate reference (BT-89), the bank assigned creditor identifier (BT-90, required by BR-DE-30) and the debited account (BT-91, required by BR-DE-31). Those three are what a collection is matched against: without them the buyer's bank cannot tell whether the debit you are about to raise is one they have authorised, and the mandate is what makes the collection lawful rather than merely expected.",
"fix": "Set payment.directDebit with mandateReference (BT-89), creditorIdentifier (BT-90, your SEPA Gläubiger-ID) and debitedAccount (BT-91, the payer's IBAN). If you are asking to be paid rather than collecting, use payment.meansCode \"58\" with payment.iban instead — that is what most invoices want even when a mandate exists, since the mandate governs the collection rather than the invoice.",
"example": "\"payment\": { \"meansCode\": \"59\", \"directDebit\": { \"mandateReference\": \"MANDAT-2026-01\", \"creditorIdentifier\": \"DE98ZZZ09999999999\", \"debitedAccount\": \"DE98700500001234567890\" } }",
"xpath": "/ubl:Invoice/cac:PaymentMeans/cac:PaymentMandate",
"docsUrl": "https://attestwire.com/rules/BR-DE-25-a"
}
xpath is always a UBL path. On a CII invoice, look for the
matching CII field instead.
How our check differs
We check that payment.directDebit is there. Its contents are checked separately: the creditor identifier by BR-DE-30, the debited account by BR-DE-31. XRechnung has no rule for the mandate reference itself; on the Peppol profile, PEPPOL-EN16931-R061 requires it.
See also: BR-DE-25-b — the other half: the transfer and card groups must be absent; BR-DE-30 — the creditor identifier; BR-DE-31 — the debited account.