On this page
This article explains how paid access works on your training site: the plan catalog your customers sign up to, the registration tiers that define what each account can do, how to connect Stripe so you can take payments, and what happens when an account outgrows its plan limits. It is written for platform admins working in the admin panel.
Where to find it
- In the sidebar of /admin, open Subscription Plans, then Plans (/admin/subscription-plans). The page has two tabs: Subscription Plans (billing definitions) and Registration Tiers (what each plan grants).
- Billing & Invoices (/admin/billing-invoices) lists every invoice, filterable by status (Draft, Open, Paid, Void), payer (Organization or Individual), and source (Order or Subscription).
- Stripe setup lives under Settings > General (/admin/settings), on the Stripe tab.
- Each organization's subscription is managed from Organizations: open an organization and use its Subscription card.
Tiers and plans are two halves of one offer
A registration tier describes the offer: the account type it is sold to (learner, group leader, or organization), its limits, the capabilities it grants, its price, and its visibility. Each tier is linked one-to-one to a subscription plan, which carries the billing details: billing interval (Monthly, Quarterly, or Yearly), an optional free trial in days, an optional signup fee, and a "Stop Renewing After" cap.
The tier is the source of truth. Saving a tier syncs its price, active state, and sort order to the linked plan and on to Stripe. That is why the plan form shows Active as a read-out when a tier is linked: availability is decided on the tier, and changing it there updates the plan too.
Create or edit a registration tier
- Go to Subscription Plans > Plans and open the Registration Tiers tab.
- Click to create a tier, and pick the Account Type. The form adapts: learner tiers do not show group caps or overage pricing.
- Set the Tier Name and Tier Price (entered in cents).
- Set the limits that apply: Max Groups, Max Courses Per Group, Max Users, Pre-purchased Seats, and Max Storage (MB).
- Tick the boxes under Capabilities granted by this plan to choose which features subscribers get.
- Optionally set a Course Discount (%) and Bulk Course Discount bands (see the commerce article for how these behave at checkout).
- Optionally fill in Overage Pricing (per additional, in cents) for extra users, groups, or courses per group. Leaving a price blank makes that cap a hard wall.
- Choose Visibility (Public or Private), a Sort Order, and whether this tier is the Default for new signups of its account type.
- Save. The linked subscription plan and its Stripe price are kept in step automatically.
Default plan behavior
- There is only ever one default tier per account type. Marking a tier as default automatically unmarks the previous one.
- The platform guarantees that each public sign-up account type always keeps an active default plan, so self-serve registration never dead-ends. You cannot delete or deactivate the last active default for an account type.
- Private tiers never appear at public signup and cannot be the default. Use them for one-off plans you assign to a specific customer by hand.
Customizable plans
A plan can be flagged as customizable. Subscribers on such a plan do not get a fixed course list: they pick their own courses in the package builder, and billing is per chosen course. Organization admins reach the builder through a "Build my package" button on their own subscription plans page, and they can request a course-selection change later, which is quoted before it is applied.
Connect Stripe
- Open Settings > General and switch to the Stripe tab.
- Under "Add Stripe keys", pick which mode you are saving keys for (Test or Live), paste the publishable and secret key from your Stripe dashboard, and save. On save the platform verifies the secret key with Stripe and automatically registers a webhook endpoint pointing at your own site address. There is nothing to set up manually inside Stripe.
- Check the per-mode status cards: Charges enabled, Payouts enabled, and Webhook registered. Test and live modes are tracked completely independently, each with its own keys and webhook.
- When you are ready to take real payments, use the Make Live the active mode button. A banner always shows which mode is currently taking payments.
- If a webhook was deleted or broken on the Stripe side, use Re-register webhook (active mode). Disconnect (active mode) stops payments in that one mode and leaves the other untouched.
The tab also has a Skip payment in test mode toggle: while an organization is in test mode, checkout completes with no card entry and no charge (useful for demos). Organizations can override this default in their own settings, and it never applies in live mode. Payments always go directly to your own Stripe account.
Assign a plan to an organization by hand
- Open Organizations, then the organization.
- On the Subscription card, click Assign Plan (or Change Plan if one exists).
- Pick the plan, a status (Active or Trialing, with an optional trial end date), and save.
This creates a local, non-billed subscription, intended for trials, demos, and setup. Because it was assigned rather than bought, Stripe has nothing to charge, so the card shows an "Assigned by hand" warning with an Email payment setup link button that invites the organization to set up payment themselves.
Quotas and overage purchases
Tier limits (users, groups, courses per group, storage) are enforced live. If you set an overage price on a dimension, an account that hits its cap can buy extra capacity itself: the purchase runs through the normal checkout, produces an order and an invoice, and records a capacity grant. The effective cap is then the tier's included number plus everything purchased, so the plan's own definition is never rewritten by a sale. If a dimension has no overage price, it is simply not purchasable and the cap stands.
Why did this happen?
Why did another tier lose its Default badge when I saved this one?
Only one tier per account type can be the default. Saving a tier with the default box ticked automatically unmarks the previous default for that account type.
Why can't I delete or deactivate a tier?
It is the last active default for its account type. Every account type must keep at least one active default plan so public registration always has somewhere to land. Make another tier the default first, then remove this one.
Why is the Active checkbox on the plan form not editable?
The plan is linked to a registration tier, and the tier decides whether the offer is available. The plan form shows Active as a read-out of the tier so the two can never disagree and advertise a plan that cannot be bought.
Why does an organization show an active subscription but no payments are collected?
The plan was assigned by hand from the admin panel, which creates a local subscription with no Stripe counterpart, so there is nothing to charge on the renewal date. Use the Email payment setup link button on the organization's Subscription card, or keep collecting manually.
Why do buyers see "Online payments are not set up yet"?
The currently active payment mode has no verified Stripe keys. Open Settings > General > Stripe, check which mode is active, and save keys for it. Remember that test and live keys are separate: switching the active mode to live does nothing until live keys are saved and verified.
Why can't an organization buy extra users even though it hit its cap?
Its tier has no overage price for that dimension. A blank overage price means the cap is a hard wall by design. Edit the tier and set a per-extra-user price to make extra capacity purchasable.
Related
- Initial setup checklist
- Managing organizations
- Commerce: products, orders, and discounts
- Add-ons, reports, and support
- Your plan and features (for organization admins)
Still stuck? Reach out through support and include the plan or organization name you are working with.