Flows
Payouts & Connect
Onboard a trader as a Stripe Connect payee, then pay out the trading profit they've earned. The payout amount is computed by the validator — it's an estimate you read, not an arbitrary amount the user requests.
How it works
- Create a Connect account → redirect the user to the Stripe onboarding link.
- Stripe sends them back to
/dashboard/payoutswhen done. - The API self-heals status from Stripe on the next list call (webhooks don't reach localhost).
- Read the estimated payout owed; transfer it once
payouts_enabledis true.
Create a Connect account
/v2/connect/accounts{ "country": "US" }{
"id": "con_...",
"stripe_account_id": "acct_...",
"onboarding_url": "https://connect.stripe.com/setup/...",
"status": "pending",
"payouts_enabled": false,
"charges_enabled": false,
"details_submitted": false
}Resuming onboarding
POST /v2/connect/accounts/{stripe_account_id}/onboarding-link.List Connect accounts
/v2/connect/accounts[
{
"id": "con_...",
"stripe_account_id": "acct_...",
"status": "active",
"payouts_enabled": true,
"charges_enabled": true,
"details_submitted": true,
"bank_name": "STRIPE TEST BANK",
"last4": "6789",
"country": "US"
}
]/v2/connect/accountsRuns live against your environment using the app's server-side credentials and your session. Sign in to the dashboard first for authenticated reads.
Estimated payout (read-only)
The amount owed is computed from realized trading profit via the validator's high-water-mark. Read it; don't invent it.
/v2/payouts/estimatecurl http://localhost:8000/v2/payouts/estimate \
-H "Authorization: Bearer <app_access_token>" \
-H "X-Session-Token: <user_session_token>" \
-H "X-Prop-Account: prop_..."{ "amount_usd": 412.50, "amount_cents": 41250, "currency": "usd", "available": true }/v2/payouts/estimateRuns live against your environment using the app's server-side credentials and your session. Sign in to the dashboard first for authenticated reads.
Payout history
/v2/payouts[
{
"id": "po_...",
"amount_cents": 41250,
"currency": "usd",
"status": "paid",
"stripe_transfer_id": "tr_...",
"failure_reason": null,
"requested_at": "2026-06-20T00:00:00Z",
"completed_at": "2026-06-20T00:00:05Z"
}
]/v2/payoutsRuns live against your environment using the app's server-side credentials and your session. Sign in to the dashboard first for authenticated reads.