Build marketplaces and platforms with Stripe Connect. Use when implementing multi-vendor payments, seller onboarding, commissions, payouts, or split payments.
From fuse-laravelnpx claudepluginhub fusengine/agents --plugin fuse-laravelThis skill uses the workspace's default tool permissions.
references/account-types.mdreferences/compliance.mdreferences/fees-commissions.mdreferences/onboarding.mdreferences/overview.mdreferences/payment-flows.mdreferences/payouts.mdreferences/refunds-disputes.mdreferences/templates/ConnectRoutes.php.mdreferences/templates/ConnectWebhookHandler.php.mdreferences/templates/MarketplacePaymentController.php.mdreferences/templates/PayoutController.php.mdreferences/templates/Seller.php.mdreferences/templates/SellerOnboardingController.php.mdProvides UI/UX resources: 50+ styles, color palettes, font pairings, guidelines, charts for web/mobile across React, Next.js, Vue, Svelte, Tailwind, React Native, Flutter. Aids planning, building, reviewing interfaces.
Fetches up-to-date documentation from Context7 for libraries and frameworks like React, Next.js, Prisma. Use for setup questions, API references, and code examples.
Fetches up-to-date documentation from Context7 for libraries and frameworks like React, Next.js, Prisma. Use for setup questions, API references, and code examples.
Before ANY implementation, use TeamCreate to spawn 3 agents:
After implementation, run fuse-ai-pilot:sniper for validation.
Stripe Connect enables platforms and marketplaces to accept payments and pay out sellers/service providers.
| Use Case | Example | This Skill |
|---|---|---|
| Marketplace | Etsy, eBay | ✅ Yes |
| On-demand services | Uber, DoorDash | ✅ Yes |
| Crowdfunding | Kickstarter | ✅ Yes |
| SaaS with payouts | Substack, Teachable | ✅ Yes |
| Simple SaaS | Netflix, Notion | ❌ Use billing |
| Aspect | Laravel Cashier | Stripe Connect |
|---|---|---|
| Money flow | Customer → You | Customer → Seller (via you) |
| Accounts | 1 Stripe account | Platform + N seller accounts |
| Use case | Subscriptions | Multi-party payments |
| Complexity | Simple | Complex |
stripe_account_id on sellersapp/
├── Http/
│ ├── Controllers/
│ │ └── Connect/
│ │ ├── SellerOnboardingController.php
│ │ ├── MarketplacePaymentController.php
│ │ └── PayoutController.php
│ └── Middleware/
│ └── EnsureSellerOnboarded.php
├── Models/
│ ├── Seller.php ← Connected account holder
│ └── Transaction.php ← Payment records
├── Listeners/
│ └── ConnectWebhookHandler.php
└── Services/
└── StripeConnectService.php
config/
└── services.php ← Stripe keys
routes/
└── web.php ← Webhook routes (no CSRF)
Who handles customer support?
├── Seller handles everything → Standard
├── Platform handles support → Express or Custom
│ ├── Need full UI control? → Custom
│ └── Want Stripe's dashboard? → Express (recommended)
Who appears on customer's bank statement?
├── Seller's name → Direct charges
├── Platform's name → Destination charges (recommended)
└── Complex split? → Separate charges + transfers
| Concept | Description | Reference |
|---|---|---|
| Connected Account | Seller's Stripe account linked to platform | account-types.md |
| Onboarding | KYC process for sellers | onboarding.md |
| Application Fee | Platform's commission on payments | fees-commissions.md |
| Destination Charge | Payment with automatic transfer to seller | payment-flows.md |
| Payout | Transfer from Stripe balance to bank | payouts.md |
| Topic | Reference | When to Consult |
|---|---|---|
| Overview | overview.md | Understanding Connect fundamentals |
| Account Types | account-types.md | Choosing Standard/Express/Custom |
| Payment Flows | payment-flows.md | Direct vs Destination vs Transfers |
| Onboarding | onboarding.md | Seller verification process |
| Fees & Commissions | fees-commissions.md | Platform revenue model |
| Payouts | payouts.md | Paying sellers |
| Refunds & Disputes | refunds-disputes.md | Handling chargebacks |
| Compliance | compliance.md | Legal and tax requirements |
| Template | When to Use |
|---|---|
| Seller.php.md | Seller model with Connect integration |
| SellerOnboardingController.php.md | OAuth and onboarding flow |
| MarketplacePaymentController.php.md | Creating charges with fees |
| PayoutController.php.md | Managing seller payouts |
| ConnectWebhookHandler.php.md | Webhook event handling |
| ConnectRoutes.php.md | Route definitions |
$account = \Stripe\Account::create([
'type' => 'express',
'country' => 'FR',
'email' => $seller->email,
'capabilities' => [
'card_payments' => ['requested' => true],
'transfers' => ['requested' => true],
],
]);
$seller->update(['stripe_account_id' => $account->id]);
$link = \Stripe\AccountLink::create([
'account' => $seller->stripe_account_id,
'refresh_url' => route('connect.onboarding.refresh'),
'return_url' => route('connect.onboarding.complete'),
'type' => 'account_onboarding',
]);
return redirect($link->url);
$payment = \Stripe\PaymentIntent::create([
'amount' => 10000, // €100.00
'currency' => 'eur',
'payment_method' => $paymentMethodId,
'confirm' => true,
'application_fee_amount' => 1500, // €15.00 platform fee
'transfer_data' => [
'destination' => $seller->stripe_account_id,
],
]);
$account = \Stripe\Account::retrieve($seller->stripe_account_id);
$isOnboarded = $account->charges_enabled && $account->payouts_enabled;
$needsInfo = !empty($account->requirements->currently_due);
account.updated to track onboarding status