Prepaid Packages
Prepaid Packages lets you bundle one or more services with a fixed number of sessions each (e.g. "5 Facials + 1 Free" = 6 facial sessions) into a single package a customer buys once, then redeems session-by-session at future visits as zero-price billing lines until the balance runs out or it expires.
Overview
Like Memberships, this is a generic BazaarPOS entitlement module (packages/pos-core/src/service-package.js), not saloon-exclusive under the hood — the same shape works for gyms, tuition centres or restaurant meal plans.
A Package definition has a Name, a Price, a Validity (days) and one or more line items, each an existing Service plus a Sessions count for that service.
Selling a package to a customer creates a CustomerPackage record with its own independent remaining-session counter per service item, expiring Validity Days after the sale date.
Redemption happens later, at billing: when the customer is selected on the Sales screen, any services they still have package sessions remaining for can be added to the cart as a zero-price line, decrementing the balance. This page only creates and sells packages — it does not redeem sessions itself.
Before You Start
- You must have the Billing feature enabled on your plan.
- At least one Service must exist in Service Menu — package items are picked from that list, not free-typed.
- The customer must already exist in Customers.
Step-by-Step Guide
1 Create a prepaid package
- Open Saloon & Spa → Prepaid Packages and click "+ New Package".
- Enter Package Name (required, e.g. "5 Facials + 1 Free"), Price and Validity (days).
- For "Services included", pick a Service and a Sessions count for it; click "+ Add service" to add further service lines.
- Click Create Package — it requires at least one service line with a name; blank rows are silently dropped on save.
2 Sell a package to a customer
- Click "Sell Package".
- Search for and select the customer — if they already have any existing packages, their names are shown as a quick reference just below the search field.
- Choose the Package, then click Sell.
- A success message reminds you to "collect the price at billing" — as with Memberships, this page does not charge the customer.
3 Redeem a session at billing
- On the Sales/Billing screen, select the customer whose package you want to redeem from.
- Any service they still have remaining sessions for appears as a redeemable, zero-price option; adding it to the cart decrements that service's remaining-session count on their package.
- The remaining balance is validated again server-side at the moment the sale is finalised — a package with insufficient sessions for the requested service/quantity is rejected even if the billing screen's cached view suggested it had enough.
4 Retire a package definition
- Click Delete on a package card and confirm — this removes the definition only; customers who already own that package keep their purchased sessions and remaining balance untouched.
Every Field & Button, Explained
| Field / Button | What it does |
|---|---|
Package Name | Required. Shown on the package card and in customer-facing package lists. |
Price | The one-time price of the whole package — informational here; you must separately collect it via a sale on the Billing screen. |
Validity (days) | Days from the sale date until the whole package (all its service items) expires, regardless of remaining sessions. |
Services included (per item) | A Service picked from the Service Menu plus a Sessions count — a package can bundle multiple different services, each with its own session allotment. |
"Existing" packages hint | Shown in the Sell dialog once a customer is picked — the names of packages that customer already owns, as a quick duplicate-purchase sanity check (not a hard block). |
Tips & Best Practices
- Like Memberships, remember to collect the package price as a charge on the customer's next sale — selling a package here only creates the session entitlement, not a payment.
- When a customer already owns a similar package (shown in the "Existing" hint), double-check with them before selling a duplicate — the system will not stop you from selling the same package twice.
- Session balances are tracked per service inside a package, not shared across services — a customer cannot redeem a "haircut" session against a "facial" allotment even within the same package.