Stripe Connect starter
Production-tested Next.js 16 starter for marketplaces. Stripe Connect Express, destination charges with on-top platform fees, KYC onboarding, saved payment methods, webhook reconciliation. The patterns most boilerplates miss — shipped.
30-day money-back guarantee · Single TypeScript file ZIP delivery via Polar · GitHub repo access
You're building a marketplace. The frontend takes a weekend. Auth takes a weekend. Stripe Connect takes 3-5 weekends — and most of that is rediscovering production patterns that everyone hits and nobody documents: idempotent account creation, status sync from polling AND webhooks, PaymentIntent reuse defense against double-charge races, on-top fee math, cross-customer attach guards, typed error mapping for the dozen weird Stripe edge cases.
The popular Next.js boilerplates skip Connect entirely. PayoutKit ships it.
Every piece is extracted from a production marketplace shipping today.
Idempotent account creation, hosted onboarding link generation with proper return/refresh URLs, status sync from BOTH polling AND account.updated webhook. Stripe-hosted KYC flow, no fields to wire up.
Customer pays subtotal + commission. Vendor receives the full listed price via destination charge. Platform earns application_fee_amount. Stripe processing fees come out of platform balance — vendor never sees a deduction.
Handles the "user opens pay modal, navigates away, comes back" race condition that quietly creates duplicate charges in most boilerplates. Detects already-succeeded PIs that haven't synced to your DB yet. Cancels stale PIs when the buyer switches saved cards.
List / set default / detach, all guarded against the cross-customer attach attack (where an authenticated buyer tries to bind another customer's payment method as their default). SetupIntent for off-session card collection included.
Raw-body signature check, typed event router for account.updated, payment_intent.succeeded, payment_intent.payment_failed. Returns 5xx on handler error so Stripe retries with backoff.
StripeAppError with stable codes — connect_platform_not_activated, connect_permission, connect_account_missing. Frontend switches on stable codes, never error-message strings.
Drop-in interface that works with NextAuth, Clerk, Supabase Auth, or your own. Ships with a cookie-based demo so you can run the full flow before wiring real auth. Every Stripe path is auth-agnostic.
Three tables — vendors, customers, orders — with all Stripe linkage fields, snapshotted pricing, and FK constraints. Works with Supabase, Neon, Railway, Vercel Postgres, or self-hosted.
Built on
One-time purchase. 30-day money-back guarantee. 12 months of patch updates included.
For one production app.
€149
one-time, perpetual license
For agencies + multi-product founders.
€349
one-time, perpetual license
Prices are in EUR. VAT may apply for EU buyers (handled by Polar at checkout).
Not sure which tier? Email us.
Most boilerplates handle Stripe Standard (single-merchant payments). PayoutKit ships Stripe Connect — the multi-vendor marketplace pattern with destination charges, on-top platform fees, and KYC onboarding. If you're building a marketplace, this is the part the other boilerplates leave you to figure out.
You get an email from Polar with a link to the GitHub repo. Add your GitHub username to the email so we can grant access within minutes. Clone, run pnpm install, set 4 env vars, run pnpm dev. The full demo runs locally in under 10 minutes.
Yes. The starter ships an AuthAdapter interface with a cookie-based demo implementation. Swap it for NextAuth, Clerk, Supabase Auth, or your own — the Stripe code paths are auth-agnostic. Most integrations take 30 minutes.
Drizzle ORM + node-postgres. Works with any standard Postgres: Supabase, Neon, Railway, Vercel Postgres, or self-hosted. Schema includes 3 tables (vendors, customers, orders) with snapshotted pricing and Stripe linkage fields.
Stripe Connect is available in 40+ countries. The starter has a STRIPE_CONNECT_COUNTRY env var (default US) — change it to your platform's country. See the Stripe Connect global availability page.
No. The code has heavy inline documentation explaining the WHY of every Stripe decision (destination charges vs direct charges, on-top fees vs deducted fees, polling vs webhook status sync). You'll learn Stripe Connect by reading the source. The Setup Pack add-on covers your specific implementation questions.
Yes — 30-day money-back guarantee, no questions asked. Email support@payoutkit.dev within 30 days of purchase.
12 months of patch and minor-version updates included with every license. After 12 months, you keep using your version forever; renewal is optional.
Use in client projects: yes, if it's the client's licensed application (one client = one Single-App license, OR one Multi-App license covers your agency's clients). Resell or republish the source code: no — see the commercial license.
Buy once. Ship a marketplace this weekend.
Buy from €149 →