Audience: Riding school owners, independent instructors and organisation admins
Overview
A lesson package is a block of lessons sold at a set price — a 10-lesson private block, a 5-lesson group block, a school-holiday clinic pack. The client pays once, and Horsify tracks the lessons they have left and the date the block runs out. When they book, they can pay with a credit from the block instead of paying again.
A package can be sold in more than one block size. "Beginner Child Lesson" is one package offered as a single lesson, a block of four and a block of eight, each with its own price and validity — not three packages that happen to share a name. Set the sizes up once and a price rise is one edit rather than three.
Packages are the difference between chasing payment lesson by lesson and taking a term's money up front, and they give clients a reason to commit to a run of lessons rather than booking one at a time.
Go to: Organiser → Riding School → Lesson Packages. On your own club site the item sits directly under Organiser. The Organiser Dashboard (in its Bookings view) has a Packages & Vouchers quick-access tile.
Requires: A Riding School or Instructor subscription, and organisation admin access to create, edit, withdraw or sell packages.
How a package moves through Horsify
There are three separate steps, in three different places. Most confusion about packages comes from expecting one of them to happen automatically.
| Step | Where | What happens |
|---|---|---|
| 1. Define it | Riding School → Lesson Packages | You create the product: name, lesson type, how many lessons, total price, how long it stays valid, and whether clients can buy it online. Nothing is sold yet. |
| 2. Sell it | Your public riding school page, or Riding School → Clients → [client] → Lesson packages → Record sale | Online, the client pays you through Horsify and the credits appear once the payment lands. At the front desk you record how they paid and the credits appear immediately. |
| 3. Spend it | The booking form, or the client's own online booking page | Choosing the package marks that lesson paid and uses one credit. |
Two ways a package gets sold
-
Online (self-service). Tick Sell this size online against a block size and the package is listed in two places: your public riding school page at
/riding-school/{your-slug}, and the Packages row on your Book Now page at/book-now, beside lessons, horse rides and facility hire. Clients add it to their cart and pay you through Horsify, on your own Stripe account, exactly like a lesson booking. The credits are granted when the payment lands — not when they hit checkout — so an abandoned or failed payment never hands out free lessons. - Front desk. Leave the tick off for sizes you only sell in person. Record sale grants the credits immediately and asks how the client paid (cash, bank transfer, EFTPOS, card, club credit). Horsify does not take that money — you collect it — but recording the tender means the sale shows up in your reporting and the client gets a receipt.
Step 1 — Create a package
Go to: Organiser → Riding School → Lesson Packages → New Package. If you administer more than one organisation, pick the right one from the Select Organisation dropdown first.
| Field | Notes |
|---|---|
| Package name | What the client sees on their balance and on the sale dropdown. Name the lesson, not the quantity — "Beginner Child Lesson" rather than "4-Lesson Beginner Pack", since one package now carries every size you sell it in. Required. |
| Description | Optional detail — what's included, who it suits. |
| Lesson type | Group Lesson, Private Lesson or Clinic. A package covers exactly one type. See Lesson type is a hard rule below. Required. |
| Restrict to specific lesson types | Optional. Leave every box unticked and the package covers any lesson of the type above — a credit from a 30-minute block will pay for a 60-minute lesson. Tick specific lesson types to pin the package to exactly those, so a block is only worth what it was sold as. |
| Block sizes | One row per quantity you sell — lessons, price, validity, and whether that size is on sale online. Add a size for each extra quantity. Every package has at least one. |
| Display order | Controls the order of the cards on this page. Lower numbers first. |
Each block size carries its own validity, because a bigger block usually needs longer to work through: four lessons in 120 days, eight in 180. Each row also has its own Sell this size online tick, so you can publish the 4- and 8-lesson blocks and keep the single a front-desk sale.
Every row shows its per-lesson figure as you type — "$50.00 / lesson". Horsify calculates that from the price and the lesson count; you can't set it separately, so the advertised per-lesson rate can never drift away from what the block actually costs.
Removing a size is safe. Blocks already sold keep the lessons, price and expiry they were bought on — withdrawing the 8-lesson size stops new sales of it and changes nothing for the clients who already hold one.
Press Create Package. The new package appears on the page straight away, marked Active, and becomes available in the Sell a package dropdown on every client — once per block size it is sold in.
Choosing a validity period
Validity is what stops a package becoming an open-ended liability. Some rules of thumb:
- 90 days suits a weekly 10-lesson block with room for a couple of missed weeks.
- 180 days suits fortnightly riders or adults who ride around work.
- 60 days or less suits a school-holiday clinic pack that is meant to be used in one break.
The expiry is fixed at the moment of sale, so a client who buys a 90-day block today has until 90 days from today — not 90 days from their first lesson. For an online purchase the clock starts when the payment lands, not when the client added the package to their cart.
Restricting a package to specific lesson types
By default a package covers its whole category, so a "10 Private Lessons" block can be spent on any private lesson you offer, whatever it costs. That is fine when your private lessons are all much of a muchness, and a problem when they are not: a client can buy ten at your 30-minute rate and spend them on 60-minute lessons.
Ticking specific lesson types closes that. A block restricted to 45 Minute Private can only ever be spent on a 45-minute private lesson; anything else is refused at booking with a message naming what the package does cover. Existing packages are unrestricted and stay that way — nothing changes for blocks you have already sold.
The form warns you if a package works out dearer per lesson than the dearest lesson it covers, which usually means a slip in the lesson count or the price.
Step 2a — Let clients buy online
Tick Sell this size online against at least one block size and the package appears in two places. Only the ticked sizes are offered to buyers; the rest stay front-desk stock.
Your riding school page (/riding-school/{your-slug}), under your lesson price list, with its price, lesson count, what it covers and how long it lasts. The client presses Buy this package, which puts it in their cart.
Your Book Now page (/book-now), as a Packages row alongside Lessons, Trail & horse rides and Facility hire, counting how many packages are on sale. Opening it lists them with their price and what each one covers; choosing one opens the package itself, where the client can read the lesson count, the price per lesson, the type of lesson it may be spent on and how long the credits last before adding it to their cart. This is the route a client takes when they arrive to book rather than to browse — a package you have not ticked for online sale never appears here, and its page cannot be reached by guessing the address.
Either way they pay at checkout on your own Stripe account — the same route, fees and payouts as a lesson booking. Their credits appear under My Bookings → Packages once the payment lands, along with a receipt by email.
A few things worth knowing:
- Credits are not granted until the money is in. A client who reaches checkout and abandons it, or whose card fails, gets nothing.
- You need online payments set up. If your riding school hasn't connected Stripe, or doesn't accept online payment, the buy button will tell the client to contact you instead.
- Withdrawing a package (untick the toggle, or deactivate it) removes it from the page at once. A client who already has it in their cart is refused at checkout rather than being sold something you have stopped offering.
Step 2b — Sell a package at the front desk
Go to: Organiser → Riding School → Clients, switch to card view, and press Lesson packages on the client's card.
- Under Sell a package, choose the block from the dropdown. A package sold in several sizes has one row per size, each showing the lessons, price and validity, so you sell the four or the eight by picking it rather than by picking a different package. Sizes kept off your public page are sellable here.
- Choose how the client paid — cash, bank transfer, EFTPOS, card or club credit — and add a receipt or bank reference if you have one.
- Press Record sale.
The credits appear immediately under Purchased packages, with the purchase date, the expiry date and a green "3 of 3 left" badge.
Recording a sale does not charge the client. Horsify has no card step here — it records that the block was sold and grants the credits. Take payment however the client is paying (card terminal, cash, bank transfer) and then record the sale. The tender you choose is stored against the sale and on the client's tax invoice, so the money shows up in your reporting even though it moved outside Horsify. If you want the client to pay through Horsify instead, tick Sell this package online and send them to your riding school page.
What the balance list tells you
Each row under Purchased packages shows:
- The package name. This is the one place a balance follows the live package rather than the sale, so renaming a package renames it on every balance already sold.
- Bought date, and Expires (or Expired) date.
- A badge reading "x of y left" — green while the block is still usable, grey once it is spent, expired or withdrawn.
Scanning this list is how you spot the client who is one lesson from the end of their block, which is the moment to offer them the next one.
Step 3 — Spend a credit on a lesson
When you book for the client
On Riding School → Bookings → New Booking, choose the client first. If they hold usable credits, a Pay with lesson package section appears with a dropdown of their packages, each showing how many lessons are left and when it expires.
Pick a package and the form confirms the lesson is already paid for. The booking is created with no deposit and no balance owing, and one credit comes off the block.
Leave it on "Don't use a package" to book and charge normally.
Sell the block and book its lessons in one go
The Lesson package section on the booking form has three settings:
| Setting | What it does |
|---|---|
| Don't use a package | Books and charges normally. |
| Use credits this client already has | Spends a block they've already bought. Nothing to collect. |
| Sell a package with this booking | Records the sale and schedules the lessons, in one submission. |
Choosing Sell a package with this booking shows the same controls as the client's package tab — which package, how the client paid, and an optional receipt reference — and then offers Book the whole block. Leave that ticked and Horsify creates one lesson per credit: pick the day and time of the first lesson, set Repeat to weekly or fortnightly under Recurring Booking, and a ten-lesson pack goes into the diary as ten lessons.
The client is charged the block price, once. A $450 ten-lesson pack collects $450 — not ten lessons at $55 each, and not $450 plus per-lesson charges on top. Every lesson in the series is created already paid, so there is no payment link, no deposit and no balance owing on any of them. The tax invoice raised is the one for the block.
Two things the form settles for you:
- The series can never be longer than the block. Ask for more occurrences than the block has credits for and Horsify trims the series to the credits rather than creating lessons nobody paid for. Untick Book the whole block to book only part of a block now and the rest later.
- Clashes are handled the same way as any recurring booking. Set If Time Not Available to skip, find the next available time, or flag it on the client's profile. A lesson that can't be placed keeps its credit — the block is only debited for lessons that actually go in the diary.
A package only appears in either dropdown if it can pay for the lesson you're booking, so a block restricted to 30-minute privates is simply not offered against a 60-minute lesson.
When the client books online
A signed-in client booking through your school's own booking page sees Pay with your lesson package on the details step, listing the packages they can use here.
Choosing one prices the lesson at $0 in their cart, shown as paid by that package, and the lesson is confirmed at checkout without a card. The credit is taken at checkout, not when the lesson goes into the cart — a client who changes their mind and empties their cart keeps their lesson.
Where clients see what they own
My Bookings → Packages lists every block a client holds, across every riding school they ride with: how many credits are left, when the block expires, what it covers, and which lessons each credit has paid for. Spent and expired blocks stay on the list as history, and a block that is running low links back to the school's page to buy another — when that school sells online.
Lesson type is a hard rule
Every package covers exactly one lesson type, and Horsify will not let a credit be spent on a different one. A group block cannot pay for a private lesson, even though both are lessons — that is the whole point, since group lessons are cheaper per lesson than private ones.
If you have also restricted the package to specific lesson types, that restriction is enforced the same way: a block sold as 45 Minute Private is refused on any other private lesson, and the message names the lesson types the block does cover.
Two places behave slightly differently, which is worth knowing:
- The client's own online booking page offers only packages that cover private lessons, because that is what the page books. A group block simply won't appear there.
- The booking form you use lists every usable package the client holds. If you pick one that covers the wrong type, the save is refused with a message naming the type the package covers — nothing is booked and no credit is spent.
If clients need to use a block across more than one lesson type, either leave the package unrestricted (so it covers everything in its category) or tick the several lesson types it should cover. Across categories — a block spanning group and private lessons — sell two blocks.
Cancellations and refunds
Cancelling a package-paid lesson returns the credit. The lesson goes back onto the block within seconds of the cancellation, whoever cancels it and whatever reason is given, so a client who calls off Thursday's lesson is not charged for a lesson they never had.
The credit comes back once and only once — cancelling an already-cancelled booking doesn't mint a second one.
What Horsify does not do is refund money for an unused package. If a client wants their money back on a block they've stopped using, that is a conversation and a refund through whatever you took payment with; there is no "refund package" button, and the balance stays on their record until it expires.
Changing or withdrawing a package
Edit on a package card reopens the same form. Changing a block's price or lesson count updates the per-lesson figure straight away for future sales. Adding or removing a block size takes effect the same way — new sizes go on sale immediately, withdrawn ones stop being offered.
Editing a package never changes a block someone has already bought. A sale takes a snapshot: the lessons, the price paid and the expiry date are copied onto the client's balance at the moment of sale. Put your prices up, shorten the block, or change the validity, and every client who already bought the old one keeps exactly what they paid for. (The name is the one exception — it is read live, so a rename shows on old balances too.)
Deactivate takes a package off sale. It disappears from the Sell a package dropdown, but:
- it stays visible on the Lesson Packages page, marked Inactive, so you can see what it was; and
- every block already sold keeps working. Clients can still spend the credits they bought, right up to their own expiry date.
Deactivating is one-way from the page — a withdrawn package can't currently be put back on sale, so create a fresh one if you change your mind.
Who can do what
| Action | Organisation admin | Organiser Contributor | Client |
|---|---|---|---|
| See the package catalogue | Yes | Yes | Only those sold online |
| Create, edit or withdraw a package | Yes | No | No |
| Record a sale to a client | Yes | No | No |
| Buy a package online | — | — | Yes (if sold online) |
| See a client's balances | Yes | No | Their own only |
| Spend a credit on a booking | Yes (booking for them) | No | Yes (online) |
Packages are scoped to your organisation. Another club's admins cannot see your catalogue, your clients' balances, or sell on your behalf — and a client can only ever spend a block bought in their own name.
Troubleshooting
"No packages are set up yet" in the client's dialog Nothing has been created yet, or everything you created has been deactivated. Create one under Riding School → Lesson Packages.
The package doesn't appear in the Sell a package dropdown Only Active packages can be sold. Check the card on the Lesson Packages page — if it says Inactive, it has been withdrawn, and you'll need to create a replacement.
The client has credits but no "Pay with lesson package" option appears Work through these in order:
- Is the block still usable? Expired blocks, and blocks with no lessons left, are not offered. Check the badge in their Lesson packages dialog. A block bought online whose payment hasn't landed shows as Awaiting payment and cannot be spent yet.
- Does the lesson type match? Their online booking page only offers private-lesson blocks. If the block is restricted to specific lesson types, it only appears for those lessons.
- Is the booking recurring? Packages cover one lesson at a time and are hidden as soon as recurring is switched on — see below.
- Are you editing an existing booking? The option only appears when creating one.
The package isn't showing on my public riding school page Check three things: the package is Active, at least one block size has Sell this size online ticked, and your riding school landing page is switched on. The public list is cached for about ten minutes, so a change can take a few minutes to appear.
There's no Packages row on my Book Now page The row only appears when at least one package is Active with a block size on sale online ticked — it does not depend on your riding school landing page being switched on. Same ten-minute cache as above.
A client paid online but has no credits Credits are granted when the payment lands, not at checkout, so a card that failed or a checkout that was abandoned leaves nothing behind. Their block will show as Awaiting payment under My Bookings → Packages if the purchase was started but never paid — they can safely buy again.
"Recurring bookings cannot be paid with a lesson package" A recurring series only charges for the first lesson; the rest are created pending. One credit against a twelve-week series would leave eleven lessons booked and unfunded, so Horsify refuses it. Book the lessons individually and spend a credit on each — or set the series up and take payment normally.
"Your lesson package no longer has a lesson available for this booking" The last credit was spent somewhere else between the lesson going into the cart and checking out. Nothing was booked or charged. Remove the lesson from the cart and either book it again against another block or pay for it normally.
A client says they paid for a block but has no credits Recording the sale is a separate step from taking the money. Open their Lesson packages dialog — if there's no balance, the sale was never recorded. Record it now; the purchase and expiry dates run from today, so if the payment was taken a while ago, consider a longer-validity package or make a note.
Related
- Riding School Management — the whole riding school toolkit.
- Client Management — client profiles, waivers and alerts.
- Riding School Setup Guide (End to End) — where packages fit in first-time setup.
-
Gift Vouchers are covered in Riding School Management; unlike packages, vouchers are a dollar value rather than a number of lessons, and are redeemed by hand.\n\n---\n\nSource:
wiki/features/LESSON_PACKAGES.md\nLast synced: 2026-09-07 11:51:56 UTC