Tickets, seats and pricing
Class packs and class passes
Sell a prepaid class pack on Shopify: customers buy credits once, book each class with their pass and get the credit back if they cancel in time.
Updated September 24, 2026
A class pack is a prepaid bundle of class credits that a customer buys once as a Shopify product, then spends one credit per class on the classes you chose. Each pack bought becomes a class pass with its own pass number, credit balance and expiry date.
Create a class pack
- Open Class packs in the app menu and click Create class pack.
- Under Pack details, fill in Name, Number of credits, the pack price, Valid for (days) and Cancellation cutoff (hours before class). Description and Pack image (optional) can stay empty.
- Under Pack availability, enter Number of packs for sale, or leave it blank for no limit.
- Under Eligible classes, search in Add a class and pick a class. Untick any ticket types a credit should not book.
- Under How customers buy this pack, keep the default to let the app create a new Shopify product. Or switch on Use an existing Shopify product instead and choose one.
- Check the Customer summary preview and click Create class pack.
The price field names your store currency, for example Pack price (EUR).
| Setting | Range | Default |
|---|---|---|
| Number of credits | 1 to 1,000 | 10 |
| Valid for (days) | 1 to 3,650, counted from the order | 90 |
| Cancellation cutoff (hours before class) | 0 to 8,760; 0 means until the class starts | 24 |
| Pack price | above 0, up to two decimals | none |
| Number of packs for sale | blank for no limit, or 0 to 1,000,000 | blank |
| Eligible classes | 1 to 100 ticket types | none |
A series is included with all its dates. Bundles, group tickets and classes with a required add-on cannot be booked with a pack.
A sales limit needs an active inventory location, chosen in the app's Settings.
The Shopify product
A new product takes the pack name as its title and has one variant at your price, with shipping off. The app publishes it to the Online Store only, so it is not on POS or other sales channels.
An existing product must cost more than 0, need no shipping, and not belong to an event, add-on or refund protection. The app only reads it and never changes it.
After saving, you manage the price, description, image and stock in Shopify. The Edit popup changes the Name, Number of credits, Valid for (days), Cancellation cutoff and Eligible classes. Renaming the pack does not rename the product.
Edits apply to new purchases only. Every pass already sold keeps the credits, validity, cutoff and classes it was bought with.
The Pack offers table
The Pack offers table lists your packs with their price, credits and passes sold. A row warns you when its product is not active or not on the Online Store.
The row menu has Edit, View in Shopify Admin, View on store, Publish to Online Store and Archive offer. Archiving does not stop sales; unpublish the product in Shopify for that. Deleting the product in Shopify archives the pack, and passes keep working. There is no delete for a pack.
What the customer gets
The customer buys the pack through your normal cart and checkout. When Shopify marks the order paid, the app creates one pass per pack bought:
- a pass number, starting at 1001 and shown as "Pass #1042"
- the pack's credits
- an expiry: the order's creation time plus the days of validity
The customer needs a Shopify customer account on the order and signs in with that same account later. An order with no customer shows "Customer account needed" until you click Verify purchase.
Each pass gets a confirmation email to the customer account's email address, with the subject "Your class pass is ready" by default and a "My class passes" button. Buying three packs sends three emails.
To style it, click Pass confirmation email at the top of the Class packs page. You can set the Subject, Heading, Message and Button color, and use Send test email. The design applies to every pack in your store.
Buying a pack uses none of your monthly ticket allowance.
The My class passes page and the Class passes block
Customers see their passes on a page of your store. The setup guide on the Class packs page offers two ways to add it:
- Use ready-made page gives you a link,
/apps/easy-tickets/class-packson your store, to copy into your store menu. - The Class passes theme block goes on a page you create for it. The guide walks you through a page template named class-passes, then Add section, Apps, Class passes.
Your store needs customer accounts turned on. Signed-out visitors see a sign-in message and button.
The page has two tabs, "Passes" and "My bookings". Each pass card shows its status, number, credits remaining and expiry, with a "View pass and book" button. The pass page also lists "Credit activity", such as "Class booked -1".
The block's settings cover the heading, sign-in text, minimum height, sizes and colours. See storefront blocks for each block's options.
Booking a class with a credit
- The customer opens a pass and clicks "View pass and book".
- In "Choose a class date", they pick a day on the calendar, up to 12 months ahead, or browse the list. Each class shows the places left or "Full".
- They click "Select class". With several ticket types they pick a "Ticket type" first.
- Under "Review your booking" they fill in first name, last name, email, phone and your class questions.
- They click "Use 1 credit and book".
The customer sees "Your class is booked. Your ticket is available below." The app issues a normal ticket with a QR code and sends the event's ticket email. No Shopify order is made and nothing is charged.
The form is not prefilled, so a customer can book for someone else. Each booking uses one ticket of your monthly allowance.
Booking rules:
- The class must start before the pass expires.
- One active booking per customer for the same class date and ticket type, across all their passes.
- Hidden, paused, cancelled and not-yet-on-sale classes cannot be booked with a credit.
- Optional add-ons are not sold with a credit booking.
For a class with reserved seating, "Choose a seat" opens the seat chooser, where the customer picks exactly one seat. It is held for the event's seat hold time while they book. Dates sold as whole tables cannot be booked with a pass. See reserved seating.
Cancelling a booking
The customer clicks "Cancel booking" on a booked class. The confirmation reads "Cancel this class and return 1 credit to this pass? The original expiry still applies."
Cancelling works until the cutoff before the class starts, 24 hours by default, as long as the ticket is not checked in. The credit comes back with its original expiry, and the ticket goes back to your allowance. A seated class releases the seat, and the waitlist is told a place opened.
After the cutoff the customer sees "The cancellation deadline has passed. Contact the store." No cancellation email is sent. To change a date, the customer cancels in time and books another class.
You cannot cancel or move a pass booking from the admin. Its Attendees row says to manage it from the customer's class pass.
If you cancel a class date, pass bookings are not cancelled for you. The customer can cancel them at any time, and the credit comes back. An event with pass bookings cannot be deleted until they are cancelled.
Purchased passes
The Purchased passes table on the Class packs page lists every pass with its Customer, Order, Purchased date, Remaining credits, Expires date and Status. Search purchased passes finds a pass by number, customer, email or order.
Edit pass on a row lets you change:
- Remaining credits, from 0 up to the pack's credits
- Expires, which moves the expiry to 23:59 on that day in your store's time zone
Click Save changes, and the toast reads "Pass updated". The customer sees "Credits adjusted by the store" or "Expiry date changed by the store" in their credit activity. No email is sent.
Verify purchase appears on passes that are On hold or Customer account needed. It reads the order from Shopify again. The pass is released when the order is paid, has a customer and still has the pack line, and any money refunded is less than one pack's price.
Refunds and cancelled orders
- A refund of the pack line puts that pack's passes On hold. Credits are frozen, and classes already booked stay booked.
- A refund of other products on the same order leaves the passes alone.
- A money-only refund, or an edited order, puts every pass on the order On hold. If the refund was only for shipping, Verify purchase releases the pass.
- Cancelling the order in Shopify puts the passes On hold and cancels every ticket on the order, including classes booked with those passes.
A hold is never lifted on its own; only Verify purchase lifts it. The app never refunds money itself.
What class packs do not do
- No subscriptions, memberships, auto-renew or rollover.
- No unlimited passes, and a class always costs 1 credit.
- No group bookings with a pass: one booking is one ticket.
- No sharing, transferring or gifting a pass, and no pass made by hand without an order.
- No POS sales or bookings through the app.
- No booking from the product page.
- No wallet inside Shopify's customer account pages, and nothing about the pass on the thank-you page.
- No expiry reminders or low-balance emails.
- No free packs: the price must be above 0.
- No credits above the pack's size.
Class packs are on every plan. For the shopper's side, see the class packs feature page.
Frequently asked questions
Is a class pack a subscription?
No. A pack is a one-time Shopify product. There is no recurring billing, no auto-renew and no rollover of unused credits.
Can I give a customer extra credits or more time?
Yes, with Edit pass in the Purchased passes table. You can set the remaining credits from 0 up to the pack's size and move the expiry date. Each change shows in the customer's credit activity.
Does buying a pack use my monthly ticket allowance?
No. Buying a pack uses no tickets. Each class booked with a credit uses one ticket, and a cancellation before the cutoff gives it back.
Can customers use their pass on the class's product page?
No. Customers book with credits only on the My class passes page or the Class passes block. The product page sells normal paid tickets.