This feature is currently in Beta, meaning it is actively being tested and refined before a full release. It is not available to all organizations. Access is limited to clubs in CourtReserve's Early Access Groups. To request access, contact our Customer Success team via live chat or email.
INTRODUCTION
Feature Summary: Promo Codes allow CourtReserve organizations to create and manage discount campaigns that can be applied at checkout across a wide range of fee types — including reservations, lessons, events, leagues, memberships, point of sale, packages, and miscellaneous fees. Admins can set discount amounts, control who can use a code, define usage limits, schedule campaign dates, and track all activity through the Audit Log. Promo codes work across the admin panel, member portal, mobile app, point of sale, and public booking.
Use Cases:
Offer a seasonal discount on court reservations — for example, 10% off tennis court rentals during May.
Create a new member welcome discount on membership purchases.
Run a limited-time promotion for event or league registrations.
Reward specific membership tiers with exclusive discount codes.
Apply promo codes to point of sale, packages, or miscellaneous fees.
Use the Audit Log to track a full history of promo code creations, edits, and deletions across your organization.
Why Promo Codes Are Useful
Promo codes give your organization a flexible, controlled way to offer discounts without manually adjusting prices. Whether you're running a seasonal promotion, rewarding loyal members, attracting new players, or incentivizing early registration for an event — promo codes let you do it all from one place. Codes can be broad (available to anyone) or targeted (restricted to specific membership types), time-limited or ongoing, and capped by total usage or per-customer usage to keep your campaigns in check.
Visual Example
NAVIGATION
Navigate to Settings > Billing Settings > Promo Codes. 
Viewing And Managing Promo Codes
Enable or Disable Promo Codes
At the top of the Promo Codes page, a global configuration section controls how promo codes behave across your organization.
Enabled / Disabled - Toggles promo code functionality on or off. When enabled, the promo code field is visible to players and system users at checkout. When disabled, the promo code field is hidden from players at checkout, though codes can still be built and managed from the admin panel.
Allow promo codes to apply to past transactions - When Promo Codes are enabled and this field is checked, promo codes can apply to fees from any date, including past-dated services. Uncheck to restrict promo codes to same-day or future-dated fees only.
Filtering by Date Range
Use the Start Date and End Date fields to define the reporting window. The Interval dropdown lets you quickly select a preset range (such as Last 30 Days) or set a custom range using the arrow controls. All Key Signals metrics on the page reflect the selected period.
Key Signals
The Key Signals section provides a snapshot of promo code activity for the selected date range. Each metric also displays a comparison to the prior period.
Total Redeemed - The number of successful promo code applications across all active codes in the selected period. Click the player count link to open the "top redeemers" panel, which lists members who used the most promo codes during the selected period. The panel displays each member's Rank, Member name and email, Distinct Codes Used, and Total Redemptions, along with a summary row showing the totals across all listed members. Results can be exported using the Export button.
Net Sales from All Campaigns - Total post-discount revenue on transactions where any promo code was applied during the selected period (subtotal minus discount).
Total Discount Amount - The total amount discounted across all promo codes in the selected period - the revenue traded for redemption activity.
Error Rate for All Codes - Failed promo code apply attempts divided by all promo code attempts in the selected period. Click Error Rate to open the Members with Frequent Redemption Errors panel, which lists members whose promo code attempts resulted in failures during the selected period. Failed attempts reflect activity across all promo codes in your club for the selected period. The panel displays each member's Order, Member name and email, Last Attempt date, Failure Rate (All Codes) shown as a ratio of failed to total attempts, and Distinct Codes Attempted. Results can be exported using the Export button.
Note: Click the Error Rate value for a specific code to open the Members with Frequent Redemption Errors panel, scoped to that code. The panel header displays the code name and description for reference. It lists each Member name and email, Last Attempt date, Failure Rate shown as a ratio of failed to total attempts for that code, and Distinct Codes Attempted.
Hover over a member's Failure Rate value to see a breakdown by code, including the error type (e.g., TOTAL_LIMIT_REACHED or NOT_ELIGIBLE) and number of failed attempts.Results can be exported using the Export button.
Note: Each metric displays a change indicator (increase or decrease) compared to the prior period of the same length.
Active and Inactive Promo Codes
The next section is organized into two tabs:
Active: Displays all currently active promo codes that are available for use at checkout. A code will only be usable if it falls within its configured campaign dates, has not reached its usage cap, and meets the eligibility requirements set during setup.
Inactive: Displays promo codes that have been deactivated. Inactive codes can be reactivated at any time from this tab.
For each promo code, the table displays the following:
Order - The display order of the promo code in the list.
Campaign Name - The campaign name assigned to the promo code.
Code - The discount code players enter at checkout.
Discount Type - The type of discount applied, either a percentage (e.g., 35%) or a fixed dollar amount.
Eligibility - The membership types eligible to use the code, or ALL if unrestricted.
Eligible Items - The fee types the promo code applies to.
Usage Limits - Whether the code is unlimited or has a usage cap, reflecting the settings configured during setup:
If Unlimited was selected: displays Unlimited.
If Limited To was selected: displays the total usage cap and the per-person limit (e.g., 99,999, 2 per person).
Redeemed - The total number of times the code has been successfully applied.
Error Rate - The percentage of failed apply attempts out of all attempts for that code.
Sales with Promo - The total post-discount revenue generated from transactions where the code was applied.
Valid Dates - The campaign date range, or Ongoing if no end date has been set.
Sorting and Filtering the Columns
Each column header includes a filter icon that allows you to narrow results based on that column's values. Click the filter icon on any column to set one or more conditions - for example, filtering Redeemed to show only codes redeemed 20 or more times. Conditions can be combined using And logic for more precise results. Click Filter to apply or Clear to reset.
Click the Sort by icon next to any column label to sort that column alphabetically in ascending or descending order.
Actions Menu
From the actions menu on the right side of each row, admins can take the following actions:
Edit: Update any details of the promo code campaign.
Copy Code: Copies the promo code to your clipboard for easy sharing — useful for pasting into member emails, newsletters, or social media posts.
Duplicate: Creates a copy of the campaign, making it easy to set up a similar promotion without starting from scratch.
Make Inactive: Temporarily deactivates the code so it cannot be used at checkout. The code will move to the Inactive tab and can be reactivated at any time.
Delete: Permanently removes the promo code. This action cannot be undone.
Note: Deleting a promo code permanently removes it and cannot be undone. If you may need the code again in the future, use Make Inactive instead.
Audit Log
The Audit Log button in the top right corner tracks all promo code activity — including creations, edits, and deletions.
Creating a Promo Code
Click Create Promo Code to open the creation page. Work through each section to configure your campaign.
Campaign Name: Enter a descriptive name for the campaign. This is visible to members at checkout once successfully applied.
Example: 10% off tennis court rental
Discount Type: Choose between two discount types:
Percentage: Applies a percentage discount to eligible fees. Use the +/- buttons to set the percentage amount. Example: 10%.
Fixed Amount: Applies a flat dollar discount to eligible fees, allocated proportionately across eligible items in the order.
Minimum Amount Spent: Optionally set a minimum order amount that must be reached before the promo code can be applied. Leave blank if there is no minimum.
Code Generation: Choose how the promo code itself is created:
Automatic: CourtReserve generates a unique code automatically.
Manual: Enter your own custom code (up to 20 characters). Codes are not case sensitive — uppercase and lowercase are treated the same at checkout. Spaces are not allowed.
The Copy button copies the promo code to your clipboard so you can quickly share it with members via email, newsletter, or social media.
Example: 10OFF4U
Note: Each promo code must be unique. If a code matches an existing campaign, you will receive an error prompting you to choose a different code.
Usage Cap
Control how many times the promo code can be used:
Unlimited: The code can be used any number of times during the campaign dates with no restrictions.
Limited To: Set a cap on usage with the following options:
Total Number of Usage: The maximum number of times the code can be used across all customers combined.
Usage Per Customer: The maximum number of times a single customer can use the code.
Example: Set Usage Per Customer to 3 — meaning each member can only use it up to 3 times.
Note: For public bookings, usage per customer is tied to the guest's verified phone number. If a guest attempts to use the code more times than allowed on the same phone number, they will receive an error message at checkout.
Campaign Dates
Define when the promo code can be used at checkout:
Activate Immediately: The code becomes active as soon as it is saved and remains active until it is manually deactivated or deleted.
Scheduled Time: Set a specific start date, start time, end date, and end time for the campaign window.
Example: Start Date 5/1/2026 at 12:00 a.m. through End Date 5/31/2026 at 11:45 p.m. — the code is only usable during the month of May.
Important: Campaign dates control when the promo code can be used at checkout — they do not restrict which reservations or event times or dates the code applies to.
Eligibility
Define who can use the promo code:
Anyone with Code - Any member or public booker who has the code can apply it at checkout.
Specific Memberships - Restrict the code to members on specific membership types. Select one or more membership types from the dropdown.
Specific Member Groups - Restrict the code to members belonging to specific member groups. Select one or more groups from the Member Groups dropdown.
Specific Individual Members - Restrict the code to individually named members. Use the Individual Members search field to find and add members by name. Type at least three characters to trigger search results. Added members display in a list showing Name and Membership, and can be removed individually using the delete icon.
Note: Only Anyone with Code supports public booking. If you select Specific Memberships, Specific Member Groups, or Specific Individual Members, the code will not be applicable during the public booking flow.
Apply To
Select which fee types the promo code applies to. At least one fee type must be selected - you will receive a validation error if you attempt to save without selecting at least one. You can select a single fee type or any combination across the four tabs.
The Apply To section is organized into four tabs:
Bookings
Time-Based Eligibility
Restrict code usage by booking day and time. Redemption rules for time of checkout are controlled in Campaign Dates.
Any day, any time - The code can be applied at checkout on any day and at any time.
Specific days and times - Restrict the code to specific days of the week and a defined time of day range. Select individual days or use the Weekdays or Weekends shortcuts to quickly populate the selection. Set a Time of day range using the start and end time fields. Leave the time fields blank to allow the code on selected days at any time. Note: For the time range to apply, the booking must both start and end within the defined window. For example, if the time range is set to 9 AM to 12 PM, a reservation starting at 11:30 AM that runs until 12:30 PM would not be eligible, as it extends beyond the end time.
Select which booking types the code applies to:
Reservations: Apply the code to reservation fees. Optionally narrow by specific Reservation Types. Enable Allow for Reservation Guest Fees to include guest fees on reservations.
Lessons: Apply to lesson fees. Optionally narrow by Lesson Type.
Events: Apply to event registration fees. Optionally narrow by Event Category. Enable Allow for Event Guest Fees to include guest fees on registrations.
Leagues: Apply to league fees. Optionally narrow by League Session.
Example: A campaign called Pickleball Reservation Special uses the code PBALL10 for 10% off on the weekends. When a player selects Pickleball Reservation as the reservation type for a Saturday or Sunday reservation, the 10% discount is applied to the member’s reservation.
Public Booking
Time-Based Eligibility
Restrict code usage by booking day and time. Redemption rules for time of checkout are controlled in Campaign Dates.
Any day, any time - The code can be applied at checkout on any day and at any time.
Specific days and times - Restrict the code to specific days of the week and a defined time of day range. Select individual days or use the Weekdays or Weekends shortcuts to quickly populate the selection. Set a Time of day range using the start and end time fields. Leave the time fields blank to allow the code on selected days at any time. Note: For the time range to apply, the booking must both start and end within the defined window. For example, if the time range is set to 9 AM to 12 PM, a reservation starting at 11:30 AM that runs until 12:30 PM would not be eligible, as it extends beyond the end time.
Select which public booking types the code applies to:
Reservations - Apply the code to public booking reservation fees. Optionally narrow by specific Reservation Types using the dropdown.
Events - Apply the code to public booking event registration fees. Optionally narrow by Event Categories using the dropdown.
Example: A campaign called Clinic Special uses the code CLINIC5 for $5 off. With Events enabled and Adult Clinic selected as the Event Category, the $5 discount is applied at checkout when a public booker registers for any Adult Clinic event on any day.
Point of Sale
Apply the code to point of sale purchases. Optionally narrow by POS Item Category.
Example: A campaign called Paddle Discount uses code PADDLE15 for 15% off. Under Point of Sale, the Paddle item category is selected — meaning the discount applies only to paddle purchases at the time of sale.
Membership Costs
Apply the code to membership fees. Optionally narrow by Membership Type or include the Initiation Fee.
Example: A campaign called Single Gold Annual Member Welcome Offer uses code GOLD20 for 20% off. Under Membership Costs, the Single Gold membership type is selected and Initiation Fee is left unchecked — meaning only the membership fee is discounted, not the initiation fee.
Other Fees
Misc. Fees: Apply to any miscellaneous fee.
Packages: Apply to package purchases. Optionally narrow by specific packages.
Recurring Fees: Apply to recurring fees. Optionally narrow by recurring fee type.
Example: A campaign called Drop-In Event Package Deal uses code DROPIN20 for $20.00 off. Under Other Fees, Packages is selected and the 10-Pack (Event Drop-Ins) package is chosen from the dropdown — meaning the discount applies only when a member purchases that specific package.
Once all fields are completed, click Save to create the promo code.
Applying a Promo Code at Checkout — Admin Side
When processing a payment from the CourtReserve admin panel, an Apply Promo Code option appears in the Summary section on the right side of the Payment Details screen.
To apply a promo code:
From the Payment Details screen, locate the Apply Promo Code option in the Summary section and click it.
A Promo Code field will appear. Enter the code and click Apply.
If the code is valid, the Summary will update to reflect the discount. The discounted amount, campaign name, and total savings will display in green. For example, Drop-In Event Package Deal, $20.00 OFF, Saving $20.00 and the Final Payment amount will update accordingly.
Note: If the code is invalid, an error message will display. This may occur if the code is misspelled, expired, not yet active, restricted to a membership type the member does not have, or has already reached its usage limit. There are several validation messages that may display depending on the issue.
Once the correct code is applied and the discount is confirmed, proceed with payment as usual. An example completed payment and receipt are shown here:
Point of Sale
Promo codes can be applied to Point of Sale transactions. See example transaction and receipt shown here:
Important to note: There are a few guardrails in place for Point of Sale to prevent double discounting:
Discounted items - If a discount has already been applied to an item in the cart, a promo code cannot be applied to that item. If every item in the cart has been discounted, the promo code field will be grayed out and display the message: "Cannot apply Promo Code for Discounted Items." If the cart contains a mix of discounted and non-discounted items, the promo code field remains active and displays the message: "Promo will only be applied to non-discounted items."
Charge to Account - If a member is selected and the payment method is set to Charge to Account or Apply Credit is selected, the promo code field will be grayed out and display the message: "Promo codes cannot be applied when charging to a member account."
Applying a Promo Code at Checkout — Player Side
Players can apply promo codes directly at checkout through the CourtReserve member portal and mobile app. During the checkout process, a Promo Code field will appear where players can enter their code before completing payment. Once a valid code is entered, the discount will be applied and confirmed in green — displaying the campaign name and savings amount. The updated total will reflect the discounted price before the player submits payment.
Member Portal
When completing a payment, members can enter a promo code directly on the checkout screen. To apply a discount, they'll type the promo code into the Promo Code field located below the payment information and click Apply. For example, entering 20OFF and clicking Apply will apply the associated discount to the reservation total before completing payment.
Before completing payment, members will see a full summary of charges and any applied discounts above the Pay button.
Example of a player's receipt:
Public Booking
Promo codes are supported on the Public Booking checkout page based on the the code's Apply To settings.
On the member portal, the code entry field appears on the right side of the checkout screen.
On the mobile app, the Apply Promo Code button appears directly above the pay button in the checkout flow.
On Public Booking, guests must first verify their phone number before applying a promo code. Users outside the US and Canada verify using their email address instead. If a guest attempts to apply a code before completing verification, they will receive an error. Once verified, the guest can enter an eligible code and the discount is applied to the subtotal before payment is submitted.









































