BankDebitMandateSetup
A bank-debit mandate in the making: the SetupIntent a buyer authorizes before the thing they are paying for exists.
Minted by createBankDebitMandateSetup when the buyer picks bank on a rail that cannot defer (Canadian pre-authorized debit). A SetupIntent is what makes the up-front mint harmless: it carries no amount, so a discount code applied afterwards cannot stale it; it creates no subscription and no payment row, so abandoning the sheet leaves nothing behind; and the mandate it collects is authorized for subscription use, so the membership's invoices bill against it without asking the buyer for their bank a second time.
Fields
idID!The SetupIntent id. Passed back to purchaseProduct as bankDebitMandate once the buyer has authorized it; the server re-reads it from Stripe rather than trusting the client that it succeeded.
clientSecretString!Client secret for Stripe.js. The Payment Element mounts against this instead of deferring, and is confirmed with confirmSetup.
stripeAccountIdID!The connected account the SetupIntent lives on. A PAD mandate names the merchant of record, which for a direct charge is the business — so the client must initialise Stripe.js for this account, and the mandate can never be reused on another one.
methodBankDebitMethod!The rail the mandate authorizes.