Sellers are paid through Stripe Connect on the marketplace’s Stripe account. A seller sets up payouts once, inside your shop, with Stripe’s embedded onboarding form. Until they do, sales still happen; the payout waits.
Check where they are
Section titled “Check where they are”GET /v1/me/payoutsThe answer has status:
status |
Show |
|---|---|
none |
“Set up payouts”. |
action_required |
“Finish setting up payouts”. due lists what Stripe still needs. |
pending |
“Stripe is checking your details”. |
ready |
Nothing to do: they’ll be paid. |
Run the onboarding form
Section titled “Run the onboarding form”-
Ask whether they sell as a private person or a company, and where they live.
-
Start the session from your server:
POST /v1/me/payouts/session{ "country": "SE", "business_type": "individual" }The answer has a
client_secret.countryandbusiness_typeare used the first time only. -
Show Stripe’s account onboarding component with it, asking only for what’s needed now:
import { loadConnectAndInitialize } from '@stripe/connect-js'const connect = loadConnectAndInitialize({publishableKey: STRIPE_PUBLISHABLE_KEY,fetchClientSecret: async () => (await startPayoutSetup()).client_secret, // your server calls POST /v1/me/payouts/session})const onboarding = connect.create('account-onboarding')onboarding.setCollectionOptions({ fields: 'currently_due', futureRequirements: 'omit' })onboarding.setOnExit(() => refreshPayoutStatus())document.querySelector('#payouts')?.append(onboarding) -
When they leave the form, read
GET /v1/me/payoutsagain.
When sellers are paid
Section titled “When sellers are paid”- An order’s
payoutshows the seller’s side:subtotal,commission,storage_feeandamount. - It’s
pendinguntil the buyer has the listing (received), thenpaid. waiting_for_payout_detailsmeans the sale is done but the seller hasn’t finished setting up payouts. It’s paid as soon as they do.held_for_chargebackmeans the buyer’s bank disputed the payment. The marketplace’s team handles it.