Create a PaymentIntent on the platform account with on_behalf_of set to the connected account id and transfer_data.destination set to the same connected account id
Set transfer_data.amount to specify the portion of the payment to route to the connected account after Stripe fees — omit it to transfer the full amount minus Stripe fees
Set the statement_descriptor or statement_descriptor_suffix; with on_behalf_of the connected account's statement descriptor is used by default for the charge
Confirm the PaymentIntent; Stripe creates a charge on the platform account and immediately creates a transfer to the destination connected account
Retrieve the resulting charge and inspect transfer and on_behalf_of fields to confirm the fund routing; the charge appears on the connected account's balance
Handle refunds via POST /v1/refunds on the original charge — refunds on destination charges reverse the associated transfer automatically; verify refund_application_fee and reverse_transfer behavior in docs
Known gotchas
With on_behalf_of, liability and dispute responsibility shift to the connected account — this affects which Stripe fee schedule applies and which party absorbs dispute fees; confirm with current pricing docs
The currency of transfer_data.amount must match the charge currency; if the connected account settles in a different currency, Stripe handles FX but you lose the exact amount control — check cross-currency destination charge behavior in docs
Refunding a destination charge does not automatically refund any application_fee_amount captured; you must separately issue a fee refund via the application fee refund endpoint if you want to return the application fee to the customer
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