Redeeming & balances
How a package is applied at booking and where you track each client's balance.
The package is sold — its life starts here: it gets deducted at booking, shrinks, expires, sometimes gets refunded. This article covers each of those steps, where the balance is visible, and — most importantly — when a package actually becomes money in the till.
1. The conditions for a package to be usable
Before deducting, the system checks five things. If any fails, the package simply isn’t offered (or the redemption is refused with a precise reason).
| Check | What it means | Refusal reason |
|---|---|---|
| Is it active | status is Active, not used up / expired / refunded | ”used up” |
| Is it in date | today is before the expiry date | ”expired” |
| Is there anything to deduct | credits > 0; for a bundle — remaining on that service; for a voucher — balance > 0 | ”used up” |
| Does it cover the service | scope includes the offering (for a bundle — the offering is on the list) | “out of scope” |
| Is the location allowed | the branch is on the list (or the package isn’t restricted) | “wrong location” |
Gift cards get a sixth check: the balance must cover the whole price. If it doesn’t — “insufficient balance”. Partial payment with a voucher does not exist.
Separately from those checks, the offering must have Accepts package payment switched on (or be in Package only mode).
2. How the deduction happens at booking
From the public page. At the payment step the client sees the one-off price and their valid packages. They pick one and confirm.
From the admin. The new-booking form has a Package field with a From package option. With no suitable active package it reads “No active packages”.
The deduction happens when the booking is created, not when the client arrives:
| Type | What comes off |
|---|---|
| Credits | 1 visit |
| Subscription | nothing — coverage is for the period |
| Bundle (flex) | 1 from the count for that specific service |
| Bundle (scheduled) | nothing — every booking was created at purchase |
| Gift card | the booking’s price, off the balance |
In the client’s visit history such a booking carries a Pack tag.
3. What happens on cancellation
A cancelled booking returns what was deducted: the credit comes back, the per-service count is restored, the voucher amount goes back onto the balance. A subscription has nothing to return.
This holds whether the client cancelled through the public page or your team cancelled it.
4. Where the balance is visible
Client card → Packages. For each instance:
- a type icon and the package name;
- “Purchased {date}”;
- for credits: “{used} / {total} credits used”, a progress bar and a percentage; or “{N} credits left” when the total isn’t known;
- the expiry date: “Expires {date}”, and in the final days a red “Expires in {N} days” or “Expires today”;
- an Unpaid badge if the sale hasn’t been collected;
- an expandable “Used by {N} bookings” list with the actual bookings;
- a Refund button.
Higher up the card there is an Active packages summary with three numbers: how many are active, “credits total” and “until next expiry”.
In the clients list there is an Active package filter, and the client’s row shows “{N} credits left”.
The statuses you will meet:
| Status | Meaning |
|---|---|
| Active | usable |
| Used up | no credits / balance left |
| Expired | the window has passed |
| Refunded | the package was refunded |
| Pending claim | a gift card the recipient hasn’t activated yet |
5. Expiry
The window is set on the definition (Expires after, in days) and computed at purchase. A client who buys a 30-day package on the 1st loses it on the 31st — whether or not they came.
The exception is a gift card claimed by its recipient: there the window is recomputed from the moment of activation, so nobody receives a present with two days of life.
There is no automatic extension and no “freeze”. If you want to give a specific client more time, issue them a new package.
6. Refunding
The Refund button opens Refund this package?: “The package will be marked as refunded and credits removed. The customer keeps the payment record.”
The rules:
- a refund is only possible on an unused package. If even one live booking was paid with it, the server refuses — refund-with-rollback isn’t supported;
- cancelled bookings don’t block the refund, because they already returned their unit;
- refunding twice is safe — an already-refunded package just comes back as refunded;
- the moment of the refund is recorded. So a refund in August does not rewrite a closed July: the sale stays where it happened and the reversal is recognised on the refund date.
On success: “Package refunded”. On failure: “Could not refund package”.
7. When a package becomes money
This is the part that confuses most. One rule:
A package sale is revenue only once the money is recorded as collected. A gifted package is never revenue.
| How it reached the client | Statement line | Amount | In the totals |
|---|---|---|---|
| Bought online, money not in yet | Package not paid yet | 0 | no |
| Money collected | Package sold | the price | yes |
| Issued from the client card | Package given away | 0 | never |
| Refunded | Package refunded | minus the price | yes |
The statement warns explicitly: “{N} given-away package is not counted in the sums.” and “{N} packages are sold but not paid for yet.”
Redeeming a package creates no money line. The money was recognised at the sale; a visit paid with a package is “already paid” and doesn’t enter revenue a second time.
A limit today. The public checkout takes no card for a package, so every online purchase sits as unpaid — and the admin has no button to mark it as collected. The practical answer: take the money at the desk and track it outside the package until the control appears in the interface. Don’t expect packages bought online to show up in revenue on their own.
8. Troubleshooting
The package isn’t offered at booking. Walk the five checks in §1. Usually it is the scope, or the offering’s Accepts package payment switch.
It says “insufficient balance”. Gift cards only: the remainder doesn’t cover the whole price. There is no partial payment.
I cancelled a booking and the credit didn’t come back. Check the booking really is cancelled (not just marked No-show). Cancellations return the unit; an admin cancel from a terminal status returns it too.
I can’t refund a package — it says it was used. At least one live booking was paid with it. Cancel that one first if appropriate, or settle the refund outside the system.
The package has said “Unpaid” for a month. It will keep saying it — see the note in §7.
The client holds two suitable packages. Whichever was chosen at booking is deducted. If the wrong one was picked, cancel the booking (the credit returns) and rebook.
What’s next
- Packages & memberships — the big picture.
- Package types — how each type counts its balance.
- The client card — where the balance lives.
- Statement (CSV export) — how package lines look in the accounting file.