Stripe Connect: Multi‑Vendor Subscription Billing Guide
Read this article in clean Markdown format for LLMs and AI context.Disclosure: We are reader supported, and earn affiliate commissions when you buy through us.
You need a reliable way to split recurring payments between your platform and dozens of sellers—right now. In the next few minutes you’ll get a crystal‑clear, copy‑paste‑ready flow that makes Stripe Connect subscription billing for a multi‑vendor marketplace painless and code‑light. Follow the steps, hit “run”, and watch the money land where it belongs without chasing webhook bugs.
Why the “who gets paid?” problem feels impossible
Your first attempt at recurring payments probably left you staring at a sea of application fee and transfer data fields, wondering which one actually sends money to the seller. The common trap is treating Stripe as a generic gateway instead of a Connect‑aware platform. When you switch the mindset to “each seller is a separate Connect account,” the puzzle instantly simplifies.
Step‑by‑Step Stripe Connect Subscription Billing for a Multi‑Vendor Marketplace
1. Create a Connect account for each seller
In the Stripe dashboard go to Connect → Accounts → New. Choose Standard (sellers manage their own Stripe login) and fill in name, email, and a brief description. After they accept the invitation you’ll see an Account ID like acct_1A2b3C4d5E.
2. Enable a recurring product on your platform account
Navigate to Products → Add product, tick Recurring, and set the billing interval (monthly, yearly, etc.). Save the product and copy the Product ID—you’ll need it when you create a subscription for a buyer.
3. Define revenue shares in the dashboard
Under Settings → Connect settings → Application fees, enable Collect fees on behalf of your platform. When you later create a subscription, you’ll pass an application_fee_amount that represents your marketplace’s cut; the remainder goes automatically to the seller’s Connect account.
4. Minimal code to tie everything together
The backend only needs a few lines. Below is a Node.js example; the same logic applies to Ruby, Python, or PHP.
const stripe = require('stripe')(process.env.STRIPE_SECRET_KEY);
async function createSubscription(customerId, priceId, sellerAccountId) {
return await stripe.checkout.sessions.create({
mode: 'subscription',
customer: customerId,
line_items: [{ price: priceId, quantity: 1 }],
payment_intent_data: {
application_fee_amount: 500, // $5 platform fee in cents
transfer_data: {
destination: sellerAccountId,
},
},
success_url: 'https://yourdomain.com/success',
cancel_url: 'https://yourdomain.com/cancel',
});
}
Key point: transfer_data.destination tells Stripe to push the rest of the payment straight to the seller’s Connect account—no extra webhooks, no nightly batch jobs.
5. Common traps and sanity checks
- Enable “Collect fees” in Connect settings; otherwise
application_fee_amountis ignored. - Verify each seller’s account before sending payouts; unverified accounts trigger “insufficient balance” errors.
- Test in Stripe’s test mode with the provided test cards, then inspect the Payouts tab for each seller to confirm receipt.
When you follow this checklist, you’re answering the question how to integrate Stripe Connect with a marketplace SaaS without drowning in custom code. Keep the best practices for multi‑vendor recurring payments front‑and‑center: verified accounts, clear fee settings, and regular dashboard audits.
Quick Recap
- Create a Connect account per seller.
- Add a recurring product on your platform.
- Set up application fees in the Connect settings.
- Use the short code snippet to create a subscription with
transfer_data.destination. - Run the sanity checks before going live.
Implement these five steps and you’ll have a working subscription system in a day—no sleepless nights over payment bugs.
Want more bite‑size tech hacks?
Subscribe to TechBite for fresh guides delivered straight to your inbox, and share this post with any founder still wrestling with billing headaches. Happy building!
- →
- →
- →
- →
- →