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 PayoutResultdevelopment
Use when optimizing entity-based / semantic SEO 2026. Covers entity maps, Google Knowledge Graph resolution, salience scoring, passage-level ranking, about/sameAs/knowsAbout schema, Cloud Natural Language API validation.
development
Use when running SEO, GEO, schema, Core Web Vitals, sitemap, hreflang, E-E-A-T, AI Overviews, technical SEO, or structured data tasks. Covers full-site audits, single-page analysis, schema markup, content quality, AI search optimization, local SEO, sitemap/robots, internal linking, semantic clustering, and search experience.
development
Use when optimizing search experience (SXO). Covers intent matching, user personas, user stories, page-type analysis, dwell time, scroll depth, pogo-sticking prevention.
development
Use when optimizing local SEO. Covers Google Business Profile, NAP consistency, citations, reviews acquisition, Local Pack ranking, location pages, LocalBusiness schema.