Team payouts

App-owned team ledger, Stripe Dashboard transfers, and optional in-app Connect Transfer.

Staff → Payouts (and Connect on each team member). This is not student checkout. Eligibility needs a roster profile: rate, Connect, taught activity, or an active row. A login with no roster row does not appear. See Team and logins. Class and appointment Instructor assignment is still the teacher of that session.

Two Stripe uses

Flow Stripe account Charge pattern
Student / member class payments Integrations secret key (platform) Existing Checkout. Not Connect destination or direct charges.
Team 1099 payouts Express connected accounts Separate Transfer from platform balance. Prefer Dashboard; optional in-app Transfer.

Ledger (source of truth)

Taught class pay plus taught private appointments plus admin adjustments (bonus, hourly, private, setup). Stripe Dashboard does not replace this — if you pay only in Dashboard, Mark as paid in ledger so unpaid totals stay accurate.

Taught amount (group class): class rate, else hourly × duration. Not at booking. Pays only after ends_at, and only if at least one booking is checked in / present (late check-in counts). Zero bookings, all no-shows, or all cancelled bookings are unpaid. Cancelled classes are skipped. Already-paid lines are flagged rather than reversed if attendance or cancel happens later.

Taught amount (appointment): hourly × duration when hourly is set, else class rate. Appointment type price is client-facing, not instructor pay. Cancelled and no-shows skipped. A session that was scheduled and then ended still counts. Booking spends a private pack or single private credit, not a group membership.

Onboarding

Stripe-hosted Account Links / Express login. Paying and mark-paid stay admin-only on Staff → Payouts.

Test mode

Same test Stripe key as student charges. Platform Transfer needs available balance (Stripe’s test card that adds funds).