plugins/laravel-expert/skills/laravel-stripe-connect/SKILL.md
Build marketplaces and platforms with Stripe Connect. Use when implementing multi-vendor payments, seller onboarding, commissions, payouts, or split payments.
npx skillsauth add fusengine/agents laravel-stripe-connectInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
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 statusStripe Connect (stripe/stripe-php 16.x) est compatible Laravel 13. Adaptations :
connect/webhook de PreventRequestForgery (voir [[laravel-auth]])account.updated handler : utiliser Context::add('stripe_account', $accountId) pour propager dans la queuefinal readonly class pour Seller DTO et PayoutResulttesting
Copy self-audit and ban-lists — filler verbs/hype adjectives, slop placeholder names, fake-precise numbers, Title Case headlines, humor in error copy ('Oops!'), em-dash crutch, one copy register per page.
development
Logged-in web apps — dashboards, auth flows, settings, onboarding, data tables, command palettes, modals, toasts. Register `product`: density and glance-speed over marketing polish, no hero/CTA-tricks, every data surface covers empty/loading/error explicitly, tables and dataviz follow preattentive-processing rules.
development
Marketing sites, landing pages, campaign pages — register `brand` (design IS the product). Structure comes from the register's POV + a macrostructure pick, never from copying an inspiration site's section flow. Hero discipline, deviated section order, asymmetric grids, and a silhouette lookalike-test gate before ship.
development
Token-strategy core — OKLCH color rules, neutral tinting, accent-commitment levels, type scale, 8pt spacing grid, touch targets, and the canonical output format of design-system.md (the file the harness gates on). This is routing step 1 of design-method/SKILL.md — read it before design-web/design-webapp/design-ios/design-android, before picking or auditing a single color/type/spacing value.