Ensure you have a connected account with Treasury enabled and a `FinancialAccount` in `OPEN` state.
Create an OutboundPayment using the Stripe API with `financial_account`, `amount`, `currency`, and `destination_payment_method_data` parameters.
Pass bank details inline via `destination_payment_method_data`: set `type=us_bank_account`, then provide `us_bank_account[account_number]`, `us_bank_account[routing_number]`, `us_bank_account[account_holder_type]`, and `billing_details[name]`.
Alternatively, attach an existing PaymentMethod to the customer and pass its ID as `destination_payment_method` — this parameter is mutually exclusive with `destination_payment_method_data`.
Poll the OutboundPayment status or listen for `treasury.outbound_payment.*` webhooks to track transitions through `processing`, `posted`, and `failed` states.
Known gotchas
There is **no separate counterparty object** in Stripe Treasury for OutboundPayments — bank details are passed either inline via `destination_payment_method_data` or via an attached PaymentMethod; do not look for a 'counterparty create' step.
`destination_payment_method_data` and `destination_payment_method` are mutually exclusive — providing both in the same request returns a 400 error.
OutboundPayments sent via ACH are not instant; processing typically takes 1–3 business days and is subject to the connected account's Treasury risk controls.
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