Recurring payments for fitness classes without Stripe headaches
Recurring payments for fitness classes without Stripe headaches
Stripe is the best thing to happen to small businesses in a decade. It's also a footgun for class businesses, because the bits Stripe gives you out of the box don't map cleanly to how classes actually get sold and consumed.
If you've ever tried to wire up "an 8-week block" or "a 10-class pass that expires in 90 days" using vanilla Stripe Subscriptions, you'll know what I mean. Here's why it breaks and what good recurring billing for a class business actually looks like.
Why bare Stripe Checkout doesn't fit
Stripe Subscriptions assume the world is Netflix: you pay every month, you get the thing every month, and if you stop paying you lose access. That model breaks down for classes in three obvious ways.
Blocks aren't subscriptions. An 8-week pilates block is a fixed-term thing, not a rolling commitment. You want the customer to pay once, attend eight times, then either renew or walk away. Modelling that as a subscription means cancelling it after eight billing cycles, hoping the customer doesn't accidentally extend it, and explaining to them why their "membership" suddenly stopped.
Reschedules and refunds are nuanced. If a student books a Tuesday class, pays, then asks to switch to Thursday, that's not a refund. It's a credit. Bare Stripe doesn't know about credits — it knows about charges and refunds. So you end up tracking credit balances in a spreadsheet, which defeats the point of having software.
Class passes have expiry. A "10 classes for £100" pass is one payment that decrements over time and expires after, say, 90 days. Stripe doesn't have a primitive for that. You can fake it with metadata and webhooks, but now you're a developer, not a yoga teacher.
Stripe gives you the rails. For a class business, you also need the carriage — the bit that knows what a class pass is, what a block is, and how to handle a credit when a student moves nights.
What good recurring billing looks like
For a class business, the billing layer needs to understand four primitives. Most generic tools handle one or two. A purpose-built tool handles all four:
- Drop-ins — one class, one payment, simple.
- Class passes — N classes for a fixed price, expiring after a window, decrementing on attendance.
- Blocks — a fixed-term run of classes (8 weeks, 10 sessions) where the student is enrolled in specific dates.
- Memberships — rolling, unlimited or capped, billed monthly, pausable.
On top of those, the layer needs to handle:
- Card on file for no-show charging
- Credits (when a student moves a class, no money changes hands)
- Holds and partial refunds for legitimate cancellations
- A clear ledger so end-of-month reconciliation isn't a Sunday afternoon job
If your current setup makes you reach for a spreadsheet to answer "how many classes does Sarah have left on her pass?" — that's the gap.
A worked example: the 10-class pass
Let's run through what it actually takes to sell a "10 classes for £100, valid 90 days" pass, properly, end to end.
A student visits your site and buys the pass. The system needs to:
- Take £100 via Stripe, save the card on file for future charges (e.g. no-shows on free trials, or top-ups)
- Create a pass record: 10 credits, expires in 90 days from purchase date
- Send a confirmation showing remaining credits and expiry
- Let the student book any class without re-entering payment — each booking decrements the pass
- Show remaining credits in their account, plus a gentle reminder when fewer than three remain or expiry is within two weeks
- Handle the edge cases: pass expires with credits remaining (do you refund pro-rata, extend, or forfeit?); student requests a freeze (legitimate medical reason); student wants to gift remaining credits to a friend
Every one of those is doable in bare Stripe. None of them is one click. Stitch them together and you've spent a fortnight building a class management system that already exists.
What to ask before you buy
A short checklist when you're evaluating a booking tool that claims to handle recurring payments:
- Does it natively know about class passes, blocks, and memberships, or are they all hacked on top of subscriptions?
- Can a student see their remaining credits and expiry on their own account page?
- When a student moves a class, is it a refund-and-rebook (slow, confusing), or a credit (fast, clean)?
- Can you charge a no-show automatically from the card on file, with a configurable grace window?
- When a student's card declines on a recurring membership, what happens? Soft retries, dunning emails, automatic pause?
If the tool fudges any of those, you'll be the one filling in the gaps every Sunday night.
If you'd like to see a class-aware billing layer in practice, Adminished sits on top of Stripe and handles the four primitives natively — no spreadsheet required.