Stripe Connect is the API that makes marketplace payments possible. It’s what lets a platform collect money from customers, take a fee, and pass the remainder to sellers, service providers, or other parties — all without manually transferring funds between accounts. If you’re building a marketplace, a booking platform, a service aggregator, or any platform where revenue is shared between your business and others, Connect is the product you need. And it always requires a custom build.
This post covers how Connect actually works, the account types and payment flows available, what connected account onboarding involves, and how to handle the operational complexity that comes with multi-party payments.
What Stripe Connect actually does
Connect creates relationships between your platform’s Stripe account (the platform account) and other Stripe accounts (connected accounts). These connected accounts represent the businesses or individuals on your platform who need to receive money — your sellers, service providers, freelancers, or venue operators.
When a payment is made on your platform, Stripe can automatically split it according to rules you define: your platform takes a fee, the service provider receives the remainder, and the accounting happens at the Stripe level. No manual transfers. No spreadsheets. No ACH payments or bank transfers that take three days to clear.
The separation between your platform account and connected accounts also gives you flexibility around whose name appears on the customer’s bank statement, who owns the customer relationship in Stripe’s eyes, and who is responsible for disputes and refunds.
The three connected account types
Choosing the right account type is one of the most consequential decisions in a Connect integration. It affects onboarding UX, compliance responsibility, payout control and how much your connected accounts interact with Stripe directly.
Standard accounts are existing Stripe accounts that connect to your platform. The account owner has a full Stripe dashboard, manages their own payouts, and is responsible for their own compliance. Your platform has limited control — you can charge on behalf of them and access their data, but you can’t control when they get paid or customise their Stripe experience. Standard accounts are appropriate when your service providers are businesses who already use Stripe or who need full Stripe functionality. The onboarding flow is a straightforward OAuth connection.
Express accounts are created by your platform but accessed by connected account holders through a Stripe-hosted Express dashboard. Stripe handles KYC and identity verification. Connected account holders can see their payouts and transaction history, but don’t have access to a full Stripe account. Your platform has more control than with Standard accounts — you can customise payout timing and configure what the connected account can see. Express is the right choice for most marketplaces and gig economy platforms. Onboarding is via a Stripe-hosted flow you initiate by generating an account link.
Custom accounts are entirely under your platform’s control. Connected account holders may not know Stripe is involved at all. Your platform is responsible for the onboarding UX, identity verification (which Stripe still performs, but you collect the data), and all communication about their account. You have full control over payout timing and account configuration. Custom accounts are used when you need to white-label the payment experience completely. The trade-off is significantly more compliance responsibility — your platform takes on payment facilitator obligations that Express and Standard offload to Stripe.
The three payment flow types
Once connected accounts are in place, how payments are routed matters — both for compliance and for how transactions appear to customers.
Destination charges are the most common pattern for marketplaces. A charge is made on your platform account, and Stripe automatically transfers the specified amount to the connected account at the time of the charge. Your platform retains the difference as its fee. The charge appears on the customer’s bank statement under your platform’s name. The platform is the merchant of record. This is the simplest pattern and appropriate for most marketplace flows where the platform owns the customer relationship.
Direct charges are made on the connected account rather than the platform account. The platform charges an application fee that Stripe deducts from the payment before it reaches the connected account. The transaction appears on the customer’s bank statement under the connected account’s name. The connected account is the merchant of record. This is appropriate when your connected accounts are independent businesses who need to own their customer relationships — for regulatory, contractual, or branding reasons.
Separate charges and transfers decouple payment collection from fund distribution. The charge is made to your platform, and transfers to connected accounts are made independently — potentially at different times, in different amounts, or to multiple connected accounts from a single charge. This is the most flexible pattern and handles complex scenarios: a booking platform that collects payment upfront but transfers only after service delivery; a commission split between a venue and a performer; a platform that holds funds during a dispute period before releasing them to the seller.
Connected account onboarding
Before a connected account can receive payments, Stripe requires identity verification and collection of business information. For Express and Custom accounts, this is triggered by generating an account link via the API and redirecting the connected account holder to that URL.
For Express accounts, Stripe handles the entire onboarding experience on their hosted pages. Your integration generates the link, the user completes verification, and Stripe redirects back to your platform when done. For Custom accounts, your platform collects the information and passes it to Stripe via the API — name, address, date of birth, business type, bank account details and any documents required for verification.
Stripe’s verification requirements vary by country and account type. UK accounts require date of birth and the last four digits of a government ID (or full document for certain verification levels). Business accounts require company registration details. The requirements are well-documented but can change — Stripe may request additional verification for higher-risk accounts or transaction volumes.
The account.updated webhook event fires when a connected account’s verification status changes. Your integration needs to handle this event — detecting when an account has completed onboarding and is ready to receive payments, and when Stripe has identified a verification issue that needs resolution. Surfacing this status to your connected account holders — “Your account needs additional verification before you can receive payouts” — is an important part of the onboarding UX that’s easy to overlook until a service provider can’t get paid.
Platform fees
Stripe Connect gives you multiple ways to take a platform fee. The simplest is specifying the application_fee_amount on a direct charge or the transfer_amount on a destination charge — the difference between what the customer pays and what the connected account receives is your fee.
For percentage-based fees, your integration calculates the fee amount based on the charge amount and passes it to Stripe. For tiered or complex fee structures — lower fees for high-volume sellers, category-based fees, or promotional fee periods — the calculation logic lives in your application, not in Stripe. Stripe doesn’t enforce fee structures; it collects whatever you tell it to.
Platform fees are retained on your platform account. They’re subject to Stripe’s standard processing fees on top of the transaction, so model your fee structure with Stripe’s fees in mind.
Payout scheduling and timing
For Standard accounts, payout timing is controlled by the connected account holder. For Express and Custom accounts, the platform can configure it. The default is typically daily automatic payouts once an account is verified.
Holding funds before payout is a common requirement for platforms with dispute or delivery risk. A booking platform might hold funds for 48 hours after service delivery before releasing them to the service provider. A physical goods marketplace might hold funds until the buyer confirms receipt. This is implemented through manual payout control on Custom accounts or by using transfers with delayed timing on Express accounts.
Stripe’s reserve and hold functionality also allows platforms to retain a percentage of payouts as a rolling reserve for dispute coverage — relevant for platforms with higher chargeback rates.
Disputes and refunds
Disputes on Connect transactions are more operationally complex than on standard charges because funds may already have been transferred to a connected account. When a dispute is filed, Stripe debits the platform account for the full amount plus the dispute fee. Your platform then needs to decide how to handle recovery: absorb the cost, deduct it from the connected account’s future payouts, or recover it from their existing balance.
For destination charges, the platform is responsible for the dispute — the connected account isn’t automatically debited. For direct charges, the dispute is the connected account’s responsibility, but the platform may need to coordinate the response.
Your integration needs a clear dispute policy, the mechanism to implement it (deducting from connected account balances or future transfers), and the webhook handling to detect disputes as they occur. The charge.dispute.created event triggers your dispute workflow.
Compliance and legal considerations
Using Connect as a payment facilitator means your platform takes on regulatory obligations beyond what a standard Stripe integration involves. Know Your Customer requirements, anti-money laundering rules and payment facilitator regulations all apply. The level of obligation varies by account type — Custom accounts take on the most, Express accounts offload most KYC to Stripe, Standard accounts are the lightest obligation.
Stripe’s Terms of Service require that you disclose to your connected account holders that Stripe processes payments on your behalf. For Express accounts, Stripe’s own terms cover this. For Custom accounts, your platform’s terms of service need to include appropriate disclosures.
For UK platforms, FCA payment facilitator regulations may apply depending on how your platform handles funds. This is worth reviewing with a specialist before launching a Connect integration at scale.
For what a Stripe Connect integration costs and how it compares to the other Stripe tiers, see the Stripe API integration service and the integration cost post. You can watch live Stripe webhook events — including the account events that fire during Connect onboarding — in the webhook event viewer demo. For the webhook handling that Connect depends on, see Stripe webhook integration.
Related posts
Need a custom integration built?
I build custom API integrations — Stripe, Companies House and bespoke data pipelines. Reliable, well-documented, no agency overhead.
Discuss your project →
