[Admin] Family & Household plans
Family plans let one paying principal cover multiple household members under a single Stripe subscription. Common for yoga studios, gyms, and community clubs.
Enabling a family plan:
- Clubs: Admin → Tiers → Edit tier → tick "Family plan"
- Studio: Admin → Packages → Edit plan → tick "Family plan"
Configurable limits (defaults in parentheses):
- `maxPrincipalMembers` (2) — adults on the plan, including the paying principal
- `maxDependentMembers` (2) — children under the age limit
- `dependentAgeLimit` (18) — auto-categorises members at signup
How it works:
- The principal pays a single Stripe subscription at the tier price.
- Family members are added from the principal's member dashboard — one at a time, with name + email (for principals) + date of birth.
- The system auto-categorises:
- Age < `dependentAgeLimit` → dependent
- Age ≥ limit → principal
- Limits are enforced server-side — you can't exceed `maxPrincipalMembers` + `maxDependentMembers`.
Family member types (Clubs):
- Principal (adult) — full access + their own login + their own QR check-in code
- Dependent (under age limit) — linked to principal, checks in under principal's QR or their own sub-code, no separate login
Studio: the member adds family members (name, relationship, date of birth) from My Membership, then books each of them from the "Booking for" choice when booking a class. Family members don't get their own login or check-in code in Studio.
Billing:
- One subscription on the principal's account
- Adding/removing family members doesn't prorate — limits are per-plan, not per-member-month
- If the principal cancels, all linked family members lose access on the same effective date
Health & safety:
- Dependents' waivers are signed by the principal on their behalf (tracked in the audit log)
- Check-in scanner distinguishes principal vs dependent in the UI
Audit trail:
`family_member_added` / `family_member_removed` entries in `membership-package-history`.