We've built payment flows into three separate products over the past 18 months — two of them using Stripe Connect. Here's an honest technical breakdown of what Connect actually involves and when it's worth the complexity.
What Stripe Connect is for
Stripe's core product handles one-to-one payments: customer pays your business. Connect is for platforms where money flows through you to someone else — a marketplace paying sellers, a SaaS platform billing on behalf of clients, a service platform paying contractors.
If your platform collects money from customers and needs to route a portion to another business or individual, Connect is almost certainly the right tool. Building this yourself on top of a basic payment processor is possible but involves regulatory exposure around money transmission that most small teams shouldn't take on.
The three Connect account types
This is where most developers get tripped up. Connect has three distinct account models:
Standard — the connected account is fully visible to Stripe. The seller/contractor goes through Stripe's full onboarding, has their own Stripe dashboard, and Stripe handles compliance. Your platform has limited control. Best for marketplaces where connected accounts are real businesses.
Express — Stripe handles onboarding via a hosted flow, but your platform has more control over the experience. Connected accounts have a limited Stripe dashboard. This is what we used for our local service platforms and it's the right default for most use cases.
Custom — you fully control the UI and onboarding experience. Stripe is invisible to the end user. Maximum flexibility, maximum compliance responsibility. Only appropriate if you have legal counsel and a significant engineering team.
The webhook problem
This is the thing that costs the most debugging time: webhooks in Connect fire at two levels — your platform account and the connected account — and they don't always fire in the order you expect.
A payment intent created on a connected account fires payment_intent.succeeded on the connected account webhook, not your platform webhook, unless you've explicitly registered platform-level event listening. We spent three days debugging a cross-site webhook conflict caused by exactly this before adding source metadata guard clauses to every handler.
Practical rule: every webhook handler should immediately check event.account and event.data.object.metadata before doing anything else. Reject events that don't match the expected source.
Tax forms and 1099s
Stripe Connect platforms are responsible for 1099-K and/or 1099-NEC filing for connected accounts above IRS thresholds. Stripe has tooling for this but it requires that your onboarding collected the connected account's TIN at setup.
If you skipped TIN collection during onboarding, retroactively collecting it is painful. Build it into your Express onboarding from day one.
When NOT to use Connect
If you're just collecting payments for your own business and want to offer white-label billing on behalf of clients, Connect is overkill. Use a standard Stripe account with multiple products and price IDs, one per client.
Connect only makes sense when money actually needs to flow to a third party who is not your business.
Bottom line
Stripe Connect is the right tool for multi-party payment platforms, and Express accounts are the right starting point for most use cases. Budget 2–3x more development time than you think the payment layer will take. The happy path is simple; the edge cases are where the real engineering work lives.