Promo Codes
Use this page to create and manage promo codes (coupons) for one location at a time — percentage or fixed discounts, free items, customer groups, order/payment rules, validity periods, weekday/time windows, and which menu items qualify.
Open the screen: Sidebar → Promotions Management → Promo Codes
One location at a time
Pick Location on the list before codes load. The form also ties each code to a single outlet.
Promo codes list
What it does
Shows promo codes for the selected location with filters, pagination, and view/edit/delete actions.
Step-by-step
- Open Promotions Management → Promo Codes.
- Select Location — first outlet is usually pre-selected; list does not load until a location is chosen.
- Optionally set Status and Expired filters.
- Read the table columns below.
- Tap refresh (
title: Refresh promo codes) — disabled until Location is set. Toast: Refreshing / Loading promo codes… - Use pagination at the bottom to change page or rows per page.
Filters
| Filter | Options | What it does |
|---|---|---|
| Location | Your outlets | Which store’s promo codes you are viewing. The first outlet is usually selected automatically when the page opens. You must pick a location before the list loads. |
| Status | All, Active (default), Inactive | Show only live codes, only turned-off codes, or everything. |
| Expired | All, Not expired (default), Expired | Whether the code is past its end date in the system. This is separate from Validity periods you set in the form (see below). |
Changing Location, Status, or Expired returns you to the first page.
Toolbar: Add Promo (needs CREATE permission).
What the table shows
| Column | Meaning |
|---|---|
| ID | Internal reference number for support (you rarely need this day to day). |
| Code | What the customer or staff types at checkout. Can be left blank when creating - the system can generate one for you. |
| Title | Short name for the promotion. Shows - if empty. |
| Discount type | Fixed (dollar amount off) or Percent (% off), shown as a coloured label. |
| Offer scope | Order (whole order) or Item (specific lines) - see form section below. |
| Available days | All Days & Times, or which weekdays and hours the code works (e.g. Friday 09:00–17:00). |
| Discount amount | The number shown: dollars off or percent off, depending on discount type. |
| Used / limit | How many times the code has been used, compared to the maximum you allowed. No limit means unlimited uses. |
| Status | Active (can be used) or Inactive (turned off). |
| Actions | View, Edit, Delete - see below. |
Row actions
| Action | What it does |
|---|---|
| View (eye) | Opens Promo Code Details (read-only). Use from the list — direct URL without list state shows Promo code data not available. Please navigate from the Promo Codes list. |
| Edit (pencil) | Opens Edit Promo Code dialog |
| Delete (trash) | Browser confirm: Are you sure you want to delete this promo code? — then permanent delete |
Deactivate instead of delete
Turn Active status off in Edit if you may reuse the code later.
Common mistakes / FAQs
- “No promo codes found”. Change filters or tap Add Promo.
- Refresh is disabled. Select Location first.
- Loading… — wait for the API response for that outlet.
Add or edit a promo code
What it does
Opens a large dialog — Add Promo Code or Edit Promo Code. Scroll for all sections.
Step-by-step
- Tap Add Promo or Edit on a row.
- Fill sections below (choose Location first — it refreshes menu items and customer groups).
- Add at least one eligible item before save.
- Tap Create Promo / Update Promo (Saving... while working).
- On success: Promo code created / Promo code updated — dialog closes and list refreshes.
Basic information
| Field | Required? | What to enter |
|---|---|---|
| Title | Yes | A short name you will recognise (e.g. “Summer 10% off”). |
| Location | Yes | Which store this code belongs to. Changing location refreshes the menu list and customer groups for item picking. |
| Promo code | No | The code customers type. Leave blank to let the system create a unique code automatically. |
| Promotion type | Yes | Discount - money or % off. Free - give items at no charge (price becomes zero on the free lines). |
| Offer scope | Yes | Order level - whole order. Item level - specific lines. Free forces Item level only. |
| Max Times Per Cart | No | Item level only. Placeholder Unlimited — cap how many times the promo applies in one cart. |
| Description | No | Internal notes (placeholder: Optional description for internal reference). |
Discount settings (only when type is Discount)
| Field | What to enter |
|---|---|
| Discount type | Fixed amount - e.g. $5 off. Percentage - e.g. 10% off. |
| Amount | The discount value. Required. Must be at least 0.1 (10 cents or 0.1%). For percent, you cannot enter more than 100. |
Usage limits
| Field | What to enter |
|---|---|
| Minimum order | Optional. Cart must reach this subtotal before the promo applies. |
| Maximum discount | Optional. Stops the discount growing too large (especially for % off). |
| Maximum uses | Optional. Total times anyone can use this code across all customers. Leave blank for unlimited. |
Customer restrictions
| Field | Default | What it does |
|---|---|---|
| Customer groups | None selected | Only customers in the groups you pick (for that location) can use the code. |
| Once per customer | On | Each customer can use it only once. |
| Logged in only | On | Guest checkouts may not qualify, depending on POS/online setup. |
| Auto apply | Off | When on, the system can apply the promo automatically when the cart matches all rules (where the channel supports it). |
| First-time only | Off | When on, only first-time buyers can use it. |
Order and payment restrictions
| Field | What to enter |
|---|---|
| Order types | Optional. Limit to certain services (e.g. delivery only). If you pick nothing, all order types at that location are allowed. |
| Payment methods | Optional. Limit to certain ways of paying (e.g. card only). If you pick nothing, all payment methods are allowed. |
If you select both order types and payment methods, the code only works when both match (e.g. delivery and card). Leave both empty for no restriction.
Weekday and time restrictions
- Add day - restrict the promo to certain days and hours (default slot 09:00–17:00).
- Each weekday can only appear once.
- You can add more than one time slot on the same day.
- No days added - the promo is valid any day, any time (as long as other rules pass).
Validity periods
- Add period - set Valid from and Valid to (date and time).
- Valid to must be after Valid from.
- You can add several periods if needed; delete a row with the trash icon on that row.
- No periods - the promo can stay available indefinitely while Active, subject to usage limits and weekday rules.
There is no single “expiry date” box on this form. Use Validity periods for calendar windows, and use the list filter Expired to find codes the system marks as expired.
Applicable items
You must add at least one eligible item before saving.
| Button | When you can use it | What it does |
|---|---|---|
| Add eligible items | After you choose a location | Opens Select items - pick categories or products the customer must buy (or that qualify for the deal). |
| Add offer items | After you choose a location | Same picker, for the free or discounted “reward” lines (buy X get Y). |
| On full menu | Only when Offer scope is Order level | Quickly selects every menu category at that location as eligible (whole-menu promotion). |
Eligible items (required)
- What the customer needs in the cart (categories or individual products).
- Required qty - how many they must buy. If several rows share the same group, changing quantity on one updates the others in that group.
- Group (link icon) - link items so the customer can choose any one in the group (e.g. “any pizza” counts). Use None, an existing Group 1 / Group 2…, or + New group.
Offer items (optional)
- What they get as the deal (e.g. free fries). Set Free qty or Offer qty per line.
- For Free promotions, add offer lines for what is given away free.
Buy X get discount
If type is Discount and you add no offer items, a blue note explains: the discount applies to the eligible items once the required quantity is in the cart.
Tips when picking items
- Picking a whole category means you do not need to tick every product under it separately.
- If you save from Select items, it replaces the previous list for that section (eligible or offer) - it does not add on top of old picks.
Active status and buttons
| Control | What it does |
|---|---|
| Active status | On = customers can use the code (if all other rules match). Off = deactivated without deleting. |
| Reset form | Clears many fields and restrictions. Does not remove the items you already picked or change location - adjust those manually if needed. |
| Create promo / Update promo | Saves your changes and closes the window. The list refreshes. If something is wrong, a message appears at the top of the screen. |
Messages you may see when saving
- No eligible items - you must add at least one under Applicable items.
- Discount amount missing or too small - enter at least 0.1 for fixed or percent.
- Validity dates - “Valid to” must be after “Valid from”.
Select items (picker)
Opened from Add eligible items or Add offer items.
| Part of the window | What to do |
|---|---|
| Search | Type to find categories or product names. |
| Select all categories | Ticks every category currently shown (after search, only visible ones). |
| Category row | Tick the box to include the whole category; click the arrow to expand and pick individual products. |
| Product row | Tick one product at that location. |
| Variants | Some products show sizes/options underneath - tick the exact variant if the deal applies to one size only. |
| Category vs product | Ticking the category clears individual products under it, and vice versa - you use one or the other. |
| Footer | Shows how many you selected; Save returns to the promo form, Cancel discards changes. |
Only active menu items at the chosen location appear. Items not set up at that store are not listed.
Common setups (examples)
| What you want | Type | Scope | Eligible | Offer | Also set |
|---|---|---|---|---|---|
| 10% off the whole bill | Discount | Order | On full menu or all categories | - | Percent amount; optional min order / max discount |
| $5 off when they buy pizza | Discount | Item | Pizza category, qty 1 | - | Fixed or % amount |
| Buy 2 burgers, get 1 free fries | Free | Item | Burgers, qty 2 | Fries, free qty 1 | Offer items |
| Buy dessert or coffee (either counts) | Discount | Item | Both in the same group, qty 1 each | - | Group link icon |
| Lunch deal hours only | Any | Any | As needed | As needed | Weekdays + times (e.g. Mon–Fri 11:00–14:00) |
| Runs 1 Dec – 31 Dec only | Any | Any | As needed | As needed | Validity periods |
| VIP members only | Any | Any | As needed | As needed | Customer groups |
| Delivery paid by card only | Any | Any | As needed | As needed | Order types + payment methods |
View promo code details
What it does
Read-only page at /promo-codes/:id with full rule breakdown. Data comes from the list row — not a separate API fetch.
Step-by-step
- Tap View (eye) on the list row.
- Review Summary, Conditions, Validity periods, Available days & times, Eligible items, Offer items, Linked customer groups (Loading linked groups... / This coupon is not linked to any customer group.).
- Tap Back to return to the list. Use Edit on the list to change settings — no edit on this page.
Permissions
| What you need | Why |
|---|---|
| Promo Codes module permission | See the menu and list |
| CREATE | Add Promo |
| UPDATE | Edit and Active status |
| DELETE | Delete on a row |
Tips
- Choose location first, then pick menu items.
- Turn Active off instead of Delete if you might reuse the code later.
- Expired on the list and Validity periods in the form work together - set dates in the form if the deal must stop on a calendar day.
- After a complex setup, use View to double-check eligible items, offer items, and conditions.
- Test with a small real order on POS or online before sharing the code publicly.
Related
- Promotions overview
- Promotional Groups — display media group labels (not promo item groups in the form)
- POS: Coupons & Promotions
