Stripe Connect for marketplaces: the complete guide for Switzerland
In 2026, Stripe Connect has become the go-to solution for building a marketplace in Switzerland. Standard, Express and Custom accounts, payment splits, KYC, TWINT integration: these are the points to settle before you start.
Contents
Why Stripe Connect dominates in 2026
Building a marketplace means handling money that does not belong to you. Your sellers get paid through your platform, you take a commission and you pass on the rest. This mechanism is simple to describe and a nightmare to implement correctly: KYC compliance (Know Your Customer), AML (Anti-Money Laundering), automated splits, multiple currencies, dispute handling, banking compliance in more than 30 jurisdictions.
Stripe Connect has been solving this problem since 2014 and dominates the market in 2026. It powers Lyft, Uber Eats, Shopify, Substack and thousands of lesser-known marketplaces. In Switzerland specifically, Stripe Connect has been the default choice since 2023, when TWINT became natively integrable through its API.
When you build a marketplace in Switzerland, you face three major architectural decisions: which type of Connect account to choose, how to handle Swiss KYC, and how to split payments cleanly. This guide is aimed at the technical scoping phase of a marketplace project between CHF 50,000 and CHF 500,000.
Understanding the 3 types of Connect accounts
Stripe Connect offers three types of accounts for your sellers, from the simplest to the most complex.
Standard Account
Who it is for: marketplaces where each seller has a genuine, independent business identity and wants to manage their own Stripe dashboard.
How it works: your seller creates their own Stripe account (with their email address, their bank, their business). Your platform invites them to connect via OAuth. From then on, payments go through their account, and you take a commission via application_fee_amount.
Advantages: no KYC responsibility on your side, the seller manages their own dashboard, minimal fees for the platform.
Drawbacks: your seller sees the full Stripe dashboard (which can complicate support), they can leave your marketplace more easily, and the onboarding flow can only be customised to a limited extent.
Typical case: an Airbnb-style marketplace where each host is a genuine independent business.
Express Account
Who it is for: consumer marketplaces whose sellers are individuals or very small businesses and want an ultra-simple onboarding.
How it works: you embed Stripe-hosted onboarding (a form prepared by Stripe), Stripe collects the KYC information it needs, and you keep control of the post-onboarding experience through your own custom dashboard.
Advantages: fast onboarding (5 to 10 minutes for the seller), Stripe handles compliance, an experience consistent with your brand.
Drawbacks: less customisation than Custom, Stripe handles some aspects that you do not see.
Typical case: DoorDash, Lyft, gig economy platforms.
Custom Account
Who it is for: marketplaces that need total control, want a 100% white-label experience and accept responsibility for KYC.
How it works: your platform collects all the KYC information itself, submits it to Stripe via the API and runs the entire onboarding flow without any redirect to Stripe.
Advantages: a fully custom experience, pure branding, complete control.
Drawbacks: KYC responsibility on your side (Stripe may audit you), implementation 3 to 4 times more complex than Standard.
Typical case: Substack, Shopify Payments, Stripe brought in-house.
Voren’s recommendation for Switzerland
For 80% of Swiss marketplaces run by SMEs or scale-ups, Express Account is the right compromise: fast onboarding, compliance handled by Stripe, an experience that is custom enough. Choose Standard if your sellers are established businesses, and Custom only if you have a specific case (very high volume, extreme branding constraints, integration with several payment service providers).
KYC in Switzerland: what Stripe expects
In Switzerland, Stripe Connect asks for specific information for compliance.
For an individual seller (Express):
- Identity: surname, first name, date of birth
- Residential address in Switzerland
- Phone number
- A photo of an identity document (ID card or passport)
- Bank details (Swiss IBAN)
For a business seller (Standard or Express):
- Company name and UID (Swiss business identification number)
- Registered office address
- Legal representative (managing director, director)
- Beneficial owners holding more than 25%
- Company bank details
When cumulative payments exceed CHF 1,000 a month, Stripe may ask for additional supporting documents (commercial register extracts, bank confirmations, annual accounts).
Onboarding takes 5 to 10 minutes for an individual on Express and 15 to 30 minutes for a business on Standard, and Stripe verifies the account within 24 to 48 working hours. During verification, the account can take payments but cannot pay out to the bank.
Common mistakes in Switzerland:
- An IBAN in a non-Swiss format (Stripe accepts EU IBANs for companies operating in several countries, but it is better to ask Swiss sellers for a Swiss IBAN)
- A residential address in neighbouring France (cross-border commuters): Stripe may block the account if the IBAN is Swiss but the address is French, to be checked case by case
- An expired identity document (check this on the front end before sending it to Stripe)
Splitting a payment in practice
This is the technical heart of a marketplace, and Stripe Connect offers three ways to go about it.
Direct Charges
The buyer pays the seller’s Stripe account directly. Your platform takes a commission via application_fee_amount.
const session = await stripe.checkout.sessions.create({
payment_method_types: ['card', 'twint'],
line_items: [{
price_data: { /* ... */ },
quantity: 1
}],
mode: 'payment',
payment_intent_data: {
application_fee_amount: 1500, // CHF 15.00 commission
transfer_data: {
destination: 'acct_VENDOR_ID',
},
},
success_url: 'https://yourmarketplace.com/success',
cancel_url: 'https://yourmarketplace.com/cancel',
});
Advantages: a simple money flow (direct payment to the seller), clear accounting.
Drawbacks: your platform never owns the funds (the impact depends on your business and tax model).
Destination Charges
The buyer pays your platform, which then transfers the money to the seller after deducting the commission.
const charge = await stripe.charges.create({
amount: 5000, // CHF 50.00 total
currency: 'chf',
source: 'tok_source',
application_fee_amount: 500, // CHF 5.00 commission
transfer_data: {
destination: 'acct_VENDOR_ID',
},
});
Advantages: your platform temporarily owns the funds, which gives more flexibility for refunds and dispute handling.
Drawbacks: more complex tax implications (you are considered a commercial intermediary).
Separate Charges and Transfers
The most advanced case: you charge the buyer, and later you transfer to one or more sellers using your own custom logic (for example, holding the funds for 7 days before the transfer to handle disputes).
// Step 1: charge on your account
const paymentIntent = await stripe.paymentIntents.create({
amount: 5000,
currency: 'chf',
});
// Step 2: transfer later
await stripe.transfers.create({
amount: 4500, // CHF 45.00 after the CHF 5.00 commission
currency: 'chf',
destination: 'acct_VENDOR_ID',
});
Advantages: maximum control over the timing and the logic of transfers.
Drawbacks: more complexity, more responsibility.
Integrating TWINT with Stripe Connect
TWINT has been native in Stripe Connect since April 2023. Configuration:
const session = await stripe.checkout.sessions.create({
payment_method_types: ['card', 'twint'], // add 'twint'
// ...
});
That one line is enough: Stripe handles the redirect to the customer’s TWINT app, the payment confirmation and the routing to the right Connect account. Stripe fees are the same (1.4% + CHF 0.25 on European cards, likewise for TWINT).
TWINT on Connect requires the seller to have a Swiss bank account. Sellers with an EU account cannot receive TWINT payments (the limitation comes from TWINT).
Handling disputes
On a marketplace, disputes (chargebacks, refund requests) are frequent. Stripe Connect handles them with two options.
- Option A, seller liability: the chargeback hits the seller’s account. Your platform is not financially liable, and Stripe fees are charged to the seller.
- Option B, platform liability: your platform takes on the chargeback risk. You can recover the amount from the seller via the API or withhold it from a future payment. This approach protects the seller more (an incentive to use your marketplace).
It is configured via the liability_shift parameter or in your Connect dashboard.
Our recommendation for Switzerland: option A for marketplaces where sellers are established businesses, option B for consumer marketplaces (gig economy), where seller trust is more fragile.
Pricing
Stripe Connect adds fees on top of Stripe’s standard payment fees.
- Standard and Express: no additional fees (you only pay the standard payment fees). Stripe makes its money on volume.
- Custom: additional fees, typically 0.25% + CHF 0.02 per payment on net volume. More expensive, but justified by the greater control.
For a marketplace processing CHF 100,000 a month on Express, total Stripe fees come to about CHF 1,600 a month (1.6% of volume). For Custom at the same volume, add about CHF 270.
Hidden fees to plan for:
- Payout fees to banks (CHF 0.25 per payout)
- Currency conversion fees if sellers are paid in EUR or USD (1% spread)
- The Connect platform fee (negotiable for large platforms)
Common mistakes in production
- Not testing thoroughly in test mode. Stripe has a test mode (
pk_test_*andsk_test_*) in which you can create fictitious Connect accounts, simulate payments and simulate chargebacks. Use it intensively before switching to live. - Underestimating KYC complexity. KYC does not stop at onboarding: Stripe can ask for additional documents at any point in the account’s life (random audit, increase in volume, risk signal), and your interface must handle these flows.
- Forgetting disputes. In a marketplace’s first year, you will have 1 to 3% disputes. Prepare the code, the UI and the processes to handle them.
- Fragile webhook handling. Stripe sends webhooks for all important events (successful payment, payout, dispute, account updated). If your webhook handler crashes or returns a 500, Stripe retries, but you lose information: implement an idempotent retry system on your side.
- No monitoring. Set up Sentry for code errors and a read-only Stripe dashboard to see volume, disputes and payouts. Beyond a certain volume, a Looker Studio dashboard connected to a BigQuery export of your Stripe data is very useful.
When not to use Connect
A few cases where Stripe Connect is overkill:
- A very small marketplace (< 10 sellers): a simple Stripe account with manual transfers can be enough
- A 100% service marketplace (no transactional payments): Stripe Connect does not apply
- A marketplace under banking regulation: if you carry out banking activity in the strict sense, you need an authorised payment service provider rather than Stripe Connect
For 95% of marketplace cases in Switzerland, Stripe Connect Express or Standard is the right choice.
Going further
If you are building a marketplace in Switzerland and want a technical sparring partner on your Stripe Connect architecture:
See the web app service: the scope in detail.
Request a marketplace architecture audit: an analysis of your project in 7 days, with recommendations on Connect, KYC, splits and scaling. Free, with no commitment.
See our web app development service: to understand our approach and our packages.