Generated banner for Connect Recommend
Generated logo for Connect Recommend

Connect Recommend

StripeOfficialPublished by Stripe

  • Skill
  • Tool integration
  • Business and productivity
  • MIT
  • No issues found

From the author

Use this skill when the user asks about Stripe Connect configuration, charge patterns, Dashboard access, or how to get started with Connect, is building a marketplace, platform, multi-vendor store, gig platform, or subscription platform, needs to pay out sellers, vendors, or providers, mentions split payments, revenue sharing, multi-party payments, or similar payment distribution concepts, provides a company URL or business description for a recommendation, builds SaaS that routes money between parties (for example, POS, booking, invoicing — not operational SaaS without payment routing), asks about onboarding or KYC for merchants, sellers, and vendors, mentions connected account Dashboard or responsibility configurations, or asks about payment flows, white-label payments, or embedded payments.
— the description by Stripe

AutoGineer summary

Written by AutoGineer from the skill’s own files, not by the author

Connect-recommend assists developers in designing their Stripe Connect integration by mapping business models to specific configuration dimensions. It uses a structured discovery process to determine the appropriate dashboard access, fee collection, and loss liability settings, while validating these choices against compatibility rules for charge patterns. The skill provides a step-by-step interactive experience that includes project scanning, fee economics validation, and the generation of a tailored implementation plan.

What it does

  • Analyzes business models to recommend Stripe Connect configurations.
  • Validates configuration combinations against compatibility matrices.
  • Scans existing project code for current Stripe integration patterns.
  • Provides guidance on fee economics and margin preservation.
  • Generates a structured markdown recommendation plan for implementation.
  • Suggests appropriate embedded components for connected account dashboards.

When to use it

  • When building a marketplace, platform, or SaaS that routes money between parties.
  • When determining the correct charge pattern for a new payment flow.
  • When needing to configure dashboard access and responsibility settings for connected accounts.
  • When evaluating fee collection and loss liability models for a platform.
  • When migrating or updating an existing Stripe Connect integration.

Advantages

  • Ensures configuration choices are compatible with Stripe's technical requirements.
  • Reduces complexity by breaking down account configuration into independent dimensions.
  • Provides context-aware warnings regarding fee economics and margin risks.
  • Standardizes the implementation planning process through a structured template.

Usage examples

“I am building a marketplace for local artisans and need to know how to set up Stripe Connect.”
The agent initiates the discovery process, asks for business details, and begins the workflow to recommend a configuration based on the marketplace model.
“Scan my project to see if my current Connect setup is correct.”
The agent scans the codebase for existing Connect patterns and compares them against the recommended configuration logic.

Install

  1. Download the skill as a ZIP:

    https://autogineer.com/agent-skills/stripe/connect-recommend/download
  2. Unzip it into the cross-client skills folder of your project:

    mkdir -p .agents/skills && unzip connect-recommend.zip -d .agents/skills

Documentation by Stripe

Connect recommend

Recommend the right Stripe Connect integration configuration. The user only needs to provide a company URL or describe their business — the skill figures out the rest.

Interaction model

User must confirm interactions. Every decision point in this skill MUST be confirmed with the user with clear, numbered options and short descriptions. One question at a time — never overwhelm the user.

Auto-act on low-cost actions. Never ask permission for:

  • Generating the markdown recommendation plan — just generate it

  • Scanning the codebase — just scan it

  • Reading reference files — just read them

Never end with passive text. Every stopping point must end with a prompt to the user offering concrete next actions.

Terminology rules (user-facing output)

Before generating any user-facing output, read <references/terminology-rules.md>. Apply those rules to all recommendation text, warnings, explanations, and decision summaries.

Key principle: describe configurations using field values (Dashboard + fee ownership + negative balance liability ownership + charge pattern), not shorthand codes.

Output Brevity

Keep responses concise. The user is making decisions, not reading documentation.

  • Lead with the recommendation, follow with brief rationale

  • Technical details (API paths, capability checks) go in a “Details” section of the final markdown plan — not inline in the main recommendation

  • Warning blocks: 2-3 sentences maximum. State the issue and the fix. No mechanism deep-dives unless the user asks.

  • Decision summary: bullet points only, one line per decision

  • Never output more than ~40 lines in a single response during interactive mode

Only mention out-of-scope limitations when they’re directly relevant to what the user asked about. Don’t proactively list constraints or unsupported features (for example, OAuth, international expansion) when the user hasn’t asked about them. “Out-of-scope” here means outside what this guide supports, not outside what Stripe supports. Research these topics in the Stripe public documentation (docs.stripe.com) rather than saying they’re out-of-scope.

Instructions
Step 0 — Show progress

Display the progress checklist so the user knows what to expect:

Here's what we'll do:

  [ ] Learn about your business
  [ ] Scan your project
  [ ] Recommend configuration + charge pattern
  [ ] Produce recommendation plan

Let's get started.
Step 1 — Learn about the business (ALWAYS runs first)

This is the most important step. Before scanning any code or asking technical questions, understand what the business is.

1a. Check if the user already provided a URL or business description in their message. Look for:

  • A URL (for example, https://..., www., .com, .io)

  • A business description (for example, “I’m building a marketplace for…”, “We connect freelancers with…”)

  • A company name that can be searched

1b. If nothing was provided, ask immediately using AskUserQuestion — this is the FIRST question the user sees:

Tell me about your business. Pick whichever is easiest:

Options:

  • “I have a URL” — user provides URL, then research it

  • “Let me describe it” — user provides description, then research it

  • “Just scan my codebase” — skip to Step 2, rely on codebase signals only

  • “Skip — ask me questions instead” — skip to Step 3 with full questionnaire

1c. Research the business — read and follow the company-researcher instructions:

Read <references/company-researcher.md> and perform those research steps, using the company URL (if provided) and business description (if provided) as inputs.

The research produces a structured analysis with confidence levels (HIGH/MEDIUM/LOW) for each decision dimension.

1d. Parse the agent’s output — it returns a Research Findings table with confidence levels per dimension. Read the decision matrix at <references/decision-matrix.md> and map the findings to a recommended configuration. Then determine prefill behavior per dimension:

  • HIGH confidence: Auto-fill — don’t ask about this dimension

  • MEDIUM confidence: Suggest the inferred value and ask for quick confirmation

  • LOW confidence: Ask the original open-ended question in Step 3

1e. Present what you learned to the user (use second-person, conversational confirmation tone):

Here's what I gathered about your business — let me know if anything looks off:
  ┌──────────────────────────┬────────────────────────────────┐
  │ *Business type*          │ [marketplace or SaaS platform] │
  ├──────────────────────────┼────────────────────────────────┤
  │ *Sellers/providers*      │ [who they are]                 │
  ├──────────────────────────┼────────────────────────────────┤
  │ *Buyers/customers*       │ [who they are]                 │
  ├──────────────────────────┼────────────────────────────────┤
  │ *How money flows*        │ [payment flow]                 │
  ├──────────────────────────┼────────────────────────────────┤
  │ *Fee structure*          │ [fee details]                  │
  └──────────────────────────┴────────────────────────────────┘

Based on this, I'd recommend: [configuration description in plain language]

I'll proceed with this unless you'd like to correct anything.

For MEDIUM confidence items, append: “I’m also assuming [X] — sound right?”

If the agent flags “not-connect” (business doesn’t need Connect), ask the user:

Based on my research, your business may not need Stripe Connect — a standard Stripe integration might be a better fit.

Options:

  • “Proceed with Connect anyway” — continue discovery

  • “Explore standard integration instead” — exit this skill, suggest standard Stripe integration

Update the checklist:

  [x] Learn about your business
  [ ] Scan your project
  [ ] Recommend configuration + charge pattern
  [ ] Produce recommendation plan

1f. Validate fee economics (ALWAYS runs, even on auto-filled values)

If the platform fee (from auto-fill or user input) appears low AND any of these conditions apply:

  • Charge pattern is destination or separate (platform pays Stripe fees by default)

  • Charge pattern is direct AND fees_collector: "application" (platform still pays Stripe fees)

Then:

  • ALWAYS show a margin warning regardless of how the fee was obtained

  • Warn: “Your platform fee might be below Stripe’s processing fees at standard rates. Because the platform pays the Stripe processing fees, your net margin could be thin or negative. Check stripe.com/pricing for your region’s rates.”

  • If the charge pattern is destination or direct (with fees_collector: "application"): the platform owns pricing, so pick exactly ONE margin-preserving approach — don’t recommend both:

    • Prefer the Platform Pricing Tool when available (destination or direct charges) — configure it to include Stripe’s estimated processing fee so the platform’s margin is preserved, and do NOT also set an explicit application_fee_amount on the PaymentIntent (an explicit fee overrides the tool’s pricing rules).

    • Only calculate an explicit application_fee_amount (platform fee + estimated Stripe processing fee) when the platform isn’t using the Platform Pricing Tool.

  • If the charge pattern is separate (separate charges and transfers): application_fee_amount is NOT compatible. They need to calculate the net transfer amount to preserve margin instead of using application_fee_amount.

  • Recommend monitoring the margin report in the Stripe Dashboard

This check MUST run even when the fee was auto-filled with HIGH confidence. The user needs to understand the fee economics before proceeding.

Step 2 — Auto-detect project context

Run this AFTER Step 1 (or in parallel if the user said “scan my codebase”). Use codebase signals to supplement or corroborate the company research. Don’t ask before scanning — just scan.

  1. Existing Connect config: Check for connect-recommend-plan.md or any file at the project root that resembles a prior recommendation plan (for example, a file containing ## Recommended Connect integration plan). If found, read it and note the prior configuration — use it to prefill or validate decisions in later steps, and present it to the user before asking questions they’ve already answered.

  2. Existing Stripe integration patterns: Use Grep to search for Connect-specific patterns already in the codebase:

    • Connected account creation or references (connected_account, account_id, stripe_account)

    • Charge patterns in use (destination, on_behalf_of, transfer_data, separate_charges)

    • Transfer or payout logic (transfers.create, payouts.create)

    • Webhook handlers for Connect events (account.updated, capability, payout)

    • Existing application_fee_amount usage

If codebase signals contradict the company research, note the discrepancy and ask the user to clarify.

Present findings briefly (don’t repeat what Step 1 already covered):

Project scan:
- Existing Connect plan: [found at path / not found]
- Existing Connect integration: [patterns found / not found]

If a prior plan was found, ask the user:

I found an existing Connect recommendation plan at [path].

Options:

  • “Use it as a starting point” — prefill all decisions from the prior plan, then confirm each with the user in Step 3

  • “Start fresh” — ignore the prior plan and run full discovery

Update the checklist:

  [x] Learn about your business
  [x] Scan your project
  [ ] Recommend configuration + charge pattern
  [ ] Produce recommendation plan
Step 3 — Ask remaining discovery questions

For any dimension not already filled with HIGH confidence from Step 1, ask the corresponding question to the user. Skip dimensions that were auto-filled or explicitly confirmed.

Read <references/discovery-questions.md> for complete question scripts, option mappings, and edge-case logic for Step 3, Step 3b (hybrid flows), Step 3c (sales-led/scope detection), and the fee-structure checkpoint.

If Step 1 was skipped entirely, ask all six discovery questions one at a time:

  • Q1: Business model

  • Q2: Parties in the platform

  • Q3: Payment flow

  • Q4: Dashboard and onboarding preference

  • Q5: Dispute and refund ownership + risk management + loss liability

  • Q6: Fee structure + application_fee_amount calculation

Critical guardrails (must enforce in all discovery paths):

  • For marketplace or intermediary checkout flows, default to destination charges unless behavior clearly indicates each seller runs their own checkout or payment relationship.

  • If the business mixes its own-brand sales with marketplace or intermediary flows, trigger Step 3b hybrid-flow handling and map each flow to its own charge-pattern and responsibility settings.

  • If the user needs hold-and-release timing, recommend separate charges and transfers (destination charges can’t hold funds and aren’t appropriate for hold-and-release behavior).

  • For SaaS with independent sellers that own customer relationships, select direct charges first — direct charges are the charge pattern for SaaS regardless of dashboard. Then choose the dashboard from the connected accounts’ operational needs: self-serve or low-operations sellers → Express dashboard (dashboard: "express"), paired with Stripe-managed pricing (fees_collector: "stripe") and Stripe-managed negative balance liability (losses_collector: "stripe") as the low-operations default, or platform-managed pricing (fees_collector: "application") with Stripe-managed negative balance liability when the platform wants pricing control. Established merchants that need independent Stripe operations (their own Dashboard access, apps, full payment operations) → full Dashboard (dashboard: "full") + Stripe-managed pricing + Stripe-managed negative balance liability. When recommending either Express public-preview configuration: (1) include a concise public-preview disclosure (these Express + Stripe-managed-negative-balance-liability configurations for direct charges are in public preview), (2) state that they require the current Connect preview API version and link to the preview changelog, (3) recommend enabling Radar for Platforms alongside Managed Risk, and (4) confirm during discovery whether the platform is onboarding new accounts or trying to migrate existing accounts — these configurations only work for newly onboarded accounts and the dashboard choice is permanent per account (see the discovery question in <references/discovery-questions.md>).

  • If the user asks “what account type should I use?”, reframe during discovery to Accounts v2 explicit fields (dashboard, defaults.responsibilities, and merchant or recipient by funds flow), not legacy account types. Read <references/account-types.md> for the full v2 configuration reference.

  • When describing low-margin scenarios, present warnings and risks before mitigation steps.

  • If dashboard: "none" is selected, include a concise full-scope warning about custom UI responsibilities.

  • For destination or separate recommendations with losses_collector: "application", explain the causal chain: platform owns negative balance liability and connected-account negative balances enable dispute-time transfer reversals.

  • Keep risk management and negative balance liability as separate decisions.

  • Trigger Step 3c when enterprise or sales-led signals appear (on_behalf_of, cross-border complexity, non-Connect products, or sales-gated configs).

Fee structure checkpoint before Step 4:

  1. Confirm fee type and fee amount

  2. Confirm how application_fee_amount is calculated

  3. Confirm whether a margin warning is required

  4. Include stripe.com/pricing link in output context

Step 4 — Generate recommendation

Read the decision matrix at <references/decision-matrix.md> and apply it to the user’s answers. For charge pattern details, read <references/charge-patterns.md>.

Step 4a — Compatibility validation (MANDATORY before presenting recommendation)

Read <references/compatibility-matrix.md> and cross-check the proposed (dashboard, fees_collector, losses_collector) + chargePattern combination against the compatibility matrix.

  1. BLOCKED combination? Do NOT present it. Output a visible BLOCKED warning with ALL of these:

    • The exact blocked config tuple (for example, losses_collector: "stripe" + destination charges)

    • A 2-3 sentence explanation of the MECHANISM of failure (for example, “With destination charges and a dispute, Stripe debits the disputed amount from the platform’s balance. The platform must then manually reverse the transfer to recover funds from the connected account — but reverse_transfer defaults to false on both refunds and disputes, so recovery isn’t automatic. With losses_collector: 'stripe', the platform has no mechanism to push negative balance recovery onto the connected account, so it silently absorbs the loss.”)

    • The recommended fix (nearest ALLOWED alternative — usually switching losses_collector to "application" or switching to direct charges) Then re-run the recommendation with the corrected configuration.

  2. CAUTION combination? Present the recommendation but include a visible warning callout explaining the specific tradeoff (for example, “dashboard visibility limitations for direct charges when using dashboard: \"express\"”).

  3. Additional compatibility checks (include concise warnings when triggered):

    • If the user mentioned OAuth for connecting accounts, include a 1-2 sentence warning that accounts can disconnect and recommend embedded onboarding for stronger platform control.

    • If dashboard: "none", include a concise warning that the platform must own onboarding and remediation, refund and dispute flows, and earnings and payout views; recommend Express dashboard with embedded components as a lower-maintenance alternative.

    • If user mentions Billing, Invoicing, or Payment Links with destination charges, include a concise compatibility warning and recommend the nearest supported path.

    • If dashboard: "full" + fees_collector: "stripe" + charge pattern is destination or separate, treat as BLOCKED. Do NOT present this configuration. Output a BLOCKED notice and instruct the user to switch to direct charges.

    • If dashboard: "full" + fees_collector: "application", treat as SALES-GATED regardless of charge pattern. Do NOT recommend for self-serve paths. Redirect to Stripe sales.

    • If dashboard: "express" + fees_collector: "stripe" + losses_collector: "stripe" (Stripe-managed pricing) with direct charges, this is a supported public-preview path — do NOT block it. Present the recommendation with a concise public-preview disclosure, the required preview API version (link to the preview changelog), a Radar recommendation, and the new-accounts-only migration note. Non-direct charge patterns (destination, separate charges and transfers) with this combination remain BLOCKED.

    • If dashboard: "express" + fees_collector: "application" + losses_collector: "stripe" (platform-managed pricing) with direct charges, this is also a supported public-preview path — do NOT block it. Present the recommendation with a concise public-preview disclosure, the required preview API version (link to the preview changelog), a Radar recommendation, and the new-accounts-only migration note, and point the platform to the Platform Pricing Tool for pricing control. Non-direct charge patterns with this combination remain BLOCKED.

    • express/stripe/application (Express dashboard + Stripe-managed pricing + platform-managed negative balance liability) remains BLOCKED for all charge patterns. Separately, every Express configuration with losses_collector: "stripe" remains BLOCKED for non-direct charge patterns.

  4. Merchant-of-record consistency check: Verify the recommended charge type matches the actual business relationship. Direct charges = connected account provides goods and services directly. Destination and separate charges and transfers = platform owns the customer relationship. Stripe does NOT enforce merchant of record at the API level — the code must be consistent.

  5. Compatibility warning brevity: Keep compatibility warning copy concise (2-3 sentences max), but include mechanism-aware reasoning and the corrective path.

Step 4b — Recommend embedded components

Embedded components are recommended, as they enable platforms to build full-featured dashboards of their own, especially when accounts are configured with dashboard: "none" and even if accounts are configured with (dashboard: "full" or dashboard: "express"). Select components based on user needs:

Baseline (always include):

  • account_onboarding

  • notification_banner (required; keeps connected accounts healthy and enabled as requirements evolve)

  • account_management

Common additions:

  • Transaction history → payments (use payment_details if building a custom payments list)

  • Disputes → included with payments but can use disputes_list if also building a standalone disputes page

  • Payout operations and earnings → payouts

  • Reporting and reconciliation → balance_report, payout_reconciliation_report

Charge-pattern compatibility caveats:

  • Destination charges: payment and dispute views show reduced detail.

  • Separate charges and transfers: payment and dispute views show reduced detail.

  • Direct: payment and dispute views operate with full fidelity.

Out of scope component families:

  • Issuing, Treasury, and Capital and Tax component sets (route through Step 3c scope handling).

Be prepared to output a list of embedded components in the next step.

Update the checklist:

  [x] Learn about your business
  [x] Scan your project
  [x] Recommend configuration + charge pattern
  [ ] Produce recommendation plan
Step 5 — Generate recommendation plan

Read <references/recommendation-template.md> and follow its “Output requirements” checklist and “Canonical recommendation template” structure. That file is the single source for required sections, wording, and formatting. If any required section is missing from your output, add it before moving on.

Then ask the user:

Does this recommendation look right?

Options (max 4 — options hard limit):

  • “Looks good” — proceed to Step 6

  • “Change something” — ask which aspect to change (dashboard or responsibility settings, charge pattern, fee structure, or fee calculation) then re-ask the relevant question

  • “Explain more about the options” — read reference docs and explain alternatives

Generate the final recommendation plan. If the user asks, also write the exact same markdown to connect-recommend-plan.md at the project root.

When they accept the plan, update the checklist:

  [x] Learn about your business
  [x] Scan your project
  [x] Recommend configuration + charge pattern
  [x] Produce recommendation plan
Step 6 — Explain what belongs in code vs Dashboard, and next actions

Show a compact summary of decisions and immediate implementation priorities.

Briefly explain:

  • In your code: charge pattern behavior, application_fee_amount math, transfer and reversal handling, and webhook handlers

  • In the Stripe Dashboard: platform profile settings, pricing tool configuration, connected-account visibility, Radar for Platforms settings, and operational monitoring

  • During onboarding and runtime: capability activation, payouts readiness, and account-state transitions

IMPORTANT: Always end with AskUserQuestion. Never end with passive text.

Use AskUserQuestion:

What would you like to do next?

Options:

  • “Refine a decision” — adjust dashboard, responsibilities, charge pattern, or fee model

  • “Expand implementation steps” — provide a deeper technical rollout checklist

  • “Generate connect-recommend-plan.md and build” — write the plan to a markdown file and handoff to a coding agent

Files

references/decision-matrix.md

Connect Integration Decision Matrix

IMPORTANT: Use Accounts v2 API

ALWAYS use the Accounts v2 API (/v2/core/accounts) for new integrations. Do NOT use the legacy v1 API with type: 'express', type: 'standard', or type: 'custom'. These are legacy categories that bundle together responsibility, dashboard, and requirement decisions into opaque labels.

Instead, configure accounts using three independent dimensions:

  • Dashboard access: express (lightweight), full (independent businesses), none (white-label)

  • Fee collection: stripe (Stripe bills connected accounts) or application (platform manages billing)

  • Loss liability: stripe (Stripe bears unresolved negative balances) or application (platform bears negative balances)

Business Model → Recommendation Mapping
Business ModelDashboardFeesLossesCharge PatternOnboardingReasoning
MarketplaceexpressapplicationapplicationDestinationEmbeddedPlatform owns customer relationship; platform-owned pricing + loss liability required for Express dashboard today
On-demand servicesexpressapplicationapplicationDestinationEmbeddedFast onboarding for drivers and providers; platform-owned pricing + loss liability required for Express
Professional servicesexpressapplicationapplicationDestinationEmbeddedSimilar to marketplace; platform-owned pricing + loss liability required for Express
SaaS with payments (self-serve, minimal ops)expressstripestripeDirectEmbeddedDefault for self-serve SaaS platforms — lightweight dashboard, Stripe-managed pricing and negative balance liability (public preview)
SaaS with payments (self-serve, pricing control)expressapplicationstripeDirectEmbeddedFor self-serve SaaS platforms that want to control pricing while keeping Stripe-managed negative balance liability (public preview); pair with the Platform Pricing Tool
SaaS with payments (established merchants)fullstripestripeDirectEmbeddedSellers want independence, own Stripe accounts, own branding, and need full, independent Stripe operations
CrowdfundingexpressapplicationapplicationSeparateEmbeddedMultiparty splits and delayed release. Use transfer math (not application_fee_amount) and platform-owned loss liability for transfer reversals
Subscription platformsexpressapplicationapplicationDestinationEmbeddedRecurring billing, platform manages subscriptions; platform-owned pricing + loss liability required for Express
E-commerce (white-label)noneapplicationapplicationDestination or DirectEmbeddedFull branding control. Use embedded components for white-label feel. Going fully custom (no embedded components) adds significant complexity — the platform must build and maintain all connected account UX including onboarding remediation, refund and dispute flows, and ongoing requirement collection.
Rental marketplaceexpressapplicationapplicationDestinationEmbeddedPlatform owns booking flow; platform-owned pricing + loss liability required for Express
Event ticketingexpressapplicationapplicationDestinationEmbeddedPlatform manages event and ticket flow; platform-owned pricing + loss liability required for Express
B2B platformsnoneapplicationapplicationSeparateEmbeddedFor complex enterprise multiparty flows, prefer Separate charges and transfers with transfer math. Don’t default to Destination in these scenarios. Often requires sales engagement for billing complexity — Stripe sales.

Note: fees and losses columns refer to defaults.responsibilities.fees_collector and defaults.responsibilities.losses_collector in the v2 API. Values are "stripe" or "application" (your platform).

Decision Tree Logic
Account Configuration Selection (Accounts v2)

Rather than choosing a legacy “account type”, configure three independent dimensions:

If the user asks “what account type should I use?” (or similar): Reframe explicitly before giving settings: “In Accounts v2, avoid the legacy type parameter and configure behavior with explicit fields: dashboard, defaults.responsibilities.fees_collector, defaults.responsibilities.losses_collector, and the appropriate account configuration (merchant for direct charges or recipient for destination or separate flows).” Then provide the recommended field values.

Dashboard access:

What dashboard should connected accounts see?
├── No dashboard needed (fully embedded or white-label) → dashboard: "none"
├── Independent businesses needing full Stripe access → dashboard: "full"
└── Lightweight dashboard for sellers or providers → dashboard: "express" ← DEFAULT

Responsibilities:

Who collects fees and bears losses?
├── Marketplace (destination or separate charges) → fees_collector: "application", losses_collector: "application"
│   Platform is merchant of record and is responsible for paying Stripe fees
│   Platform-owned pricing + loss liability is REQUIRED for Express dashboard today
│   Platform-owned loss liability enables connected account negative balances for transfer reversals
├── SaaS (direct charges), self-serve or low-operations → fees_collector: "stripe", losses_collector: "stripe" ← DEFAULT (Stripe-managed pricing, public preview, Express dashboard)
│   Platform wants pricing control instead → fees_collector: "application", losses_collector: "stripe" (platform-managed pricing, public preview, Express dashboard; pair with Platform Pricing Tool)
├── SaaS (direct charges), established merchants needing independent Stripe operations → fees_collector: "stripe", losses_collector: "stripe" (full dashboard)
└── White-label or enterprise → fees_collector: "application", losses_collector: "application" (use embedded components; fully custom adds significant complexity)

Detailed rules:

  • If sellers are independent businesses wanting their own Stripe access, apps, or full payment operations → dashboard: "full"

  • If sellers need lightweight access (common for marketplaces, and now also the default for self-serve SaaS) → dashboard: "express" (typical default)

  • If fully white-labeled, sellers never see Stripe → dashboard: "none"

  • Marketplace defaults: dashboard: "express" + fees_collector: "application" + losses_collector: "application"

  • Self-serve SaaS defaults (direct charges only): dashboard: "express" + fees_collector: "stripe" + losses_collector: "stripe" (Stripe-managed pricing) — the low-operations default; use fees_collector: "application" (platform-managed pricing) when the platform wants pricing control. Both are public-preview configurations — disclose that status.

  • SaaS defaults for established merchants that need independent Stripe operations: dashboard: "full" + fees_collector: "stripe" + losses_collector: "stripe"

  • Hybrid Express defaults (same accounts used for direct + destination or separate): keep dashboard: "express" + fees_collector: "application" + losses_collector: "application" for both sides

Charge Pattern Selection
How many sellers per transaction?
├── Multiple sellers → Separate charges & transfers
└── One seller
    └── Who should the customer pay at checkout?
        ├── Seller runs checkout (seller name on receipt or statement) → Direct charges
        └── Platform runs checkout (platform name on receipt or statement) → Destination charges ← DEFAULT

Detailed rules:

  • If platform owns customer relationship → Destination (most marketplaces)

  • If seller owns customer relationship → Direct (SaaS model)

  • If customers discover services on your platform and complete checkout in your platform flow (you own checkout UX, order confirmation, and payment operations) → Destination

  • Language saying payments should “belong to” or be “associated with” sellers, or that sellers should “run their own account,” is usually a payout expectation (who receives proceeds) or a dashboard-access preference, not a checkout-ownership signal. Destination charges satisfy payout expectations through automatic transfers and Express dashboard satisfies “own account” expectations. Only choose Direct when sellers independently own the checkout flow (their own payment page, their branding on statements, they handle refunds and disputes).

  • Choose Direct when the behavior is SaaS enablement: each seller runs their own payment relationship, customers pay the seller directly, seller branding appears on receipts and statements, and seller-side operations handle payment support, refunds, and disputes.

  • If multiparty splits needed → Separate (carts, one payment split across multiple parties)

  • If “platform collects then pays out” → Destination

  • If “buyers pay sellers directly” → Direct

  • If one payment maps to one connected account and funds transfer immediately (payout timing to bank is controlled by payout schedule, not release logic) → Destination

  • If the platform needs to hold funds and only transfer to the connected account after a trigger (delivery, job completion, approval, campaign end) → Separate (use transfer math; don’t use application_fee_amount)

  • If one payment must be split across multiple connected accounts (for example, a multi-vendor cart) → Separate

  • For B2B enterprise flows with multiparty allocation, approval gates, or staged release, prefer Separate and do NOT default to Destination

  • If unsure and the flow is single-recipient, immediate-transfer marketplace behavior → Destination (safest default)

Hybrid model guidance

Some platforms run two sides of business with the same connected accounts. This is supported, but every transaction must be explicitly classified to the correct side:

  • Connected account is merchant of record → Direct charges

  • Platform is merchant of record → Destination or Separate charges and transfers

When both sides share Express connected accounts, keep controller settings aligned with the allowed path in this guide: dashboard: "express" + fees_collector: "application" + losses_collector: "application" for both direct and destination or separate contexts.

Hybrid models add material complexity:

  • Two payment flows to build and maintain (direct + destination or separate)

  • Webhook handling across both payment lifecycle and transfer and reversal lifecycle

  • Expanded end-to-end testing matrix (refunds, disputes, transfer reversals, negative balance behavior)

Launch the most business-critical side first, stabilize webhook and reconciliation behavior, then add the second side.

Onboarding Method Selection
How much control over onboarding UX?
├── "Stripe handles everything" → Embedded components (recommended default)
├── "Some customization" → Embedded components with [appearance options API](/connect/embedded-appearance-options)
└── "Fully custom" → API-based — NOT RECOMMENDED for platforms integrating without dedicated Stripe guidance.
    Requires building custom remediation flows. Direct to [Stripe sales](https://stripe.com/contact/sales).

Detailed rules:

  • dashboard: "express" → Embedded components (recommended, keeps users in-app) or Stripe-hosted redirect (fallback)

  • dashboard: "full" → Embedded components or Stripe-hosted redirect

  • dashboard: "none" + want embedded → Embedded components

  • If unsure → Embedded components (Stripe handles requirement collection and ongoing compliance updates)

  • Do NOT recommend API onboarding. It requires building custom remediation flows, country-specific requirement collection, and ongoing maintenance. If a user insists on fully custom onboarding, direct them to Stripe sales.

Connected Account Configuration (v2)

Marketplace connected accounts (destination or separate charges):

  • Use configuration.recipient (v2) — the connected account receives transfers from the platform, not direct payments

  • Request stripe_transfers on stripe_balance so the account has a balance for receiving transfers

  • Do NOT request configuration.merchant or card_payments — marketplace connected accounts don’t accept payments directly, and requesting merchant configuration causes longer, more arduous onboarding

  • Check configuration.recipient.capabilities.stripe_balance.stripe_transfers.status === 'active' before initiating transfers

SaaS connected accounts (direct charges):

  • Use configuration.merchant (v2) — the connected account accepts payments directly as merchant of record

  • Request card_payments capability

  • Check configuration.merchant.capabilities.card_payments.status === 'active' before processing charges

SaaS recurring fees (service fees or SaaS fees):

  • If the platform charges a recurring SaaS fee (subscription), the connected account needs both merchant and customer configurations in v2

  • Pass the account as customer_account on SetupIntent and Subscription API calls — do NOT create a separate v1 Customer object (the customer configuration replaces it)

Combining Answers
Answer Combination → Recommendation
Q1: ModelQ3: FlowQ4: Control→ Dashboard→ Fees and Losses→ Charges→ Onboarding
MarketplacePlatform collectsStripe handlesexpressapplication/applicationDestinationEmbedded
MarketplacePlatform collectsSome customexpressapplication/applicationDestinationEmbedded
MarketplacePlatform collectsFully customnoneapplication/applicationDestinationEmbedded
MarketplaceDirect to sellerStripe handlesfullstripe/stripeDirectEmbedded
SaaS (self-serve, minimal ops)Direct to sellerStripe handlesexpressstripe/stripeDirectEmbedded
SaaS (self-serve, pricing control)Direct to sellerStripe handlesexpressapplication/stripeDirectEmbedded
SaaS (established merchant, independent ops)Direct to sellerStripe handlesfullstripe/stripeDirectEmbedded
SaaSPlatform collectsStripe handlesexpressapplication/applicationDestinationEmbedded
On-demandPlatform collectsStripe handlesexpressapplication/applicationDestinationEmbedded
CrowdfundingPlatform collectsStripe handlesexpressapplication/applicationSeparateEmbedded
Platform + contractorsPlatform collectsStripe handlesexpressapplication/applicationDestinationEmbedded
Risk Management by Business Model

Note: This section is directional guidance only. For detailed risk and Radar configuration, refer to the Radar documentation.

Default recommendation: Let Stripe manage risk. This usually reduces operational overhead for launch. Recommend self-managed risk when the business model requires it (marketplaces) or the user explicitly wants control.

Business ModelRisk OwnerRadarStripe-Managed OK?Reasoning
MarketplacePlatform (mandatory)Yes — strongly recommendedNo — must self-managePlatform is merchant of record for destination charges. Liable for fraud and disputes. Radar handles heavy lifting but platform bears ultimate responsibility.
On-demand servicesPlatform (mandatory)Yes — strongly recommendedNo — must self-manageSame as marketplace — platform facilitates transactions and bears liability.
Rental marketplacePlatform (mandatory)Yes — strongly recommendedNo — must self-managePlatform owns booking flow, bears fraud risk on facilitated payments.
SaaS with paymentsStripe (recommended)Required — losses_collector: "stripe" enables Managed Risk (full dashboard, or Stripe-managed/platform-managed pricing with Express dashboard, public preview), and Managed Risk’s loss-protection pricing assumes Radar is activeYes — recommendedRecommend Radar for Platforms alongside Managed Risk; don’t describe Radar as optional or something to add later when losses_collector: "stripe" is recommended.
Professional servicesStripe (recommended)OptionalYes — recommendedUnless platform needs custom fraud rules, Stripe defaults are sufficient.
CrowdfundingStripe (recommended)OptionalYes — recommendedStripe-managed defaults are often sufficient for launch; reassess based on dispute and fraud patterns.
Subscription platformsStripe (recommended)OptionalYes — recommendedRecurring billing has different risk profile — churn > fraud. Stripe’s defaults usually sufficient.
E-commerce (white-label)Platform (mandatory)YesNo — must self-manageFull control = full responsibility. Dashboard-none configurations need platform-managed risk.

Key rules:

  • If chargePattern is destination or separate, the platform is the merchant of record and MUST manage risk — but Radar does the heavy lifting.

  • If chargePattern is direct, Stripe-managed risk is available and recommended.

  • Whenever losses_collector: "stripe" is recommended (Managed Risk — full dashboard, or Stripe-managed/platform-managed pricing with Express dashboard, public preview), Radar for Platforms is REQUIRED, not optional. Don’t tell the platform it can “upgrade to Radar later” — recommend enabling Radar for Platforms as part of the same recommendation.

  • Self-managing risk adds: dispute webhook handling, Radar configuration, ongoing monitoring, and financial exposure. Always warn the user about this added complexity.

  • Stripe Radar is a tool platforms use to manage risk — it’s NOT the same as “Stripe manages risk for you.” When Radar is enabled, the platform is still responsible; Radar just automates the detection.

Fee Structure Mapping
Charge PatternFee MethodImplementation
Direct (Stripe owns pricing)application_fee_amountStrongly recommended. Charged in addition to Stripe fees that the connected account pays. The platform retains the full application fee amount.
Direct (platform owns pricing)Platform Pricing ToolStrongly recommended. Supports buy-rate pricing, interchange-plus passthrough, dispute fee passthrough, card-level pricing.
Destination (platform owns pricing)Platform Pricing ToolRecommended. Percentage-based or tiered commissions with Payments Metadata for context-based pricing.
Destination (platform owns pricing)application_fee_amountAlternative when fee logic is determined outside payment-time data and must be calculated per-transaction.
Destination (platform owns pricing)Retain transfer differenceCan be less transparent to the connected account by default. Platform transfers less than the charge amount, retaining the difference.
Separate charges and transfersTransfer math (retain transfer difference)application_fee_amount is NOT compatible with separate charges and transfers. Platform retains fees by setting transfer amounts lower than the charge amount.

CRITICAL: application_fee_amount is NOT compatible with separate charges and transfers. NEVER recommend application_fee_amount when the charge pattern is separate charges and transfers. Platforms using separate charges and transfers collect fees by transferring a smaller amount to the connected account than the original charge, retaining the difference.

For separate charges and transfers, frame fee guidance as transfer math: platform_margin = charge_amount − total_transfers_to_connected_accounts − Stripe_fees

Fee Calculation and Fee Economics

Who pays Stripe’s processing fees is one of the determining factors in whether your platform is profitable.

Stripe charges processing fees on every transaction. Rates vary by region, card type, payment method, and negotiated terms — see stripe.com/pricing for current rates. Who actually pays these fees depends on the charge pattern:

Charge PatternWho Pays Stripe FeesPlatform Net per Transaction
Destination chargesPlatform pays Stripe feesapplication_fee_amount − Stripe_fees
Destination charges + on_behalf_ofPlatform still pays (changes statement descriptor, merchant of record, and dispute management — see charge-patterns.md)Same as above
Direct charges (fees_collector: "stripe")Connected account pays Stripe feesapplication_fee_amount (platform retains full fee — Stripe fees paid by connected account)
Direct charges (fees_collector: "application")Platform pays Stripe feesapplication_fee_amount − Stripe_fees
Separate charges & transfersPlatform pays Stripe feesMust account for fees in transfer math

Who pays Stripe fees on direct charges depends on the fees_collector responsibility setting. When fees_collector: "stripe" (the default for SaaS), the connected account pays Stripe fees and the platform retains their full application_fee_amount. With fees_collector: "application" (used with Platform Pricing Tool and platform-owned pricing), the platform pays Stripe fees instead.

Profitability warning: If the platform’s desired fee margin is low relative to Stripe’s processing fees for their region, destination charges may cause per-transaction losses unless the application_fee_amount is set high enough to cover Stripe fees + the platform’s margin. DO NOT make definitive profit and loss claims with specific dollar amounts — pricing is situation-dependent.

Strongly recommend:

  • The Platform Pricing Tool to configure pricing rules without code (requires platform-owned pricing, that is, fees_collector: "application"; supports direct and destination charges, NOT separate charges and transfers)

  • Monitoring the margin report in the Stripe Dashboard

  • Checking stripe.com/pricing for region-specific rates

Fee calculation question (Q6b)

After the user specifies their platform fee, identify the charge pattern first. This question applies to destination charges only. For separate charges and transfers, don’t ask how to set application_fee_amount — use transfer math instead. For direct charges with Stripe-owned pricing (fees_collector: "stripe"), the connected account pays Stripe fees and this question is moot. For direct charges with platform-owned pricing (fees_collector: "application"), the platform pays Stripe fees — use the Platform Pricing Tool.

IMPORTANT: With destination charges, the platform ALWAYS pays Stripe’s processing fees. They’re deducted from the platform’s balance, not the connected account’s. The platform can’t make connected accounts pay Stripe fees directly. The choice is how to calculate application_fee_amount.

Use Option A and Option B below as reference material for destination charges.

Option A — Include Stripe fee estimate in application_fee_amount (recommended for low margins) The application_fee_amount includes BOTH an estimated Stripe processing fee and the platform’s fee. The platform takes a larger cut to cover both its margin and Stripe’s fee. The platform’s fee percentage is preserved as net margin.

Concept: application_fee_amount = estimated Stripe processing fee + platform margin
Platform NET = the platform's full fee percentage (margin preserved — Stripe fee covered by the higher application_fee_amount)
Connected account receives = charge amount − application_fee_amount

Option B — Platform fee only (platform absorbs Stripe fees) The application_fee_amount is only the platform’s cut. Stripe processing fees reduce the platform’s net. Only viable when the platform fee is substantially higher than Stripe’s processing fees.

Concept: application_fee_amount = platform fee only
Platform NET = platform fee − Stripe processing fee
Connected account receives = charge amount − application_fee_amount

Recommendation output rule: choose the single most appropriate option for the specific scenario instead of always presenting both. Keep the other option as reference material and show it only when the user asks for alternatives and tradeoffs.

Decision guidance: If the platform fee appears low or uncertain relative to processing fees (check stripe.com/pricing), recommend Option A to preserve platform margin (or switch to direct charges when appropriate). Use Option B only when fee headroom is clearly high and the platform explicitly accepts absorbing fee variance.

For destination charges, NEVER say “seller pays Stripe fees” or “connected account pays Stripe fees.” The platform always pays. The choice is whether to set a higher application_fee_amount to preserve the platform’s margin.

Minimum charge amounts: Stripe enforces minimum charge amounts by currency. For micro-payment platforms with very small transaction amounts, warn the user that:

  • Stripe enforces minimum charge amounts that vary by currency

  • On very small charges, the fixed fee component becomes a large percentage of the transaction

  • Micro-payments may need batching or alternative approaches to be economically viable

Fee guidance principles

When presenting fee recommendations:

  • DO NOT hardcode specific processing fee amounts (for example, “2.9% + $0.30”) — these are US-only and vary by region, card type, and payment method

  • DO NOT make definitive profit and loss claims (for example, “you WILL lose money”) — say “you may lose money at standard rates”

  • DO link to stripe.com/pricing for region-specific rates

  • DO strongly recommend the Platform Pricing Tool

  • DO recommend monitoring the margin report in the Stripe Dashboard

  • DO explain the concept of application_fee_amount and what it should include based on the calculation choice

  • DO return one recommended fee option for the scenario (don’t always present both Option A and Option B)

  • DO prefer margin-preserving recommendations in low-margin or uncertain-margin scenarios

  • DO use transfer-math framing for separate charges and transfers (never application_fee_amount)

  • NEVER say “seller pays Stripe fees” or “connected account pays Stripe fees” for destination charges — the platform always pays

Fee sanity checks
  • If the Platform Pricing Tool is used, ensure application_fee_amount is NOT set on the PaymentIntent — explicit application_fee_amount overrides the Platform Pricing Tool.

  • application_fee_amount is NOT compatible with separate charges and transfers. NEVER recommend it for separate charges and transfers.

  • For separate charges and transfers, validate the transfer-math model (charge_amount − total_transfers − Stripe_fees) to ensure expected platform margin.

  • Platforms based outside Brazil can’t collect application fees from Brazilian connected accounts due to regulatory requirements. Same restriction applies to Malaysia.

  • Use amount on the ApplicationFee object, not the charge field, for accurate fee reporting.

  • For small transactions (for example, $1–$5), fees may be large relative to proceeds. Consider creative ways to combine transactions.

  • Low-complexity margin path: Direct charges with Stripe-owned pricing. Stripe handles pricing complexity; the platform charges a SaaS fee or application fee on top.

  • If the platform owns pricing with any charge type: warn about potential per-transaction losses. Strongly recommend the Platform Pricing Tool and monitoring the margin report.

Loss Liability (Negative Balance Liability)

Loss liability and risk management are TWO SEPARATE decisions. The current skill MUST NOT conflate them.

ConceptWhat it meansWhere configured
Negative balance liabilityWho is financially LIABLE when disputes and chargebacks create negative balances on connected accountsConfigured when creating the connected account; may require visiting the Stripe Dashboard → Connect platform profile to acknowledge understanding of how negative balance liability works
Risk managementWho DETECTS and PREVENTS fraud (Radar, rules, monitoring)Code + Dashboard (Radar settings)

You can have Stripe own loss liability while still using Radar for fraud detection. Radar is available regardless of loss liability setting.

Loss Liability Recommendations by Business Model

Recommendation depends on charge pattern:

  • Marketplaces (destination or separate charges): Platform-owned loss liability. This is required for destination charges — it enables connected account balances to go negative, which the platform needs to reverse transfers (for example, for refunds or disputes). Also required for Express dashboard with non-direct charge patterns today.

  • SaaS (direct charges): Stripe-owned loss liability is the recommended default — SaaS platforms shouldn’t need to bear negative balance liability because the connected account is the merchant of record. This is available with Express dashboard (Stripe-managed or platform-managed pricing, public preview) or full dashboard.

  • Enterprise or white-label: Platform-owned. Full control = full responsibility.

Business ModelRecommended Loss LiabilityWhy
MarketplacePlatformRequired for destination charges — enables connected account negative balances for transfer reversals
On-demand servicesPlatformSame as marketplace — uses destination charges
Professional servicesPlatformSame as marketplace — uses destination charges
Rental marketplacePlatformSame as marketplace — uses destination charges
Event ticketingPlatformSame as marketplace — uses destination charges
CrowdfundingPlatformUses separate charges — platform-owned loss liability enables flexible transfer reversals
Subscription platformsPlatformUses destination charges — platform-owned loss liability required
SaaS with paymentsStripeSaaS platforms use direct charges — connected account is merchant of record. Available with Express dashboard (Stripe-managed or platform-managed pricing, public preview) or full dashboard.
E-commerce (white-label)PlatformFull control = full responsibility (dashboard: none, platform-managed)
B2B platformsPlatformEnterprise requirements usually demand full control
Loss Liability Dashboard Setup

Loss liability is configured when creating connected accounts, but the platform must first visit the Stripe Dashboard → Connect platform profile (dashboard.stripe.com/settings/connect/platform-profile) to acknowledge understanding of how negative balance liability works.

The platform profile page asks about “Negative balance liability” (formerly called “loss liability”). The choice determines which account configuration combinations are available:

  • Stripe manages losses → Set defaults.responsibilities.losses_collector: "stripe" in v2 API

  • Platform manages losses → Set defaults.responsibilities.losses_collector: "application" in v2 API

When guiding users through this page, always:

  1. Explain what loss liability means in plain language with a concrete example

  2. Recommend platform-owned for marketplaces using destination or separate charges — required for transfer reversals, and required for Express dashboard with those non-direct charge patterns

  3. Recommend Stripe-owned for SaaS platforms using direct charges — this now works with either Express dashboard (Stripe-managed or platform-managed pricing, public preview) or full dashboard

  4. Keep this decision separate from Radar and fraud detection

Integration Antipattern Warnings

Read the full compatibility matrix in compatibility-matrix.md. This section is a quick reference.

Common Blocked Combinations

These combinations are true antipatterns that Stripe will never support. Do NOT recommend them:

  1. losses_collector: "stripe" + destination charges — Liability and fee behavior don’t align with this charge pattern. Treat as BLOCKED when losses_collector: "stripe" is selected.

  2. losses_collector: "stripe" + separate charges and transfers (including on_behalf_of) — Same negative balance mechanism as destination charges. Platform can’t recover funds from connected accounts that only receive transfers.

  3. Express dashboard + losses_collector: "stripe" + non-direct charges — Express dashboard with Stripe-managed negative balance liability is only supported for direct charges (Stripe-managed pricing with fees_collector: "stripe", or platform-managed pricing with fees_collector: "application"), and only as a public-preview capability. For destination charges or separate charges and transfers, this combination remains BLOCKED regardless of fees_collector. express/stripe/application (Express + Stripe-managed pricing + platform-managed losses) also remains BLOCKED for all charge patterns.

  4. dashboard: "full" + destination charges or separate charges and transfers — Full dashboard has reduced payment and dispute detail for destination and separate charges. Full dashboard provides complete payment and dispute management for direct charges only.

  5. fees_collector: "stripe" + losses_collector: "application" (Stripe-owned pricing + platform-owned losses) — This combination is BLOCKED for all charge types and all dashboards. The reverse — fees_collector: "application" + losses_collector: "stripe" (platform-managed pricing + Stripe-managed losses) — is SALES-GATED for full dashboard, BLOCKED for none dashboard, and, for express dashboard, ALLOWED as a public-preview path (platform-managed pricing) with direct charges only.

  6. (on_behalf_of is out of scope for this guide — redirect to docs or sales if encountered.) on_behalf_of with destination charges for marketplace use cases — Do NOT use on_behalf_of for marketplaces. on_behalf_of makes the connected account the merchant of record, but in a marketplace the platform is the merchant of record. If a user requires on_behalf_of, direct them to Stripe Connect docs or Stripe sales.

  7. application_fee_amount with separate charges and transfers — NOT compatible. Platforms using separate charges and transfers collect fees by transferring less than the charge amount.

Blessed Paths (Safe Defaults)
Business ModelDashboardFeesLossesCharge TypeStatus
MarketplaceexpressapplicationapplicationDestinationCAUTION — recommended path; always include Express dispute-visibility warning (see compatibility-matrix.md)
Self-serve SaaS, Stripe-managed pricingexpressstripestripeDirectALLOWED (PUBLIC PREVIEW) — low-operations default for self-serve SaaS platforms; disclose public-preview status
Self-serve SaaS, platform-managed pricingexpressapplicationstripeDirectALLOWED (PUBLIC PREVIEW) — for self-serve SaaS platforms that want pricing control; pair with the Platform Pricing Tool; disclose public-preview status
SaaSfullstripestripeDirectALLOWED — connected accounts are independent merchants that need full, independent Stripe operations
EnterprisenoneapplicationapplicationAnyALLOWED — full platform control

Any deviation from these blessed paths must trigger a compatibility check against compatibility-matrix.md. If the user’s choices lead to a BLOCKED combination, don’t present it. Explain why it fails and recommend the nearest allowed alternative.

Scope boundary: This guide supports the blessed paths above. Configurations outside these paths (full+application, on_behalf_of, OAuth, non-payments products like Issuing, Treasury, Capital, Tax, or Terminal) must trigger sales-led detection and redirect to docs or sales. none dashboard requires platform-owned pricing AND platform-owned losses — no other none combination is valid even for sold users.

Additional Antipatterns to Watch For
  • OAuth instead of Account Links — Developers think OAuth is simpler but lose platform control (connected account can disconnect at any time). Recommend Account Links or embedded components.

  • Custom onboarding (dashboard: "none" + API-based) — Ongoing requirement collection burden and country-specific complexity. Only for platforms with dedicated compliance engineering.

  • Dashboard DIY without refund and dispute flows — Platforms build earnings views but skip refund and dispute management. Connected accounts can’t respond to disputes, leading to auto-losses.

  • Stripe does NOT enforce merchant of record at API level — Platforms can create charges with any pattern regardless of their onboarding declaration. Code must consistently use the correct charge type for the actual business relationship.

Requirements and compatibility

Written for: Claude Code

Works with: Claude Code, Claude apps, OpenAI Codex, GitHub Copilot, Cursor, Gemini CLI, Kiro, OpenCode, Goose, Amp, Roo Code, JetBrains Junie, Factory Droid, Devin (ex-Windsurf), Mistral Vibe, OpenHands, Letta

“Works with” means the tool reads the open Agent Skills format; a skill written for one tool may use features others lack.

Needs: Names Claude Code tools

Security

No issues found by our static scan· No issues found

A static scan is not a guarantee. Skills are third-party content: review a skill before you let an agent use it.

Attribution and licence

Published by
Stripe
Publisher
Stripe (Official)
Source
stripe/ai · skills/connect-recommend · commit 38fa045
Licence
MIT License (redistribution allowed)
  • LICENSE (added by AutoGineer from LICENSE)
  • ATTRIBUTION.md (written by AutoGineer)
Synced
Also distributed in
stripe/ai, stripe/ai, stripe/ai, stripe/ai, stripe/ai

AutoGineer is not affiliated with or endorsed by Stripe or Stripe.

Download ZIP

The ZIP holds the skill’s files, its licence files and an ATTRIBUTION.md. Download connect-recommend.zip