On this page
This article covers everything you sell on your training site as a platform admin: products and certification bundles, what happens when an order completes, the three layers of discounts, custom training packages, and how refunds are processed.
Where to find it
In the sidebar of /admin:
- Products, with All Products (/admin/products), Categories (/admin/products/categories), and Certifications (/admin/certifications).
- Coupons (/admin/coupons), Orders (/admin/orders), and Shipments (/admin/shipments).
- Training Packages (/admin/training-packages). This menu item only appears when the Custom Training Packages add-on is enabled (see Subscription Plans > Add-Ons).
- Billing & Invoices (/admin/billing-invoices) for the invoices your orders generate.
- Tax rates and shipping rates live under Settings > General, on the Tax and Shipping Rates tabs.
Products and certifications
Every product has a type, which decides what the buyer receives:
| Type | What the buyer gets |
|---|---|
| Course | Enrollment in the linked course |
| Bundle | Everything inside a bundle (see Certifications below) |
| Seat Pack | A block of seats to hand out to a group |
| Subscription | A recurring plan |
| Event | An event ticket |
| Digital Download | A file, with an optional download limit and expiry window |
| Video | Timed viewing access to an uploaded file or external video |
| Book (physical) | A shipped item |
| Clothing (with variants) | A shipped item with size or style variants |
Course products must be linked to a course; that link is what triggers enrollment on purchase. Physical types (book, clothing) collect a shipping address and create a shipment.
The Products > Certifications page manages bundles: several products or courses sold together as one certification package, with their own image, price, and organization scoping. Use + Add Certification to create one.
Orders and fulfillment
Orders move through six statuses: Pending, Completed, Failed, Refunded, Partially Refunded, and Cancelled. Completion is where fulfillment happens, and it runs the same way whether the payment confirmation came from Stripe or you marked a pending order Completed by hand:
- A course line with quantity 1 enrolls the buyer directly.
- A course line with quantity above 1 becomes a seat pack inside a group (named by the buyer at checkout), and any invitees entered at checkout are processed. The buyer assigns the remaining seats later.
- Digital download and video access grants are minted, bundles fan out to their contents, and event lines register the attendee.
- Physical items decrement inventory and open a shipment. Track it on Shipments with carrier and tracking number, moving it through Pending, Processing, Shipped, Delivered (or Returned, Cancelled).
- An invoice is generated, and any coupon use is recorded.
Opening an order from the list shows its full detail, including line items and any seats it created.
Discounts: three layers
- Coupons. A code with a Percentage or Fixed Amount value, an optional Max Uses cap, an optional expiry date, and an active toggle. Buyers type the code at checkout. The list shows each coupon's live status: Active, Inactive, Expired, or Exhausted. A coupon belongs to the storefront it was created on and can only be redeemed there.
- Product bulk pricing tiers. On a course product, add quantity bands (min and max quantity) that grant either a percentage off or an absolute unit price. The products list badges these as "Course (Bulk)".
- Subscriber discounts, configured on registration tiers (see the plans article). A tier can carry its own bulk discount bands, which override the product's bands for that tier's subscribers, and a standing course discount that is taken off whatever price the bulk step arrived at. The standing discount appears at checkout on its own line labeled "Subscription Discount". It applies to course products only: bundles, events, and physical items keep their full price.
Custom training packages
With the add-on enabled, buyers can assemble their own package of courses instead of buying a fixed bundle.
- Open Training Packages and enable the feature on the settings tab.
- Choose the billing modes you offer (One-Time, Subscription, or both) and, for subscriptions, the intervals.
- Set the package size (minimum courses, and an optional maximum).
- On the eligible courses tab, tick which courses may be included.
- On Pricing Tiers, add discount bands per billing mode: a seat range and a discount percentage.
Buyers build their package at /training-packages/build. Each course in the package carries its own seat count and earns its own volume discount, so a course bought with more seats gets a deeper discount. Guests can build and pay too; an account is created for them during checkout.
Refunds are processed by staff
Refunds always run from the order, and only platform administrators can process them.
- Open Orders and click the order.
- Use the refund action for a full refund, or Process Partial Refund to enter an amount and a reason.
A full refund refunds the payment through Stripe, revokes the enrollments the order created, cancels its event registrations, and releases its group seats and pending invites, so the money and the access always move together. Partial refunds release seats where applicable.
Organization admins cannot process refunds. They start a refund request from their own billing page, which arrives with your team as a support ticket in the Refund category; a platform administrator then processes it on the order.
Why did this happen?
Why can't I change an order's status to Refunded or Cancelled?
Money-bearing transitions are deliberately rejected as plain status changes. Setting Refunded by hand would mark the order refunded without returning any money and with learner access still active, so it is always blocked; setting Cancelled is blocked on any order that has been paid. Use the refund actions on the order instead, which keep payment and access in sync.
Why did a completed order not enroll the buyer?
The linked course stopped being live (it was unpublished or deleted) between checkout and fulfillment. The platform skips enrollment into a dead course rather than granting broken access, and records the skip. Refund the order or restore the course and enroll the buyer manually.
Why did buying several seats of a course create a group instead of enrollments?
Any course line with quantity above 1 is treated as a bulk purchase: the seats go into a seat pack under a group named at checkout, and the buyer (or you) assigns them to people afterward. This is what lets one person buy training for a team without knowing every learner's details up front.
Why is the subscription discount not applying to a bundle?
The standing subscriber discount covers course products only. A bundle, event, or physical item is not "a course" even when it contains one, so those sell at their normal price.
Why can't an organization admin buy from the storefront?
Organization admins manage their catalogue rather than shop from it, so regular storefront purchases are blocked for them, both in the interface and on the server. The exception is buying seats or courses for their own groups, which goes through the same checkout and is allowed.
Why does a coupon show as Exhausted?
Its recorded uses reached the Max Uses cap you set. Raise or clear the cap on the coupon to make it usable again, or create a fresh code.
Related
- Plans, tiers, and billing
- Courses and content authoring
- Events and scheduling
- Storefront and themes
- Commerce (for organization admins)
If an order or refund is not behaving as described here, contact support with the order number.