Subscriptions & Policies
This guide covers managing member subscriptions and configuring cancellation and pause policies for your academy.
Managing Subscriptions
Navigate to Payments → Subscriptions tab to view and manage all member subscriptions. This tab is available to owners and admins only.
Searching and Filtering
- Search by member name or email
- Filter by status: All, Active, Trialing, Paused, Past Due, or Cancelled
Subscription Statuses
| Status | Meaning | |--------|---------| | Active | Member is being billed on schedule | | Trialing | Member is in their free trial period | | Paused | Billing is temporarily frozen (if pause is enabled) | | Past Due | A payment failed — Stripe will retry automatically | | Cancelled | Subscription has ended | | Cancelling | Scheduled to cancel at the end of the current billing period |
Available Actions
Actions vary based on the subscription's current status:
Active or Trialing subscriptions:
- Pause — Temporarily freeze billing (if pause is enabled in policies)
- Cancel — Schedule cancellation at the end of the billing period
Paused subscriptions:
- Resume — Restart billing immediately
Cancelling subscriptions:
- No actions available (cancellation is already scheduled)
Cancellation Policies
Configure how cancellations work by navigating to Payments → Policies tab.
Minimum Commitment Period
Set a minimum number of months a member must stay subscribed before they can cancel. This is useful for contracts or promotional pricing.
- Set to 0 for no commitment (members can cancel anytime)
- When a member tries to cancel within the commitment period, the cancellation is scheduled for the commitment end date instead of the end of the current billing period
- The member continues to be charged until the commitment period ends
Example: With a 3-month commitment, if a member subscribes on January 1st and tries to cancel on February 15th, their subscription will end on April 1st (3 months from start).
Cancellation Notice Period
Set the number of days before the end of a billing period that a member must cancel.
- Set to 0 for no notice requirement (cancel anytime before period ends)
- This is primarily informational and displayed to members on the mobile app
Cancellation Message
A custom message shown to members when they initiate a cancellation. Use this to share important information, offer alternatives, or express appreciation.
Example: "We're sorry to see you go. Remember, you can pause your membership instead of cancelling. Contact us if you'd like to discuss your options."
Pause Policies
Pause policies allow members to temporarily freeze their subscription billing without cancelling. This is ideal for members who are traveling, injured, or taking a break.
Enabling Pauses
Toggle Enable Pausing in the Policies tab. When disabled, the pause option is hidden from both admins and members.
Pause Settings
How Pausing Works
Member or admin initiates pause
Either the member (from the mobile app) or an admin (from the Subscriptions tab) selects the number of days to pause.
Validation checks
The system verifies:
- Pausing is enabled for the academy
- The pause duration doesn't exceed the maximum
- The member hasn't exceeded the maximum number of pauses per year
Billing is frozen
The subscription is set to pause_collection on Stripe, which stops all billing. The resume date is automatically calculated and stored.
Automatic resume
When the pause period expires, Stripe automatically resumes billing. The subscription status returns to active.
Manual resume
Members or admins can resume a paused subscription early by clicking the Resume button. This immediately restarts billing without waiting for the pause period to end.
Mobile Membership Experience
Members manage their subscription from the Membership screen on the mobile app (accessible from the Profile tab):
Active Subscription View
- Plan name, price, and billing interval
- Status badge (Active, Trialing, etc.)
- Member since date
- Next billing date
- Action buttons: Pause (if enabled) and Cancel
Paused Subscription View
- Shows the resume date
- Resume button to restart billing early
- Cancel button still available
Cancellation Flow
When a member taps Cancel, they see:
- The academy's custom cancellation message (if set)
- A commitment period warning if applicable (showing when their subscription will actually end)
- A confirmation prompt before proceeding
Billing History
A scrollable list of all successful payments, showing the date, description, and amount.
No Subscription
If a member doesn't have an active subscription, they see a prompt to View Plans with a link to available membership plans.
Payment History
The History tab on the Payments page shows all payment transactions for your academy. Records are created automatically by the Stripe webhook integration.
Filtering
- By Type: All, Subscription, One-Time, Ad Hoc
- By Status: All, Succeeded, Failed, Pending, Refunded
Payment Types
| Type | Description | |------|-------------| | Subscription | Recurring subscription payments and failed attempts | | One-Time | Store purchases via Stripe Checkout | | Ad Hoc | Direct charges initiated by admins |
Automatic Sync
Payment records are created and updated automatically through Stripe webhooks. You never need to manually enter payment data. The webhook system handles:
- Successful subscription payments (marks as "succeeded")
- Failed payment attempts (marks as "failed", updates subscription to "past due")
- Subscription status changes (active, paused, cancelled)
- Store checkout completions
Idempotent processing
The webhook system is designed to handle duplicate events safely. If Stripe sends the same event twice (which can happen during network issues), the platform detects the duplicate and skips it. This prevents double-counting of payments.