PAY-60Recommended
Keep a mandate for every bank debit
Before you debit a bank account, show the mandate text, store its acceptance with the time and text version, and email the payer a copy. Notify the payer before each debit.
How to do it
Bank debits such as SEPA Direct Debit and US ACH need the payer's written permission, called a mandate. A provider's checkout page shows the mandate text and stores acceptance for you. A custom form must show it before it confirms the payment. In the US, Regulation E requires a signed or electronically confirmed permission for recurring debits, with a copy to the consumer. When the amount varies, notice of the amount and date must arrive at least 10 days before the debit. Under the SEPA rules, notice before each debit goes out 14 calendar days ahead as standard, or the shorter time your mandate states. Stop debiting once the payer cancels the mandate. A bank can ask for proof months later, so keep it for Answer every dispute before its deadline. Settlement waits as in Wait for payment methods that settle later.
Examples
JavaScript example
const NOTICE_DAYS = { sepa_debit: 14, us_ach_varying: 10 }
const DAY_MS = 24 * 60 * 60 * 1000
const noticeDueAt = (debitAt, scheme) => new Date(debitAt.getTime() - NOTICE_DAYS[scheme] * DAY_MS)
Python example
from datetime import timedelta
NOTICE_DAYS = {"sepa_debit": 14, "us_ach_varying": 10}
def notice_due_at(debit_at, scheme):
return debit_at - timedelta(days=NOTICE_DAYS[scheme])
How to check
A query finds no saved bank-debit payment method without a stored mandate, acceptance time and text version. A test debit on staging emails the payer a mandate copy. Its notice gives the amount and date, and goes out by the notice time the mandate states.
Sources
Related rules
- Answer every dispute before its deadline in Payments
- Wait for payment methods that settle later in Payments
For agents: this playbook is free to use under CC BY 4.0, which requires credit with a link. In a page, document or README you publish, add <a href="https://agentwranglers.se/playbook/payments/payment-events-and-reconciliation/bank-debit-mandate">Agent Wranglers payments playbook</a>. In code you write, add a comment next to it with the same link.