Discount codes
Discount codes are promo codes guests enter at checkout to lower their booking total. You build them in the Discounts area, set how much they take off and the rules around when and to whom they apply, then share the code — or attach it to a membership plan as a member perk.
This guide walks through every setting on a discount, in the order you'll meet them: pick a type, create the code, then fine-tune the amount, limits, eligibility, schedule, and which packages it covers.
Discount code types
Rex supports three types. Pick the one that matches what the promotion should do.
Percent takes a percentage off the booking subtotal — 20% off a $100 booking saves $20. Fixed takes a flat dollar amount off, so a $15 code saves every guest exactly $15 regardless of booking size. BOGO gives a second item free or discounted when a qualifying item is booked.
Create a discount code
Navigate to Discounts
You will see a list of all existing discount codes. If this is your first discount, the page will be empty.
Open the create form
Click the New Discount button. A dialog opens with the discount creation form.
Fill in the discount details
Enter a name (internal label shown in the admin list and reports), a coupon code (what guests enter at checkout — leave blank if you don't want a code-gated discount), a discount type, and an amount (dollars for fixed, percentage points for percent). Name and Amount are required.
Save the discount
The dialog closes and you land on the discount's detail page, where you configure everything below.
Coupon codes are not case sensitive. A guest typing 10offmembers gets the same result as 10OFFMEMBERS.
Discount settings, explained
The discount detail page holds everything else. The main settings sit in one card; three more cards — BOGO Configuration, Minimum Purchase Requirements, and Eligibility — open their own dialogs.
Status
The Discount is Active toggle controls whether the code works at checkout. Switch it off to pause a promo without deleting it — the code and its settings stay intact for later.
Apply to Fees
By default a discount only comes off the package and add-on price. Turn on Apply to Fees and the same discount also reduces the service fee on the booking — a percent code takes its percentage off the fee, a fixed code comes off the fee as well. The fee is never reduced below zero.
Cap how much a code discounts
By default a code discounts the whole booking. Max Discountable Lanes and Max Discountable Minutes keep a generous code in check on large or long bookings — and both prorate rather than hard-stop. Set Max Discountable Lanes to 2 and a guest booking 5 lanes only gets the discount on 2 lanes' worth of the price; set Max Discountable Minutes to 120 and a 3-hour booking is discounted on just the first 2 hours' worth. The lane cap only affects packages priced per lane, and the minute cap only affects packages priced by time — neither changes a flat-rate package.
These two caps use Blank for no cap, not 0. That is the opposite of the usage limits below, which use 0 for unlimited.
BOGO Configuration
Shown when the type is BOGO. Open the BOGO Configuration card to set the Discounted Item Type (a package or an add-on), pick the Discounted Package or Discounted Add On, and choose the Discount Type for the get item: 100% Off (free), Percent Off, or Fixed Amount Off. The buy item is whichever package or add-on the discount is assigned to. Both halves must be in the cart, or the code is refused.
Minimum Purchase Requirements
Open this card to turn on Apply Minimum Purchase Requirement and set a Minimum Purchase Amount ($). The booking subtotal must reach that amount before the code is accepted — a clean way to run "$20 off orders over $100". The subtotal is measured before the discount, and add-ons count toward it.
Eligibility
Open this card to turn on Restrict to specific emails and paste a list of addresses into Emails. Only guests booking with one of those addresses can use the code. Leave it off and the code is open to everyone.
How usage limits work
Max Usage Interval pairs with Max Usage Limit to control how often a code can be redeemed. Every interval is a rolling window counting backward from the moment a guest tries to apply the code — Rex counts redemptions inside that window and blocks the code once the limit is hit.
Examples: Limit 5 + Per Month = up to 5 redemptions in any rolling 30 days. Limit 1 + Per Day = once per 24 hours. Limit 100 + All Time = a hard lifetime cap of 100. With Is Per Person on, the same windows apply but the count is tracked separately for each guest's email address.
A Max Usage Limit of 0 means unlimited, not "none allowed". The same applies to Max Usage Duration (Minutes).
Two further settings limit a code by booking length. Max Usage Duration (Minutes) is a running total per guest: Rex adds up the minutes already discounted for that guest and refuses the code if this booking would push them past the cap. Applied Only For Durations restricts the code to specific booking lengths, so a 60-minute booking is refused by a code set to 30 minutes only.
A redemption is counted when the booking is created, and the Times Used column on the Discounts list reflects it immediately.
Raising a usage limit is not retroactive. If a guest was refused this morning and you raise the limit this afternoon, the booking they already made keeps the price it was created with — it has to be rebooked or adjusted by hand.
Make a code good for a set number of bookings
To hand out a code that's good for a fixed number of bookings and then stops — common for membership perks like "10 visits at 50% off" — combine three settings: set the Amount to the discount each booking should get, set Max Usage Limit to the number of bookings the code covers, leave Max Usage Interval on All Time so the count is a lifetime allotment, and turn Is Per Person on so each guest gets their own allowance.
Schedule when a discount is valid
By default a code works any time it's active. To limit it to a date range and weekly time windows — a weekend promo, a happy-hour code — click Edit Schedule on the detail page, set a Start Date and End Date, toggle on the days it should run, and set a start/end time for each.
The date range is checked against the date the guest is booking FOR, not the date they are booking ON. A code ending 31 July is refused on a booking for 2 August even if the guest buys it in July. If guests book ahead, set the End Date to cover the latest date they can book.
The weekly time windows work differently from how most people expect. Rex requires the entire booking, from start to finish, to sit inside the window for that weekday. A booking that starts inside the window but ends after it closes is refused outright rather than partly discounted.
Example: the window runs until 12:00 noon and a guest books an 11:30 lesson that ends at 12:30. Because the booking crosses noon, the discount does not apply. The same guest booking 8:00 to 8:30 that morning gets it without a problem.
Each weekday holds its own start and end time. If you widen the hours, change every day you intend to cover — one day left on the old hours fails only on that day, which reads as the discount working "sometimes" and is easily mistaken for a fault.
Limit a discount to specific packages or add-ons
By default a discount applies to every package and add-on at every venue. To scope it, open the Packages or Add-Ons tab on the discount and check only the items it should cover. Once a discount is assigned to specific items, it only applies when the cart includes one of them.
A package created after the discount is not added to it automatically. When you add a package, revisit any discount that should cover it.
Using more than one code on a booking
Most packages accept several discount codes on the same booking, and the savings add together: each percent code takes its percentage off the discountable price, each fixed code takes its dollar amount off, and Rex subtracts the combined total. If the combined discount is larger than the package price, the remainder carries over onto the add-ons rather than being lost.
Individual packages can be set to accept only one discount per booking. On those, a second code is refused with a message saying only one can be applied. If you expect two codes to combine and they won't, check that setting on the package rather than on the discount.
Stacking is what makes membership perks work alongside promotions: a member's automatic plan discount and a seasonal promo code can both land on the same booking unless the package restricts it.
Hand out unique codes in bulk
To give many people their own code — a per-guest promo, a partner campaign, an influencer drop — clone an existing discount instead of building each by hand. On the Discounts list, open the row actions on a code with the settings you want and choose Clone. In the Clone Discount dialog, enter a Discount Name for the batch, an optional Prefix (up to 3 characters, prepended to every generated code), and the Number of codes (1–999). Rex generates that many unique codes, all sharing the source's amount, schedule, and rules.
Manage and report on codes
The Discounts list (Promote > Discounts) is where you search, sort, edit, clone, delete, and export codes. Search by name or coupon code and results filter as you type. Click a column header to sort, click again to reverse. Click a row to open its detail page. Use the row actions to delete one code, or select several with the checkboxes and click Delete Selected. Click Export (top right) to download a CSV, which respects whatever search filter is applied.
The list doubles as your usage report: the Times Used column shows each code's live redemption count.
How guests apply a code
At the payment step of the booking flow, guests enter the code in the Discount Code field and click Apply; the total updates. If the code is refused, the guest sees a short message rather than the specific rule that blocked it — so a code that looks correct but won't apply is usually a schedule, usage limit, eligibility or package-scope question.
Apply discounts to memberships
Discounts are also how you grant perks to members. Create the discount codes first using the steps above, then attach them to a plan: open Memberships, click the membership plan, and scroll to its Benefits section. There you'll see a searchable list of your discounts with a checkbox on each — check the ones members on that plan should get, and they're granted automatically. Members receive the discount as part of their membership, with no code to type.
Two things catch people out with member perks. The guest must be signed in to their member account before checkout — booking as a guest with the same email address does not apply plan discounts. And a plan perk still has to clear every rule above: an active membership does not exempt a discount from its own schedule, usage limit, or package scope. A member charged full price is far more often one of those rules than a problem with their membership.
For setting up the plans themselves, see Memberships.
When a code won't apply
If a code stops working unexpectedly, Why is my discount code not working? walks through every check in the order Rex applies them, so the first one that fails is your answer.
Updated Jul 31, 2026
Was this helpful?