BR-DE-31 The invoice carries a DIRECT DEBIT group (BG-19), so the debited account identifier (BT-91) must be present
The invoice carries a DIRECT DEBIT group (BG-19), so the debited account identifier (BT-91) must be present. It is the account the money will be taken from — the payer's IBAN, not yours. Under a direct debit the buyer does not act at all: they are told, on this document, which of their accounts you intend to draw on and under which mandate, and that disclosure is the only notice they get before the money moves.
This rule is implemented and its error payload below is real, but the long-form write-up — normative text, worked example, divergence note — is not written yet. Everything the library knows about this rule is on this page. Ask and we will prioritise it.
- Business term
BG-19 / BT-91- Severity
fatal
What the library returns
The exact object in result.errors when this rule fires.
Generated by running @attestwire/en16931, not transcribed:
{
"rule": "BR-DE-31",
"field": [
"BG-19",
"BT-91"
],
"severity": "fatal",
"message": "The invoice carries a DIRECT DEBIT group (BG-19), so the debited account identifier (BT-91) must be present. It is the account the money will be taken from — the payer's IBAN, not yours. Under a direct debit the buyer does not act at all: they are told, on this document, which of their accounts you intend to draw on and under which mandate, and that disclosure is the only notice they get before the money moves.",
"fix": "Set payment.directDebit.debitedAccount to the payer's IBAN, exactly as it appears on the signed mandate. If you do not hold it, you do not have a usable mandate, and the invoice should ask for a credit transfer instead (payment.meansCode \"58\" with payment.iban).",
"example": "\"directDebit\": { \"debitedAccount\": \"DE98700500001234567890\" }",
"xpath": "/ubl:Invoice/cac:PaymentMeans/cac:PaymentMandate/cac:PayerFinancialAccount/cbc:ID",
"docsUrl": "https://attestwire.com/rules/BR-DE-31"
}
xpath locates the element in the generated UBL document,
which is where a KoSIT or Peppol validator will report the same problem.
A passing value
"directDebit": { "debitedAccount": "DE98700500001234567890" }The fix
Set payment.directDebit.debitedAccount to the payer's IBAN, exactly as it appears on the signed mandate. If you do not hold it, you do not have a usable mandate, and the invoice should ask for a credit transfer instead (payment.meansCode "58" with payment.iban).