Docs
Sign In

Subscriptions & Policies

This guide covers managing member subscriptions and configuring cancellation and pause policies for your academy.

Managing Subscriptions

Navigate to PaymentsSubscriptions 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 PaymentsPolicies 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

Max Pause DurationMaximum number of days a membership can be paused at once (default: 30 days)
Max Pauses Per YearMaximum number of times a member can pause per calendar year (default: 2)
Pause MessageCustom message shown to members when they pause their subscription

How Pausing Works

1

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.

2

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
3

Billing is frozen

The subscription is set to pause_collection on Stripe, which stops all billing. The resume date is automatically calculated and stored.

4

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.