# Stripe Connect payments (Agent Skill)

> Marketplace money movement on Stripe Connect: one buyer charge split across sellers, escrow and reserves, account onboarding, subscriptions with dunning, and a reconciled ledger.

Page: https://timerise.ai/skills/stripe-connect-subscriptions

Agent Skill `stripe-connect-subscriptions`: https://github.com/timerise-ai/stripe-connect-subscriptions. Category: Payments & compliance. Runs on Next.js; backend: Backend-agnostic store adapter.

Latest release: v0.1.11 (2026-09-29).

Install: npx skills add timerise-ai/stripe-connect-subscriptions. Timerise builds it on a brief; the price comes from the brief.

A marketplace takes one payment from the buyer and owes several sellers. Stripe Connect moves that money, but every step can fail on its own. The buyer's charge succeeds. A transfer to one seller is rejected. A refund claws back money already paid out. A subscription card expires. Get any of it wrong and someone is paid twice, or never.

This skill builds both money flows on one Stripe account. Marketplace settlement with separate charges and transfers, escrow and rolling reserves, and connected-account onboarding. Platform subscriptions charged to sellers off-session, with dunning when a card fails.

A ledger reconciles what Stripe says against what you recorded. Every webhook is safe to replay, so a crash between two writes never strands a seller.

Build Stripe Connect marketplace money movement and Stripe platform subscription billing in a Next.js App Router app. Use when: (1) one buyer charge must split across several sellers: separate charges and transfers, transfer groups, escrow, rolling reserves, payouts to connected accounts; (2) implementing Connect account onboarding, `account.updated` capability flags, or debugging why a connected account is never funded; (3) charging tenants a recurring platform fee off-session with SetupIntents, saved cards and dunning; (4) reconciling gateway fees, transfer reversals, refund or chargeback clawbacks against a ledger; (5) the user mentions: Stripe Connect, connected account, transfer_group, source_transaction, separate charges and transfers, destination charge, application_fee_amount, acct_, marketplace payouts, split payment, Express onboarding, account.updated, off_session, SetupIntent, dunning, subscription invoices, whsec_, "merchant never gets paid", "Funds can't be sent to accounts located in". Carries settlement internals the store's atomic claims and the money tests verify: webhook idempotency, single-flight claims, transfer retry with adoption, and the region rule that decides whether a connected account can be paid at all. Next.js App Router oriented; the data layer is one PaymentsStore seam, so any relational backend fits. Not a general checkout or PayPal skill.

Written by the engineers who have shipped this module. The earlier implementation it was audited against was the payments and billing module of a multi-vendor marketplace on Stripe Connect. The templates hold four properties end to end: every webhook is claimed once and re-run to completion after a crash, every transfer is retried with adoption rather than re-sent, every seller is inside the platform's payout corridor before a charge is split, and every fee, reversal and clawback reconciles to the ledger. The money module's ten tests pin the rounding and distribution; the atomic claims in the store contract carry the rest. The record of what the audit changed is in [`references/provenance.md`](references/provenance.md).

What it builds:
- Split charges
- Escrow and reserves
- Account onboarding
- Off-session billing with dunning
- Ledger reconciliation

When to use:
- One payment splits across several sellers, with the platform taking a cut.
- Sellers onboard to Connect and are paid on a delay (escrow, reserves, KYC).
- The platform bills its own sellers a recurring fee on a saved card.
- A connected account looks healthy but has never received any money.

Non-negotiables:
- Never let a failed transfer fail the settlement. Record the leg unfunded and continue. The charge has already succeeded, so the webhook must succeed too; the retry cron funds the leg later.
- Never treat a duplicate webhook insert as "already handled". The insert is a *claim*; the retry after a delivery crashed mid-handling re-runs the handlers, so every event runs to completion exactly once.
- Never re-send a transfer without asking Stripe whether it already exists. A leg recorded unfunded because the *response* was lost pays twice once Stripe's 24h idempotency window passes.
- Never derive settlement exclusivity from a status flag written at the end. Two callers reach settlement routinely; an atomic leased claim is what makes inventory and transfers happen once.
- Never reverse more than a transfer's remaining headroom. Stacked reversals, such as a gateway fee and then a refund, are rejected past the original amount.

Not this:
- Single-seller checkout, no split: Stripe Checkout / Payment Element directly
- PayPal Marketplace onboarding + payouts: A PayPal skill; only the seams are shared
- Card UI, Payment Element styling: Your design system; this skill is server-side

Booking features we build with it:
- Deposits and online payments: /features/deposits-and-payments

What to tell your agent:
- Add marketplace payments with Stripe Connect: a buyer pays once for items from several sellers, each seller gets their share minus our 10% fee, paid out after a 7-day hold.
- Bill each seller on our platform a monthly fee on their saved card, with retries and emails when the card fails.
- One of our connected accounts looks healthy in Stripe but has never received a payout. Find out why.

Agent eval results (newest per agent and prompt):
- Gemini CLI (gemini-3.8-flash) on v0.1.11, 2026-09-29: pass (Stripe)
- Codex CLI (gpt-6-astra) on v0.1.11, 2026-09-29: pass (Stripe)
- Claude Code (claude-opus-5-5) on v0.1.11, 2026-09-29: pass (Stripe)

Recent releases:
- v0.1.11 (2026-09-29): Fix release, from scoring the prompt-1 agent eval runs against 0.1.10.
- v0.1.10 (2026-09-29): Fix release, from scoring the prompt-1 agent eval runs against 0.1.9.
- v0.1.9 (2026-09-29): Brings the repository to the current skill standard. The money model, the templates' logic and the non-negotiables are unchanged from 0.1.8.
