Features

Discount codes

A code is only worth printing if it stops working when you said it would — and if the person holding an expired one is told that, not “invalid”.


The discount-code box at the guest checkout on an example hall, above the price summary
What the guest sees. A code typed and checked — the deal answers with its own name, and the total moves before anybody pays.
The real Discounts screen: item discounts, meal deals and bill discounts, including the typed code
Where you set it. One list for happy hours, meal deals and codes — the code row says “Typed by the guest”.

Real screenshots of the running product — the same screens you get, showing real data, not mock-ups.

What it does

You give a discount a code — on a flyer, in an email, on a sandwich board — and a guest types it into the box at the QR checkout. It is checked against your own discounts, priced against the basket in front of them, and the saving appears in the totals before they order rather than as a surprise afterwards.

One code, however it is typed

Case and punctuation come out on both sides, so helch-10, HELCH 10 and Helch10 are the same code. Nobody loses a discount to a hyphen.

It says which kind of no

“We do not have a code by that name”, “that code has expired”, “that code has been used as many times as it can be” and “that code is not valid right now” are four different sentences, and the guest gets the one that is true. Telling somebody holding a flyer that expired on Sunday that they cannot type is how a counter gets an argument.

The limits hold at the checkout, not at the box

Dates, days, hours and a usage limit are all re-checked when the order is placed, from the same rows. A code that ran out between typing it and pressing pay refuses the order with the reason rather than quietly charging full price. A usage limit nobody can count is refused rather than given away.

Where it lands afterwards

The code is stored on the order, so “I typed the code and nothing came off” is a question with an answer. The saving itself goes into the order’s own discount columns — the ones the receipt, the reports and the day’s takings already read.

Across a food hall

A hall basket is placed as one order per kitchen, and a code comes off only the kitchens it covers: a kitchen’s own code touches only its share of the basket, a code the hall issues reaches every counter. The saving is split between those kitchens by what each of them sold, so no vendor ever funds a rival’s flyer. One code per basket.

Free to use.

Every feature on this site is in the product now. The ones that are not built are named on the comparison page rather than left out.