Promo codes allow you to offer percentage or fixed amount discounts to your buyers, or unlock hidden tickets reserved for certain people. They are used to manage your pre-sales, reward your partners, or create exclusive access.
Go to Promo Codes from your event menu.
Create a Promo Code
Click on Create Promo Codes. The modal offers two modes: a single code or multiple codes at once (see next section).
Define the code your buyers will need to enter (e.g., EARLY20, PARTNER, VIPACCESS). The code must be in uppercase letters and numbers only, without spaces or special characters. Maximum 50 characters.
Add an internal note (optional) to remind yourself who or what this code is for (e.g., "For sponsor partners"). This note is only visible to your team.
Indicate the discount value and choose the type: percentage (%) or fixed amount (€). For example, 20% or 10€. Set to 0 if you want to use the code only to unlock a hidden ticket without applying a discount.
Set the usage limit (optional). Leave blank for unlimited use, or specify a maximum number (e.g., 50 for 50 total uses).
Choose the availability period: until the end of sales (default), or custom dates to limit the code to a specific period. Available shortcuts: "Now" and "Event Start".
Choose the status of the code: active or inactive. An inactive code is rejected at purchase, even during its validity period. You can activate it at any time from the list.
Associate the code with the relevant tickets (see Ticket Association below).
Ticket Association
Three options:
All tickets and add-ons → the code applies to everything
Only a selection → choose the relevant tickets
A different value per ticket → define a specific discount for each ticket (e.g., -20% on Standard Entry but -10% on VIP Pass)
Create Multiple Codes at Once
In the creation modal, select the "Multiple codes" mode. Two ways to generate:
With names: enter one name per line (e.g., PARTNER, PRESS, SPONSOR), then specify the number of codes per name. The summary announces the total before validation (e.g., "3 names x 10 = 30 codes").
Anonymous: select "Generate random codes, without name".
The option "Add a random sequence of 4 digits" is checked by default. If you uncheck it, the code will be the name alone (e.g., PARTNER instead of PARTNER4821), making it easily guessable.
All configuration fields (value, limit, period, ticket association) are shared by all generated codes.
Import from a Spreadsheet
To create a large number of codes with different configurations, use spreadsheet import.
From the Promo Codes page, click on Import.
Two approaches:
Use our template (downloadable from the import modal) for a ready-to-fill format. If your file exactly matches the template columns, the mapping step is skipped and you go directly to the preview.
Use your own Excel or CSV file. PassPass then offers to map your columns to the expected fields.
Step 1: File
Drop your Excel (.xlsx) or CSV file.
Step 2: Columns
Map your columns to PassPass fields. PassPass pre-fills what it automatically recognizes. Check the mappings. An Example column shows the first real value from your file.
If you use the PassPass template, this step is automatically skipped.
The eight fields:
Code (mandatory): uppercase letters and numbers, maximum 50 characters, unique for the event. Line rejected if empty
Value (the column is mandatory): number. An empty cell equals 0 (a code with 0 is an access code, not an error)
Type % or € (to be filled): no default. The menu remains red until filled. A "10" could mean 10% or 10€, PassPass does not guess
Internal note (optional): free text, invisible to the buyer
Usage limit (optional): integer minimum 1. Empty = unlimited
Start date (optional): format DD/MM/YYYY. Empty = now
End date (optional): same. Empty = always valid
Associated tickets (optional): exact names separated by a semicolon (;). Empty = all tickets
The ticket separator is the semicolon, not the comma, as ticket names often contain commas.
Step 3: Preview (Codes)
A table where everything can be corrected without returning to Excel: type, value, limit, dates, and associated tickets. Select multiple lines and click on Edit to update them all at once.
Lines with errors appear in red with an info icon explaining the error. An error line blocks the import.
Step 4: Confirmation
The summary lists what will be created: code, actual discount (50% or 12.00€), limit, validity, tickets. Unfilled values appear as Unlimited, Always, All tickets.
The import is all or nothing. If the batch fails, no code is created. Duplicates are rejected, not merged. A code that already exists on the event causes its line to fail. To import it, first delete the existing code or remove the line from the file.
Common Errors
"Code X appears multiple times" → duplicate in the file
"Code X already exists on this event" → duplicate with an existing code
"A percentage must be an integer between 0 and 100" → no decimal, not beyond 100
"Invalid value, it cannot be negative" → negative number
"End date must be after start date" → dates reversed
"Unknown ticket: X" → misspelled name, copy it from the "Available Tickets" tab of the template
"Code too long (50 characters maximum)" → shorten the code
Two Types of Use
Discount Code
The classic case: a code with a percentage or fixed amount value (e.g., EARLY20 = 20% discount, or PROMO10 = 10€ discount). When a buyer enters the code, the relevant tickets display a green "Discount" badge, the original price is crossed out, and the new price appears next to it. The discount is also displayed as a separate line in the order summary.
Discount codes only apply to paid tickets. Free tickets (0€) are not affected by a discount code.
Unlock Code
A code with 0% or 0€ discount, associated with a ticket whose visibility is set to Visible with promo code. The ticket is invisible on the sales page until the buyer enters the code. The ticket then appears in the list, and the buyer can purchase it normally.
This is the ideal mechanism for:
Exclusive pre-sales (ticket reserved for newsletter subscribers)
Partner or sponsor access
Free invitations (100% code + hidden ticket)
You can combine both: a 50% code associated with a hidden ticket. The buyer unlocks the ticket AND gets a discount.
Be careful not to confuse: 100% = free ticket (the discount covers the entire price). 0% or 0€ = no discount (the code is only used to unlock a hidden ticket).
How the Buyer Uses a Promo Code
During the purchase process, a "Promo Code" tag is displayed at the top of the checkout. The buyer clicks on it to open a modal, enters their code, and clicks on Apply. A confirmation message appears, and the discount (or unlocked ticket) is immediately applied.
The buyer also sees the remaining uses of the code, which can create a sense of urgency if the number is limited.
Share a Promo Code via a Link
Each code has a share link. This link activates the code by default, without the buyer having to enter it manually.
Concretely: the buyer clicks on your link, arrives on the sales page with the promotion already applied (or the hidden ticket already unlocked), and can purchase directly.
Retrieve the link via the menu (three dots) of your promo code, or from the code's configuration panel.
This is the preferred option for your email campaigns, partners, and the press. No code to copy, no typos, no abandonment. Combined with a 0-value code, this creates an invitation link that reveals a reserved ticket.
Track and Manage Your Codes
The list displays for each code: the code, the discount, the number of uses, the linked tickets, the end of validity, the status, and the last use. You can search by code or internal note.
Statuses
Active → usable
Inactive → manually disabled, rejected at purchase
Scheduled → its start date has not yet been reached
Expired → end date exceeded
Limit reached → the maximum number of uses is consumed
Actions on a Code
From the menu (three dots) of a code: activate / deactivate, share the link, copy the code.
Bulk Actions
Select multiple codes to perform a batch action: activate, deactivate, duplicate, copy codes, copy share links, export selection (Excel), delete.
Codes already used are deactivated rather than deleted to preserve the order history.
Common Use Cases
Early bird
EARLY20 code with 20% discount, limited to 100 uses, available during the first 2 weeks of sales. Share it in your newsletter to reward early registrants.
Partner Invitation
PARTNER100 code with 100% discount, limited to 20 uses. Your partners get free access by entering this code. No need to create a separate ticket.
Secret VIP Ticket
Create a "VIP Pass" ticket with visibility Visible with promo code, then a VIPACCESS code at 0%. Only people with the code can see and purchase the VIP ticket.
Press Invitations in Series
Generate 20 codes named PRESS with random sequence (PRESS4821, PRESS7193...), value 0€, associated with the hidden "Press Pass" ticket. Each journalist receives their own code or link, and you track usage individually.
Spreadsheet Import Example
Three lines in your file:
EARLYBIRD, "Launch", %, 20, 100, 01/09/2026, 30/09/2026 → -20% on all tickets, 100 uses, during September
PRESS2026, "Press Invitations", €, 0, 20, , , Press Pass → no discount, unlocks the hidden "Press Pass"
FREE, "Partners", %, 100, 10, , , Day Pass → free ticket on the "Day Pass"
Yes, promo codes only accept uppercase letters and numbers, without spaces or special characters. Maximum 50 characters. For example: EARLY20, VIP2024, PARTNER.
The limit is global, across all orders. If you set a limit of 50, the code can be used 50 times in total. The value of a promo code applies to a ticket (or add-on) and not to the entire order.
The new code replaces the old one. However, if the old code had unlocked a hidden ticket, that ticket remains visible even after the code change. The discount is recalculated according to the new code.
Yes, when creating the code, you can choose to associate the discount with all tickets and add-ons or specific items. An add-on like a T-shirt can also benefit from the discount.
Yes, when creating the code, choose the option "A different value per ticket". You can, for example, apply -20% on Standard Entry and -10% on VIP Pass with a single code.
A deactivated code is rejected at purchase but remains visible in your list. A deleted code disappears from the list. If the code has already been used, it is automatically deactivated rather than deleted to preserve the order history.