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).