When a PaymentIntent with payment_method_types=['us_bank_account'] is confirmed, it immediately enters 'processing' status; listen for payment_intent.created and payment_intent.processing webhook events
ACH Direct Debit is a delayed-notification payment method; the PaymentIntent stays in 'processing' for up to 4 business days while the ACH network processes the debit
On successful settlement, receive the payment_intent.succeeded webhook; the PaymentIntent status transitions to 'succeeded' and the charge.succeeded event also fires
On failure (e.g., bank returns the debit), receive the payment_intent.payment_failed webhook; inspect last_payment_error.code and decline_code to categorize the failure
For returned debits after initial success (rare late returns), handle the charge.dispute.created event if the payment was disputed, or charge.refunded if Stripe processes it as a return
Implement idempotent webhook processing; store PaymentIntent IDs and track processed event IDs to avoid double-fulfillment on retry deliveries
Known gotchas
Do not provision services or ship goods on payment_intent.processing alone; always wait for payment_intent.succeeded before treating the payment as complete
ACH settlement timing varies; 1–4 business days is typical but weekends and federal banking holidays extend the window — plan customer communication accordingly
Stripe webhook delivery is at-least-once; your handler must be idempotent — use the PaymentIntent status as the source of truth, not the order of webhook events received
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