Billing
Stats, payment recovery, plan changes, freezes, and refunds.
/dashboard/platform/billing (getBillingStats, billingWorkspace).
Review the recovery queue
Failed payments (GymPayment status: pending, succeeded, failed, refunded).
Record follow-up
markPaymentRecoveryContacted records that staff followed up.
Change a plan
changeMembershipTier.
Refund
refundGymPayment.
Members use /account/membership for freezeMembership, unfreezeMembership, cancelMembership and the Stripe billing portal (getStripeBillingPortal). "A membership ending after this paid period cannot be frozen". "Membership renewal is already cancelled". "Membership has no active Stripe subscription".