All articles
17 August 2026 · 11 min readMembership tracking in a fitness studio: deductions, expiry and freeze
The membership pass is a studio's most convenient and least transparent product at the same time. The client pays once and then comes for months, and questions start on both sides: how many sessions are left, will the time run out, can it be paused, what happens if they don't turn up. Here's how membership passes work in SetNow: what kinds there are, when they start counting, how they're deducted on booking, what happens on a cancellation or a no-show, and how freeze and transfer to another person work.
Two different things: the catalogue item and the client's pass
These are two separate entities in the system and it's worth not mixing them up. The first is the catalogue item: name, type, limit, price, list of services. On its own it gives nobody anything — it's a product on the shelf. The second is a specific client's membership pass: it comes into existence at the moment of sale and then lives its own life, with its own balance, expiry and status.
The split exists for one reason: editing the catalogue doesn't touch what's already been sold. At the moment of sale the pass records its terms — type, price, visit limit or balance, expiry and freeze rules. Raise the price tomorrow and nothing changes for the people who bought yesterday, and a closed month's revenue isn't rewritten after the fact. Only descriptive fields are pulled live from the catalogue: name, description, list of services.
For the same reason, taking an item off sale doesn't kill passes that have already been paid for: they run out their expiry and limit as normal, it's just that nobody new can buy one. A catalogue item is shared across the whole company — a pass sold by one coach works with any coach and at any branch.
Three types of membership pass
The type determines what exactly is limited — and therefore what gets deducted on booking:
- By visits — "10 sessions". Every booking eats one visit. The most common option in dance, martial arts and children's clubs.
- By time — "unlimited for a month". Visits aren't counted at all, the only limit is the date. The client comes as often as they like until the time runs out.
- By value — a money balance, from which the full price of the booking's services is deducted. Handy where services vary in price and "a session" describes the product badly.
Expiry, meanwhile, is not tied to the type. "10 sessions in 60 days" is a by-visits pass with an expiry added on top: whichever runs out first wins, the visits or the date. A pass with no expiry never runs out — but it also can't be frozen, because there's nothing to move.
What a pass covers
The catalogue item can list services — that's its scope. Empty means "everything": the pass will cover any booking. If services are listed, it only applies when all of the booking's services are on that list. A client comes in for a package of two treatments while the pass covers only one — the pass won't apply and the booking is paid for the usual way.
There's also a separate "Restrictions" field — free text along the lines of "weekdays before 4pm only". That's a note for the client, and the system doesn't enforce it: if a restriction needs to work by itself, express it through the list of services rather than in text.
When a pass starts counting
Clients often buy ahead of time: as a gift, before a holiday, "before the price goes up". If the clock started at payment, part of what they paid for would expire before their first session. So expiry runs from the start, not from the sale, and how long the client has to make that start is set by the company itself under Membership pass settings.
Say you set a window of 14 days. A pass the client buys then reaches them with the status "Not started": the clock isn't running and the pass can't expire. It can start in three ways:
- The client simply turns up and books — the first booking starts the pass. Nothing needs pressing.
- The front desk presses "Start" on the pass — for instance when the client has asked to start from Monday.
- The window runs out — and the pass starts automatically on the last day. From then on it behaves like any other.
On an early start the expiry is recalculated from the actual date: a monthly pass bought on the 1st and started on the 10th runs to the 10th of the following month, not to the 1st. The start date can also be set by hand when the pass is issued — and if a client needs a start beyond the company's window as a one-off, that date is set by the owner or an administrator. Leave the window at zero and everything works the old way: the pass is live from the moment of sale.
How deduction works on booking
Deduction happens at the moment of booking, not when the session actually takes place, and the client chooses nothing: the system finds the right pass itself. The right pass means an active pass sold by this same company, still within its expiry, whose scope covers every service on the booking. If there's more than one candidate, the order is:
- First, passes that are unlimited for a period. They'll expire on their date regardless, so they're spent first. The booking is linked to them, but there's nothing to deduct.
- Then passes with visits left.
- Then by-value passes with enough balance to cover the whole booking amount. There's no part payment: a pass either covers the booking or doesn't apply.
- If nothing fits, the booking is created without a pass and the client pays on the day.
Within each group the rule is the same: whatever expires soonest is spent soonest, and where expiries are equal the system runs one pass down to zero rather than smearing deductions across several. That matters a lot when a client is holding two or three identical passes: one counter goes down, and you can see which pass is currently in play. A pass that has already started always goes before one that hasn't — its clock is already ticking.
Cancellations, no-shows and returning a visit
Since the visit is deducted at the moment of booking, what happens to it next depends on how the booking ended:
- The client came — the visit is spent, and that is the payment for the session.
- Cancelled in good time — the visit comes back.
- Cancelled at the last minute — the front desk chooses: "no penalty" returns the visit, "with penalty" burns it.
- No-show — the same fork: "didn't come, with penalty" (the default) or "no penalty".
- A booking made in error is deleted — the visit always comes back.
- The whole session was cancelled — everyone gets their visit back, including those cancelled with a penalty: the session didn't happen through the studio's fault.
An important detail: the decision can be changed later. A cancelled booking and a no-show both have "Deduct visit" and "Return visit" in their menu — which covers the case where there was no choice at all (the client cancelled themselves) or where the front desk changed their mind. Both forks only show up on bookings paid for with a pass, where they mean something. The client themselves can't cancel past the set threshold: a late cancellation always goes through an employee, and the call on the penalty is made by a person, not the system.
Freeze
A freeze puts the pass on pause: while it's running the pass isn't picked up on booking, and the expiry date moves forward by the number of frozen days. The client goes away for two weeks — and doesn't lose two weeks of the month they paid for.
The rules are set on the catalogue item and captured at the sale, just like price and limits: the maximum days per pass and the price of one day. The maximum is also the on/off switch: leave it unset and that pass can't be frozen at all. The price can be zero, and then freezing is free. A specialist can change the amount when arranging it — discounts and "on the house" happen here.
Two rules that usually surprise people. First: the expiry moves as soon as the freeze is arranged, not when the pause ends — the client should see the new end date at the moment they pay. Second: if there are already bookings inside the freeze period, you can't arrange it until they're cancelled. Otherwise the client would turn up for a session on a "sleeping" pass and the balance would drift away from the history. Unfreezing early returns the unused days to both the expiry and the limit: frozen for 14, lifted on day three — 11 days come back and are available for the next pause.
Transferring a pass to another person
It's a common situation: the husband bought it, the wife is going to come; someone moves away and wants to give the remainder to a friend. There used to be one way out — revoke the pass and sell it again, losing the balance and double-counting the revenue. Now a pass can be moved to another client of the company: the balance, expiry, terms and the entire history move across as they are, and only the owner changes. No new sale happens, so company revenue doesn't change.
The money stays with whoever paid: the purchase amount doesn't leave the previous owner's profile — what moves is the balance, not the spending history. If the previous owner has upcoming bookings on that pass, the transfer will ask you to cancel them first: the visit is deducted at the moment of booking, and after a transfer that person would be attending at someone else's expense. Past bookings stay in the pass's history — that's an honest record of how it was spent. Transfers are made by the owner or an administrator, and each one is logged with who did it and why.
Editing the balance by hand, and the history
The owner and administrators can change the visit balance manually — adding sessions beyond those sold (a bonus for a review, compensation for a cancelled session) or taking extras away. Editing is only available on a live pass with a visit limit: on unlimited and by-value passes there's nothing to edit. It doesn't touch money — the added sessions simply weren't paid for, and nothing shifts in the reports.
Everything that has happened to a pass is visible on its own screen: the terms of sale, who issued it, and a timeline — deductions for bookings with dates and session names, returns, manual edits with author and reason, freezes, a transfer, revocation, expiry. That's the first place to look when a client disputes their balance: instead of "the system worked it out", you get a specific list of events.
Money and reports
Revenue from a pass is recognised at the moment of sale, at the snapshot price — not spread across the sessions. The logic is simple: you got the money then, not a month later. A paid freeze is revenue too, at the moment it's arranged.
From which follows the main rule: visits paid for with a pass don't count towards service revenue. Otherwise the same money would be counted twice — first as the sale of a pass, then as paid-for sessions. For the same reason those visits don't count towards a specialist's revenue when payroll is calculated.
Revoking a pass is an event in its own period: the sale stays in the month it was sold, and the refund is subtracted in the month of the revocation. Closed reports aren't rewritten after the fact because of it. One more detail for anyone looking at analytics by branch: a pass isn't tied to a branch or to a booking type, so in those breakdowns pass sales are excluded from revenue — a branch report shows the revenue of that branch's bookings.
What the client sees
In the client app, "My membership passes" is always available, whether or not you've enabled online payments:
- Live passes at the top, finished ones as a separate group. One that's used up or out of date doesn't pretend to be active.
- Each shows its balance and end date. One that hasn't started shows the date by which it needs to be started.
- If the company accepts payments, that's also where the client buys a new pass and arranges a paid freeze. How to set that up is covered in a separate article on online payments.
Frequent questions
- The client booked two sessions in a row — will two visits be deducted? Yes, each booking deducts its own. Cancelling one of them returns one.
- A client has two identical passes — which one is deducted from? One of them, until it runs out, and only then the second. The system used to alternate between them, which made it impossible to tell what was being spent — that's been fixed.
- A pass was bought at one studio in a chain and used at another — will it work? Yes, if it's one company in the system: a pass isn't tied to a branch or an employee. Across different companies, no — a pass only works where it was sold.
- What happens if you delete an item from the catalogue? Passes already sold run out their expiry and limit. New ones can't be bought.
- Does a used-up pass delete itself? No, it stays on the client's record together with its history — you can see what was deducted and when.
- Can you refund a client for a pass? Revoking the pass in the system records the fact and corrects the reporting, but moving the money happens outside the system, by whatever means the client paid.
- Do we need to do anything with passes if the studio closes for a week? The simplest thing is to arrange a freeze for anyone whose time is running out: it moves the end date and saves you explaining yourself over messages.
Where to start
Set up two or three catalogue items and don't overcomplicate it at the outset: one by-visits pass and one unlimited monthly usually covers it. Decide about expiry — whether the by-visits pass needs one, and if so set it straight away: you can add an expiry later, but it won't reach passes already sold. Configure freezing if it's something you actually do in real life: a day limit and a price per day settle 90% of the "can I put it on pause?" conversations. And take a look at the delayed-start window — it removes complaints of the "I bought in December but started coming in January" variety.
In SetNow, membership passes work as one end-to-end mechanism: the catalogue and the sale on the front desk's side, buying and viewing on the client's side, automatic deduction on booking, the visit returned on cancellation, freeze, transfer to a new owner and the reflection in revenue — with no parallel notebook and no recalculating balances by hand.
Related articles
Try SetNow for your business
Set up online booking in a day and start taking clients 24/7. Signing up is free.