How to manage class packs (bonos) without spreadsheets
A practical guide to selling, tracking and expiring class packs in a dance, yoga or music school — and how to stop losing money to forgotten credits.

Class packs — bonos in Spanish-speaking schools, carnet or pacchetti elsewhere — are the backbone of recurring-class revenue. A student buys ten sessions up front, shows up when they can, and you get predictable cash flow weeks before the classes are actually taught. Simple in theory. In practice, most schools track packs in a spreadsheet that drifts out of sync within a month, and the drift quietly costs them money every single term.
This guide covers how to run class packs cleanly from end to end: how to price them so they sell commitment rather than just a discount, how to track consumption without guesswork, how to handle expiry without picking fights with your best students, and how to turn unused credits into a retention tool instead of a refund liability. None of it requires a finance background — just a system that does the arithmetic for you.
Why spreadsheets break#
A spreadsheet works beautifully for the first ten students. Then the term fills up, two people cover the front desk on different days, a teacher swaps a class at short notice, and reception starts guessing:
- Did this student already use today's class, or did someone simply forget to mark it?
- This pack was bought back in January — has it expired, or is there still a credit on it?
- The teacher ran an extra make-up session. Whose credits does that come out of?
- A family bought one pack for two siblings — how many classes are actually left, and for whom?
Every one of these is a small leak. Individually they feel trivial; you wave a student through, you give the benefit of the doubt, you "sort it out later". But multiply each tiny concession across a busy term with a few hundred attendances, and you end up with two compounding problems at once: students attending on credits they already spent, and credits expiring silently that you could have re-sold or converted into another visit.
The deeper issue is that a spreadsheet has no idea what happened in the room. It only knows what someone remembered to type into it, usually hours later, often from memory. The register and the balance live in two different places, maintained by two different people, and they fall out of step the moment the studio gets busy.
The real cost of a leaky pack system#
It helps to put a number on it. Imagine a mid-sized school with 200 active students, most of them on ten-class packs at roughly €9 a class. If even 5% of attendances get marked against the wrong pack — or not marked at all — that is ten classes a week being delivered for free. Over a ten-week term that is a hundred sessions, or close to €900 of work given away, not through generosity but through bookkeeping you couldn't keep up with.
Now add the other side: unused credits. A student finishes a pack with two classes left, the expiry slips past unnoticed, and they drift away feeling vaguely that they "lost" something. You've lost the re-sale, and worse, you've lost the relationship. The money leaks in both directions — work delivered without a credit, and credits abandoned without a conversation.

Price packs around commitment, not just discount#
The instinct is to price a ten-class pack as "ten times the single-class price, minus 15%". That leaves money on the table and teaches your students that the only reason to buy a pack is the discount. A class pack actually sells commitment: the student pre-pays, which measurably raises their attendance and lowers your churn. Price it as a modest discount on the per-class rate, and use the expiry window — not a deep discount — to create gentle urgency.
A structure that works for most schools looks like this:
- Single class — the anchor price, deliberately the worst value per class. It exists to make the packs look sensible.
- 5-class pack — around 10% off per class, two-month expiry. The "try the rhythm" option.
- 10-class pack — around 15% off per class, three-month expiry. Your workhorse product.
- Monthly unlimited — for your most engaged students, who effectively pre-pay for a habit.
Notice what the ladder does: each step rewards a slightly bigger commitment with a slightly better rate, while the expiry window keeps the credits moving. The goal is never the deepest possible discount — it is the steadiest possible attendance.
One more pricing note: resist the temptation to invent endless bespoke packs ("8 classes, valid until June, only for the Tuesday group"). Every special case is a future support ticket and a future spreadsheet error. Three or four clean products that everyone understands will always out-earn a dozen clever ones.
Track consumption at the point of attendance#
This is the single rule that fixes almost everything: the only reliable moment to decrement a pack is when attendance is taken — not at the desk, not from a paper note, not from memory at the end of the week. When the teacher marks a student present, one credit comes off that student's active pack automatically, in the same action, in the same instant.
Tying consumption to attendance eliminates the "did they already use it?" problem entirely, because there is no longer a second place for the balance to live. The register is the ledger. If a class happened and a student was in the room, exactly one credit moved — no more, no less.
If credit consumption isn't tied to attendance, your pack balances will always be wrong by the end of the month. It isn't a discipline problem; it's a structural one.
This also quietly solves the awkward cases. A drop-in with no pack? They show as owing a single-class fee. A student whose pack ran out mid-term? Reception sees a zero balance the moment they're marked present, and can offer a renewal on the spot rather than discovering the shortfall weeks later.

Make expiry a conversation, not a surprise#
Expiring credits feel like a penalty to students and a refund risk to you — which is exactly why they sour relationships when they're handled silently. Defuse both sides with a reminder before the expiry date: "you have three classes left, expiring on the 30th — want to book them in?"
That single nudge does three useful things at once. It recovers attendance you would otherwise have lost. It pre-empts the awkward refund request, because nobody feels ambushed. And it gives you a natural, non-pushy reason to start a renewal conversation while the student is still engaged. Handled well, an expiry reminder is one of the highest-return messages a school can send.
If you want a policy that students perceive as fair, keep it simple and publish it: credits are valid for X weeks, you'll get a reminder before they lapse, and a short paid extension is available on request. Fairness that's written down rarely gets argued with.
Turn unused credits into retention, not refunds#
The schools that handle packs best treat a near-empty, near-expiry pack as a retention trigger, not an accounting nuisance. A student with two classes left is a student you can win back with one well-timed message. The same data that warns you about expiring credits is the data that tells you who is drifting — and reaching out before they're gone is far cheaper than re-acquiring them later.
This is the mindset shift: a class pack isn't just a payment, it's a running signal of engagement. Read it that way and the "expiry problem" becomes one of your best opportunities to keep people in the room.
A simple monthly routine#
Once the system tracks consumption for you, the human routine shrinks to a few minutes:
- Weekly: glance at packs nearing expiry and send the reminders.
- Weekly: check who hit a zero balance this week and offer a renewal.
- Monthly: reconcile credits sold versus credits spent — they should match the register exactly, because they came from it.
- Each term: review which pack sizes actually sell, and prune the ones that don't.
That's it. No formula auditing, no "which tab has the real number", no end-of-month archaeology.
The edge cases: refunds, freezes and transfers#
Three situations come up at every school, and a clear policy on each saves hours of case-by-case agonising.
Refunds. Decide up front whether packs are refundable, and write it down. A common, fair stance is that packs aren't refundable for a simple change of mind, but unused credits can be transferred or — in genuine cases like injury or relocation — frozen. Because credits are tracked exactly, you can always see precisely how many remain, so a partial resolution is a two-second lookup rather than a negotiation from memory.
Freezes. A student travels for a month or recovers from an injury. Rather than refund, pause the expiry clock. The credits don't vanish, the relationship survives, and you keep the cash you've already banked. A freeze is almost always a better outcome for both sides than a refund — but only if your system can actually pause an expiry date instead of forcing you to fudge it in a spreadsheet.
Transfers. A parent wants to move two unused classes to a sibling, or a student gifts their last sessions to a friend. If credits are tied to a person and tracked precisely, a transfer is a clean reassignment. If they live in a spreadsheet, it's another manual edit waiting to go wrong, and another balance that no longer matches reality.
The pattern across all three is the same: precise, attendance-linked balances turn awkward judgement calls into quick, fair, consistent decisions — which is exactly what keeps students trusting your front desk instead of arguing with it.
Common mistakes that quietly cost you#
A handful of habits leak money even in otherwise well-run schools:
- No expiry at all. "Use them whenever" feels generous, but it kills urgency and leaves an open-ended liability on your books that never quite converts into attendance.
- Decrementing at the desk, not in class. If the credit comes off when the pack is sold, or whenever someone remembers, rather than the moment attendance is taken, your balances drift from day one.
- Too many pack types. Every bespoke deal is a future error and a future support question. Keep three or four clean products.
- Silent expiry. Letting credits lapse without a reminder trades a small re-sale for a quiet resentment. Always send the nudge first.
Fix those four and the majority of pack-related revenue leaks simply disappear — no new discipline required, just a system that does the counting and the reminding for you.
What to automate#
If you take one thing from this guide, take this: stop tracking packs by hand. A system built for it should, without you thinking about it:
- Decrement credits automatically when attendance is marked, against the right student's active pack.
- Show reception each student's live balance and expiry date, on the same screen where they take payment.
- Flag packs nearing expiry so the reminder is a click, not a research project.
- Keep an immutable record of every credit sold and spent, so your books reconcile themselves and nothing can be quietly edited away.
This is exactly what ClassWolf does out of the box. Class packs are a first-class object tied directly to mobile attendance — not a column in a sheet that someone has to remember to update. Sell a pack at the desk, mark the student present in class, and the balance, the expiry and the books all stay correct on their own. There's a free plan and no credit card required, so you can set up your packs and run a real class before you commit to anything.

