Stripe Connect in a Lovable app: pay sellers
Lovable can take payments into one Stripe account. A marketplace has to take money from buyers and pay it out to sellers. That second half is Stripe Connect, and this is what it asks of your app.
Updated November 6, 2026: First published.

As of November 6, 2026, Lovable's own Stripe integration connects one Stripe account that you own, and its documentation does not mention Stripe Connect, marketplaces or paying out to other people. If your app needs to pay sellers, hosts or creators, you build Stripe Connect yourself, in server functions, on top of what Lovable sets up.
Stripe describes Connect as its solution for multi-party businesses, such as marketplaces and software platforms, that route payments between sellers, customers and other recipients. Each seller gets a connected account, and your platform decides how money flows through it.
This guide covers what Lovable gives you, the choices Connect asks you to make, and the onboarding, payout and webhook work a marketplace needs before real money moves. Every fact about Lovable and Stripe comes from their own documentation, listed under Sources at the end. If you only sell your own product, our guide to the Lovable Stripe integration is the one you want.
Does Lovable's Stripe integration support Stripe Connect?
Not directly. Lovable's documentation describes a single Stripe account you own, with payments going to that account. It says business verification, payouts, taxes and disputes all happen in Stripe, and its Payments view is read-only. Nothing in it creates connected accounts, onboards sellers or splits a payment.
What it does give you is a useful base, according to its documentation:
- A restricted or secret Stripe key stored as a backend secret, so server functions can call the Stripe API. Publishable keys are not accepted.
- One-time checkout through Stripe Checkout, and subscriptions matched to users by email address.
- A backend on Lovable Cloud or your own Supabase project, which is where Connect code has to live.
- No webhooks by default. You can ask Lovable to set them up, then finish the setup in the Stripe dashboard and store the signing secret yourself.
So the practical route is to connect your platform's Stripe account through Lovable, then add Connect on top: server functions that create connected accounts, send sellers to onboarding, create charges that route money to them and listen for Connect events. You can prompt Lovable for each piece, but each piece needs checking, because the money now belongs to other people.
Which connected account setup should a Lovable marketplace use?
For a new platform, start with Stripe's current guidance rather than the old account types. Stripe now marks Standard, Express and Custom as legacy, recommends controller properties instead, and points new platforms to its interactive platform guide. The old types are still a clear way to see the trade-offs, which carry over to controller properties:
| Standard | Express | Custom | |
|---|---|---|---|
| Integration effort | Lowest | Low | Significantly higher |
| Onboarding and identity checks | Stripe | Stripe | Platform or Stripe |
| Seller's dashboard | Full Stripe Dashboard | Express Dashboard | None |
| Fraud and dispute liability | Seller for direct charges, platform for destination charges | Platform | Platform |
| Charge types | Direct only | Destination, separate charges and transfers, direct | Destination, separate charges and transfers, direct |
| Extra Stripe cost | No | Yes | Yes |
Stripe gives home-rental marketplaces and ride-hailing services as examples of Express platforms, and store builders and software platforms as examples of Standard. Custom is for platforms with significant engineering resources that want a fully white-labelled experience, and if you collect identity documents yourself you take on the regulatory and security load that comes with them. For a founder building in Lovable, a setup where Stripe handles onboarding is the sensible default. Two choices cannot be undone: you cannot change an account's type, or its dashboard type under controller properties, after you create it.
How should money move from buyers to sellers?
Through one of three charge types, and the choice decides whose balance pays refunds, disputes and Stripe's fees. Stripe's guidance:
- 01Direct chargesThe charge is created on the seller's account, and buyers often never see your platform. You can take an application fee. Refunds and chargebacks come out of the seller's balance. Stripe suits this to software platforms, such as store builders.
- 02Destination chargesThe charge is created on your platform and part of it moves to one seller straight away; what stays is your fee. Refunds, chargebacks and Stripe's fees come out of your platform balance. Stripe suits this to marketplaces, such as home rentals or ridesharing.
- 03Separate charges and transfersYou charge on your platform first and transfer to one or more sellers later. It is the most complex option, and Stripe says to use it only when you need it, for example one basket paid to several sellers, or a charge taken before you know who will do the job.
Most two-sided marketplaces with one seller per order fit destination charges. Whatever you choose, the amount and the seller must be set on the server from your own database. Never accept a price, fee or connected account ID from the browser, because anyone can edit what runs in their own browser. Our Lovable security checklist covers that test.
How do sellers get onboarded?
With Stripe-hosted onboarding: your server creates a connected account, then an Account Link, and sends the signed-in seller to it. Stripe's form collects the business and identity details each seller needs, based on their country, business type and requested capabilities.
- Each Account Link URL works once and expires after a few minutes. Create it on the server only after the seller has signed in to your app, and never email or text it.
- Your refresh URL must create a fresh link and redirect to it, because sellers land there when a link has expired or was already visited.
- Reaching your return URL does not mean onboarding is complete. Stripe says it only means the seller entered and left the flow. Retrieve the account, or use the account.updated event, and check for outstanding requirements.
- Live mode only accepts HTTPS for these URLs.
- Hosted onboarding only works in a web browser, not in an embedded web view inside a mobile or desktop app.
Requirements can change after a seller is live. If a required field is still missing at its deadline, Stripe disables the matching functionality, which can stop charges or payouts. Your app should send the seller back to onboarding when that happens.
How do payouts to sellers work?
By default, Stripe pays out a connected account's balance on a daily rolling basis. Depending on the setup, your platform can change the payout schedule, make manual payouts, use instant payouts, or, with destination charges or separate charges and transfers, keep funds in your platform balance.
Sellers with a Stripe-hosted dashboard manage their own bank accounts. A payout moves from pending to in transit to paid, which Stripe says typically takes one to two business days after submission for standard payouts. When a payout fails, the bank account involved is disabled and cannot receive payouts until its details are updated. Stripe also says that a seller missing money needs to contact the platform, not Stripe, so your support team needs to see payout status.
Which webhooks does a Stripe Connect app need?
Stripe says all Connect integrations should set up a webhook endpoint for Connect events. Connect events come in two scopes: events from your own account, which include destination charges, and events from connected accounts, which include direct charges and account.updated. You choose the scope when you create the endpoint, so a marketplace usually needs both.
- account.updated: a seller's requirements or status changed; check whether they can take charges and receive payouts.
- payment_intent.succeeded: a payment went through, for direct and destination charges.
- payout.failed: a payout failed and the seller's bank account is now disabled.
- account.external_account.updated: a seller's bank account or debit card changed.
- account.application.deauthorized: a seller disconnected from your platform, for accounts with Stripe Dashboard access.
Each event from a connected account carries a top-level account property naming the seller, and API calls about that object must be made as the connected account. Stripe recommends checking the livemode value on each event, because production endpoints for Connect receive both live and test events. The same rules as any Stripe webhook apply: verify the signature, answer quickly and handle each event once, which is idempotency.
How do you test Stripe Connect in a Lovable app?
In a sandbox, with Stripe's Connect test data and the Stripe CLI. Stripe provides test data to simulate identity checks, business verification and payout failures. To receive connected-account events locally, run stripe listen --forward-connect-to with your endpoint, and fire events with stripe trigger --stripe-account and a connected account ID.
Walk every path: a seller who abandons onboarding, one whose verification fails, a refund, a dispute and a failed payout. Check what your app shows the buyer and the seller each time. Sandbox accounts need their own webhook endpoints. The wider launch work is in our guide to taking a Lovable app to production.
What does Stripe Connect look like in a real product?
Inkwave is a newsletter platform where publishers sell paid subscriptions through Stripe Connect while the platform bills the publishers. Inkwave is pre-launch; the details are on the Inkwave case study.
At Inkwave, every Stripe webhook is signature-checked, failed payments are stored rather than logged and dropped, and refunds and subscription history are written from webhooks, so both sides keep an invoice trail.
Starter costs $2,999 a month paid annually, $3,999 a month billed quarterly, or $4,999 month to month, and Growth is custom; both are on our pricing page. For the single-account basics, start with our Lovable Stripe integration guide.
Sources
Each fact above comes from one of these pages, checked on November 6, 2026. We review this page every 30 days.
- Lovable documentation: Connect your own Stripe account (docs.lovable.dev/integrations/stripe).
- Stripe documentation: Connected account types (docs.stripe.com/connect/accounts); Understand how charges work in a Connect integration (docs.stripe.com/connect/charges); Stripe-hosted onboarding (docs.stripe.com/connect/hosted-onboarding); Manage connected account payouts (docs.stripe.com/connect/payouts-connected-accounts); Connect webhooks (docs.stripe.com/connect/webhooks).
- Case-study facts: our Inkwave case study, as published on this site (plutonapps.com/work/inkwave).
Common questions
Can I use Stripe Connect with Lovable?
Yes, but you build it yourself. Lovable's Stripe integration connects one Stripe account you own and does not mention Connect. You can use that account as your platform and add server functions for connected accounts, onboarding, charges and Connect webhooks.
Should I use Express, Standard or Custom accounts?
Stripe now calls those account types legacy and recommends controller properties for new platforms. The trade-offs still hold: Stripe-handled onboarding is the least work, and a fully white-labelled setup needs significant engineering. You cannot change an account's type or dashboard type after creating it.
Which charge type suits a marketplace?
Stripe suits destination charges to marketplaces with one seller per payment, and separate charges and transfers to cases such as one basket split across several sellers. With both, refunds, chargebacks and Stripe's fees come out of your platform balance.
Does a seller returning from onboarding mean they are verified?
No. Stripe says the return URL only means the seller entered and left the flow. Retrieve the account or listen for account.updated and check its requirements before you let them sell.
What happens when a payout to a seller fails?
Stripe sends payout.failed, and the seller's bank account is disabled until its details are updated. Your app should tell the seller and send them to update their bank details.
More on this: Lovable mastery & prompting · Lovable app not working in production? How to make it production-ready
Built something in Lovable you want people to rely on?
We are the engineers who take it the rest of the way — secured, tested, released and supported.


