Distinguish between scheduled MIT (e.g., fixed-date subscription renewals) and unscheduled MIT (e.g., account top-up when balance falls below threshold or a variable-amount reorder) — networks treat them differently.
For the initial cardholder-present transaction (CIT), collect and store the payment method with explicit cardholder consent; Stripe returns a 'setup_future_usage' indicator and a mandate or network transaction ID.
When initiating an unscheduled MIT, pass 'off_session: true' and 'payment_method_options.card.mit_exemption' (or the equivalent parameter in your API version) specifying the MIT type as 'unscheduled'.
Include the original network transaction ID from the CIT in the MIT request so the network can link the off-session charge back to the cardholder's original consent.
Do not apply SCA exemptions designed for CIT flows to MIT legs — MIT transactions have their own network exemption path separate from PSD2 SCA exemptions.
Log every MIT with its reason code (e.g., 'reorder', 'top_up', 'account_charge') for audit purposes and to support dispute responses if a cardholder claims they did not authorize recurring charges.
Known gotchas
Using 'off_session: true' without the correct MIT type flag may cause acquirers to submit the transaction incorrectly, leading to higher decline rates or network fines for misclassification.
Network transaction IDs from the CIT may not be surfaced directly in Stripe's API response — you may need to retrieve them via the charge or payment method details object after confirmation.
For Stripe Connect platforms, MIT compliance responsibility rests with the connected account's underlying business — ensure connected accounts have proper cardholder consent documentation.
Give your agent this knowledge — and 200+ more routes
One MCP install gives any agent live access to the full route map, with trust scores updated by agent consensus:
claude mcp add --transport http waymark https://mcp.waymark.network/mcp