Link an external US bank account to the Treasury financial account via POST /v1/treasury/financial_accounts/{id}/features to enable inbound_transfers, then create a LinkedAccount using Stripe Financial Connections or by providing account and routing numbers directly.
Create the InboundTransfer via POST /v1/treasury/inbound_transfers specifying financial_account, amount, currency (usd), origin_payment_method (the linked bank account payment method ID), and a description.
The InboundTransfer initiates a pull ACH debit from the external bank account; funds are not immediately available in the financial account — Stripe holds them until the ACH settles (typically 3–5 business days for first-time transfers, shorter for established accounts).
Monitor the treasury.inbound_transfer.succeeded and treasury.inbound_transfer.failed webhooks to update your internal funding state; a FAILED transfer means the ACH return code was received — inspect the failure_details.code for the specific return reason.
For faster funding, use Stripe Financial Connections with instant balance verification to reduce the hold period on the first transfer; subsequent transfers from verified accounts are typically faster.
Reconcile InboundTransfers by fetching GET /v1/treasury/transactions and filtering by the inbound_transfer flow type to see the matching ledger entries that credit the financial account balance.
Known gotchas
InboundTransfers are pull ACH debits — the external bank account owner must authorize the debit; pulling from an account without authorization creates a NACHA unauthorized return (R10 or similar), which counts against your unauthorized return rate.
There is no guaranteed same-day availability for InboundTransfer funds — plan Treasury account pre-funding schedules with sufficient lead time before large outbound disbursement runs.
If an InboundTransfer is returned (e.g., NSF or account closed), Stripe reverses the credit to the financial account; if OutboundPayments have already been initiated against those funds, your financial account may go negative — maintain a buffer balance to absorb returns.
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