Docs
Sign In

Academy store

The store sells gis, rashguards, and gear to your members — a one-time price, not a recurring charge. Members buy from their own phone, or you ring them up in person at the front desk.

Add a product

Go to Store, then click Add Product. Only owners and admins see this button, and only once your academy has connected Stripe — see Payments.

www.trainos.site/dashboard/store
Add Product
NameRashguard - Blue
Price ($)65.00
CategoryRashguardsType an existing category or a new one.
Stock Count12
Active
Visible to members
Store → Add Product. One-time prices only — memberships live under Payments.
NameUp to 100 characters. Shows everywhere in the store.
DescriptionOptional, up to 1,000 characters.
Price ($)A one-time price, $1.00 minimum. For recurring billing, use a membership plan instead — see Membership plans.
CategoryYour own words — Rashguards, Belts, Gis, whatever fits. Reuse one you've already typed, or create a new one.
Stock CountHow many you have. Leave it blank for unlimited.
PhotoDrag it in, paste it, or pick a file. On mobile, take one with the camera.
ActiveThe switch that decides whether members can see and buy this product.

No sizes or variants

A product is one price and one stock count. If you sell a gi in three sizes, list each size as its own product — "Gi - A1", "Gi - A2", and so on.

To take something out of the store, turn its Active switch off. There's no delete button — turning it off keeps everything already sold on the books, and you can turn it back on any time.

Change the price later and TrainOS quietly creates a fresh price behind the scenes — you don't have to do anything differently, and orders already placed keep the price the member was charged.

How members buy

Members open the Store tab — the bag icon at the bottom of their app — and tap a product to see its photo, price, and description.

9:41
Rashguard - Blue
Rashguard - Blue
$65.00
Only 3 left
Promotion CodeEnter code (optional)
Buy Now
Product detail. The Buy Now button turns off and relabels itself once stock hits zero.

Tapping Buy Now opens a confirmation sheet. If they have a card on file, the button reads Confirm Purchase and it charges that card. If they don't, it reads Continue and opens a payment form right there in the app to add one — nobody leaves TrainOS to check out.

Either way, they land on Order Placed — "Pick up your order at the gym." TrainOS doesn't ship anything; every purchase is picked up in person. While an order is waiting, their Store tab shows a reminder banner — "N orders awaiting pickup — Collect at the gym." Their full purchase history lives on the Orders screen, grouped by month and itemized down to the product and quantity, and the same purchase also shows up in their regular payment history — see Payments & charges.

The Promotion Code box shown above works for any code you've set up under Coupons & promo codes. The same box appears when you charge someone at the front desk, covered next.

Charge a member at the front desk

On Store, click Charge Member to sell face-to-face. Pick the member, then the product and quantity, and TrainOS tells you upfront whether their card on file will be charged or you need to collect one. See Charging a member for how the charge itself works.

Each charge covers one product at a time. Selling someone two different items just means running Charge Member twice, once per product.

Charge Member works for anyone on your roster, including members who haven't set up the app yet — pick them from the member list the same way you'd pick anyone else.

Track orders and revenue

At the top of Store, three numbers give you a quick read on how your shop is doing:

RevenueWhat the store has brought in.
Pending FulfillmentOrders that are paid for and still waiting to be handed over.
Active ProductsHow many products are currently for sale.

Every purchase — from the app or from Charge Member — lands in the Orders tab on Store. Paid orders sit in Ready for Pickup, oldest first, each with a Mark Fulfilled button. Filter the full list by All, Paid, Fulfilled, Cancelled, or Refunded.

PaidCharged successfully. Waiting for the member to pick it up.
FulfilledHanded to the member. You tapped Mark Fulfilled.
CancelledCalled off before the member picked it up.
RefundedMoney sent back to the member.

On their phone, your instructors see their own purchase history, the same view a student gets — the full, academy-wide order list is an owner/admin view on the web dashboard. See Who's allowed to do what.

Cancelling and refunding an orderRefunds happen from Payments, not from Store.

Click an order to open its details. While it's still Paid, you can Cancel Order right there. To send money back, go to Payments → History and use Refund Payment instead — store purchases sit in the same list as every other charge. See Payments & charges.

A full refund automatically flips the order to Refunded. A partial refund sends the money back but leaves the order status as it was. Either way, stock is not put back — if you want it back on the shelf, add it to Stock Count by hand.

Who's allowed to do what

FeatureOwnerAdminInstructorStudent
Browse and buy in the app✓✓✓✓
Add or edit products✓✓——
Charge a member (Charge Member)✓✓——
See every order✓✓Own ordersOwn orders
Mark Fulfilled✓✓——
Cancel or refund an order✓✓——

See also