Charge the buyer via a PaymentIntent on the platform account without immediately creating a transfer; assign a unique transfer_group (e.g., order_id) to the PaymentIntent to group all future transfers for this order
Store the PaymentIntent or Charge id and the transfer_group in your database; the funds sit in the platform's Stripe balance until you explicitly create transfers
Implement a business event trigger (e.g., buyer confirms delivery, service completion, escrow release timer) that initiates the transfer to the seller's connected account via POST /v1/transfers with transfer_group matching the order
Optionally retain a portion of the charge amount as the platform fee before transferring the remainder to the seller; calculate the transfer amount as gross charge minus platform fee minus any applicable Stripe fees
If the buyer disputes or requests a refund before the transfer is created, refund the charge directly from platform balance without needing to claw back any transfer — this is the key advantage of delayed transfers over immediate destination charges
Set a maximum hold window aligned with your platform's dispute and refund policy; avoid holding funds indefinitely as Stripe's terms of service and payment network rules may impose limits on how long platform balance can be held before disbursement
Known gotchas
Stripe's balance is not an escrow account in a legal sense — funds in your platform balance are commingled and not ring-fenced per customer; consult legal counsel if your use case requires true third-party escrow with regulatory protections
There is no Stripe-native expiry or automatic release for delayed transfers — you must build your own release logic, deadline enforcement, and dispute resolution workflow; a bug in this logic can leave seller funds stuck or released prematurely
Holding large buyer funds in the platform balance for extended periods may trigger Stripe's risk monitoring; Stripe may request information about your business model or place a reserve on your account — communicate your marketplace model to Stripe proactively and review their policies on fund holding
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