Attestwire › Rule reference › BR-DE-25-a
BR-DE-25-a A direct debit code requires the direct debit details
noun · XRechnung · fatal · BG-19
For a sample invoice, the library reports: 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).
Diese Regel auf Deutsch: BR-DE-25-a — auf Deutsch erklärt.
- Business term
BG-19- Severity
fatal
The 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.
A passing value
"payment": { "meansCode": "59", "directDebit": { "mandateReference": "MANDAT-2026-01", "creditorIdentifier": "DE98ZZZ09999999999", "debitedAccount": "DE98700500001234567890" } }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.