A redeemed reward costs a restaurant the plate cost of what it gives away plus the variable cost of serving it — never the menu price. The program pays for itself only when the contribution margin of the visits it actually caused covers the reward cost and the program fixed cost. Member turnover proves nothing.
The mistake that breaks the whole calculation before it starts
Ask an owner what the tenth-coffee-free costs and you will hear the price on the board. That answer quietly inflates every other number on the page, because the price on the board contains margin the restaurant never paid to anybody.
Reward cost — the plate cost of the item given away plus the variable service cost of serving it. The menu price does not enter this number at all.
The first half of that definition is not ours. It belongs to the food cost page and we quote it as it stands there: "Plate cost — the costed sum of every recipe component at yield-adjusted prices, for one portion exactly as it is served." The method of costing a portion lives there — see food cost percentage.
Take the dessert this page uses as its worked example. Menu price 24.00 PLN, plate cost from the recipe card 6.80 PLN, variable service cost — paper sleeve, disposable spoon, card-fee share — 1.45 PLN. Reward cost is 6.80 + 1.45 = 8.25 PLN.
The gap is the whole argument: 24.00 ÷ 8.25 = 2.909, so the menu-price answer overstates the giveaway by 2.9 times, or 15.75 PLN per dessert. Every downstream number inherits that factor — the effective discount rate, the liability on unredeemed rewards, the extra visits the program has to produce. An owner who starts from the menu price is not being conservative; he is calculating a different business.
The menu price keeps creeping back because the guest sees it: the reward feels like a 24.00 PLN gift, and that perception is what the program is buying. Perceived value and incurred cost are two quantities sitting on the same dessert, and only one leaves your bank account.
Four kinds of reward, four different economics
"Loyalty program" is not one thing. Four common shapes differ mostly in when the cost appears and what it leaves behind on your books.
| Reward type | What it costs the restaurant | When the cost appears | What it leaves as an obligation |
|---|---|---|---|
| Percentage discount at the till | Contribution lost on the discounted line: the discount times the item price, not the plate cost | Immediately, on the same check | Nothing — settled when granted |
| Points that accumulate | Reward cost of whatever the points eventually buy | Later, on redemption; possibly never | The full balance of unredeemed points |
| A named free item | Plate cost plus variable service cost of that item | On redemption, in a later period than the earning | Unredeemed vouchers times the reward cost |
| Status or tier (priority booking, a standing perk) | Recurring reward cost on every visit of every member holding the tier | Continuously, growing with the tier population | An open-ended commitment with no expiry |
Read the last column first. A discount is expensive and honest: you pay now and owe nothing. Points and vouchers are cheaper per visit and harder on your accounts, pushing cost into a future period and leaving a debt meanwhile. Status has no expiry, so it never becomes breakage and never stops costing.
Note what the first row does not say. A percentage discount is the one case where the menu price is the right base: you give up revenue you would otherwise have collected, rather than handing over a plate. A one-off discount and the sales it has to add back are at how much extra sales a discount has to bring. This page is about the program: earning, redeeming, expiring, owing.
The cost of one redeemed reward: the formula
Reward cost = Plate cost of the rewarded item + Variable service cost
Plate cost of the rewarded item— the costed sum of every recipe component at yield-adjusted prices for one portion, PLN per portion;Variable service cost— costs that appear only because this portion was served: packaging, disposables, the card-fee share, PLN per portion;- both terms are in PLN, so the sum is in PLN per redeemed reward.
What belongs in variable service cost and what does not
Only what moves with this one portion. The dishwasher runs whether the dessert leaves the pass or not, so its labour is not here; the paper sleeve exists because the dessert exists, so it is. Rent, the chef's salaried hours and the card fee on a bill that would have been paid anyway are not variable. Err in neither direction: an overloaded variable cost inflates the required incremental visits and gets a working program cancelled, an empty one hides a program quietly eating the contribution margin.
Where you choose the reward dish rather than the guest, choose on evidence. Which dishes are cheap to give away is a question of unit contribution and mix, answered on menu engineering.
Redemption and breakage: two shares that must add up to a hundred
Redemption rate — the share of earned rewards actually redeemed inside their validity period.
Breakage — the share of earned rewards that expire unredeemed.
Redemption rate % = Rewards redeemed ÷ Rewards earned in the same cohort × 100
Rewards redeemed— rewards from this cohort a guest actually took, units;Rewards earned in the same cohort— rewards granted inside one earning period and followed to the end of their validity, units;- units divided by units is a dimensionless share; times a hundred, a percentage.
The word cohort is the whole formula. Counting this month's redemptions against this month's earnings is a ratio of two unrelated populations: what is redeemed now was earned months ago. In a growing program that ratio reads low, in a shrinking one high, and neither movement says anything about guests.
Take one earning quarter as the worked cohort. Members made 5,200 visits and the rules grant one reward every fifth visit: 5,200 ÷ 5 = 1,040 rewards earned.
There is no industry norm to compare those shares against, and this page will not invent one. Neither the Polish statistics office nor Eurostat collects anything about restaurant loyalty schemes: the Polish methodological glossary for trade and catering defines exactly five things about catering — establishments, restaurants, bars, catering points and revenue from catering activity — and the only place a discount appears in it is inside the definition of turnover, where sales are stated "at actual selling prices taking into account discounts, rebates and allowances — excluding value added tax (VAT)" (GUS, glossary of terms in the methodological handbook on trade and catering activity, opened 26.08.2026; the quotation is our translation of the Polish original). That is a Polish definition from a Polish publication. Discounts sit inside the revenue figure and are never reported apart from it, so there is no published redemption share, no published breakage share, and nothing to benchmark against except your own earlier cohort.
What moves redemption, and what is arithmetic rather than intelligence
Redemption is not weather. It responds to whether the guest knows the balance exists and whether anyone tells them before it expires. A reminder moves both shares at once — up on redemption, down on breakage — which is why the balance has to sit queryable in the guest record rather than on a card in a wallet, why the reminder needs a channel the guest actually reads, and why sending it on a schedule is a job for automatic messaging.
Say plainly what is happening here, because the word gets stretched: nothing on this page is artificial intelligence. Following a cohort to the end of its validity is a database query, the four formulas are arithmetic, and a reminder fired at a date is a scheduled job. The systems above collect and send; the deciding is division. Whether to build that layer or buy it ready-made is answered generally in custom automation versus ready-made SaaS.
Effective discount rate: what the program costs as a share of member sales
Effective discount rate — the total reward cost of a period expressed as a share of the net sales made to program members in that same period.
Effective discount rate % = Total reward cost in the period ÷ Net sales to members in the period × 100
Total reward cost in the period— redeemed rewards times their reward cost, summed over the period, PLN;Net sales to members in the period— sales on checks linked to a member, net of VAT, over the same period and the same set of guests, PLN;- PLN divided by PLN is dimensionless; multiplied by a hundred it is a percentage.
In the worked quarter the redeemed rewards cost 312 × 8.25 = 2,574.00 PLN, and net sales on member checks were 186,000.00 PLN.
Now the denominator trap, the commonest way this number is made to look harmless.
The house denominator is larger by 415,000 ÷ 186,000 = 2.231 times, and the rate shrinks by exactly that factor. Only members can earn and redeem, so only member sales belong underneath.
With tax or without: name the base before you divide
Both numbers above are net of VAT, and that has to be stated next to the number every time, because the two official Polish bases are not the same base. The glossary quoted above states revenue from catering activity "including VAT", while enterprise turnover in the same document is net of VAT and net of discounts. Mix a with-tax numerator into a without-tax denominator and the rate is wrong by the tax rate alone.
A second check on the same line: reward cost enters the numerator once, on redemption, not on earning.
Earned is a liability, redeemed is a cost.
The only honest test the program can pass
Incremental visit — a visit that would not have happened without the program. It is the only kind of visit a program is entitled to claim.
Everything else on this page is bookkeeping. This is the test. A program that rewards guests who were coming anyway is a discount on existing business — a pure loss of contribution margin, however healthy the member numbers look. No method of separating the two is free of a defect. Pick one knowing what it hides:
| Way of comparing | What you need to have | How this method deceives you |
|---|---|---|
| Members against non-members, same period | A guest identity on enough checks to make both groups real | Selection: people who join are already the frequent ones. The gap flatters the program by however much self-selection is in it |
| Members before joining against the same members after | A visit history that predates each member's join date | Regression to the mean and the joining moment itself: people join right after an unusually frequent stretch |
| One venue with the program against one without | Two comparable venues, no other promotion in either | Nothing else may differ, and something always does — a road closure, a new neighbour, a new manager |
| A randomly withheld group of eligible guests | The willingness to deny the reward to a random slice of members, and a large enough slice | The only clean method and the only one that costs goodwill; small holdouts produce differences you cannot tell from noise |
Recognising a returning guest is a precondition for every row of that table, and it has its own trap — the share of checks you can attach to a known person. That is the subject of returning guests and how to count them.
Why member turnover is not the program's achievement
Member turnover is the number every loyalty vendor puts on the first slide, and it means the least.
Following a cohort to the end of its validity, joining a join-date to a visit history and holding out a random slice all need the visit data queryable rather than printed, which is what a reporting layer is for — and which numbers an owner actually looks at, as opposed to the ones a vendor prints, is worked through in reporting automation.
How many extra visits the program has to produce
Required incremental visits = (Total reward cost + Program fixed cost) ÷ Contribution margin per visit
Total reward cost— redeemed rewards times reward cost over the period, PLN;Program fixed cost— what the program costs whether or not anybody redeems: subscription, printed cards, integration, staff time, PLN per period;Contribution margin per visit— money left from one visit's net sales after that visit's variable costs, PLN per visit;- PLN divided by PLN per visit gives visits: a count, not a length of time.
The middle term is quoted, not invented. Contribution margin is defined on the break-even page and used here exactly as written there: "the money left from net sales after variable costs, available to cover fixed costs and, once they are covered, to become profit" — see the restaurant break-even point for how the per-visit figure is derived and why it drifts without anyone touching a price.
In the worked quarter the program fixed cost adds up to 1,380.00 PLN: 720.00 PLN of subscription over three months, 180.00 PLN of printed cards, 480.00 PLN of staff time. Total reward cost was 2,574.00 PLN.
So the program has to pay for (2,574.00 + 1,380.00) ÷ 11.00 = 3,954.00 ÷ 11.00 = 359.45 visits, and half a visit does not exist, so 360 incremental visits. Backwards: 360 × 11.00 = 3,960.00 PLN covers 3,954.00 PLN, while 359 × 11.00 = 3,949.00 PLN does not.
Why the answer is in visits and not in months
Because a month is not a unit of anything here. Turning 360 visits into "pays back in N months" needs a claim about how often your guests come, and that claim is a guess dressed as a schedule. Two restaurants with identical arithmetic and different visit frequencies would get different payback times out of the same formula, presented as if measured. A restaurant has visits, not a subscription. So the answer stays in visits, where it is checkable against your own book.
The degenerate case: when the formula has no answer
If contribution margin per visit is zero or negative, the division is meaningless and the reading is not "an enormous number of visits" but "no number of visits". A venue losing money on the marginal visit cannot buy its way out with more marginal visits: the problem is upstream, in price, mix or variable cost, and belongs to what the owner actually keeps.
Two more ways the answer gets inflated, both from mistakes named earlier. Costing the giveaway at menu price gives 312 × 24.00 = 7,488.00 PLN and (7,488.00 + 1,380.00) ÷ 11.00 = 806.18 → 807 visits, 2.24 times the honest requirement. Counting all earned rewards instead of redeemed ones gives 906 visits, 2.52 times. Both errors point the same way: they make a working program look unaffordable and get it cancelled for arithmetic reasons rather than commercial ones.
Points already earned are a debt, not a marketing line
Outstanding liability — the reward cost of everything earned and not yet redeemed or expired: money already promised and not yet paid.
Outstanding liability = Rewards earned, unredeemed and unexpired × Reward cost
Rewards earned, unredeemed and unexpired— the standing balance at the close of the period across all live cohorts, units;Reward cost— the per-reward figure from the first formula, PLN per unit;- units times PLN per unit is PLN: a stock at a point in time, not a flow over a period.
At the close of the worked quarter the live balance across all cohorts is 1,460 rewards, so the outstanding liability is 1,460 × 8.25 = 12,045.00 PLN. That is 4.7 times the 2,574.00 PLN the quarter actually spent on redemptions — which is why a program that looks cheap every month can still carry a number nobody has written down.
That 12,045.00 PLN has two honest readings and you need both. Maximum exposure is the whole 12,045.00 PLN, if every holder redeems.
Plan cash on the expectation, size risk on the maximum, and never quietly book the difference as income: breakage is not revenue, and the day you extend validity the whole balance comes back.
This is why the balance cannot live only inside a vendor's dashboard: it is a liability of your business and belongs where guest records live — which system layer holds what is worked through in CRM or ERP. To model what the balance does to cash under different validity rules before changing them, that is what an on-site calculator is for.
When a loyalty program is the wrong tool
Four situations where the arithmetic says no, and saying no is cheaper than running the program badly.
When you cannot recognise the guest. With few checks attached to a known person you cannot measure redemption by cohort, build a holdout, or tell a member visit from any other. The program still produces a dashboard, but not a number you can act on.
When contribution margin per visit is thin. Every incremental visit repays only its own contribution.
When a small group carries the business. Then the instrument is segmentation and targeted attention, not a blanket earn-and-burn scheme that pays the frequent ones for behaviour you already have. Who is worth a reward is the subject of guest segmentation, and what a retained guest is worth in total is at guest lifetime value.
When the thing being fixed is not loyalty. A guest who did not come back because nobody answered the phone or the confirmation never arrived is not disloyal. That is a process gap, cheaper to close than to pay for: see follow-up automation and the restaurant-specific version, restaurant automation. What such a layer costs in general terms is set out in what process automation costs.
Frequently asked questions
How much does a free dish actually cost the restaurant?
Its plate cost plus the variable cost of serving it, and nothing else. In the worked example a dessert priced at 24.00 PLN has a plate cost of 6.80 PLN and a variable service cost of 1.45 PLN, so the reward cost is 8.25 PLN — 2.9 times less than the menu price. The difference is margin never collected and never paid out.
Is member turnover proof that a loyalty program works?
No. In the worked quarter members produced 44.8 % of net sales and 44.1 % of visits, but almost all of that existed before the program did. The only figure a program may claim is the visits it caused, and that needs a comparison group, not a member roster.
What is breakage and why does it flatter the numbers?
Breakage is the share of earned rewards that expire unredeemed — 65.0 % of the cohort in the worked example. It flatters the accounts because unredeemed rewards cost nothing today. It is not free: it is a standing promise, and a guest who earned something and received nothing is not more loyal for it.
How do I separate incremental visits from visits that would have happened anyway?
By comparison, and every comparison has a defect. Members against non-members carries selection; before and after joining carries regression to the mean; two venues are never truly comparable; a withheld group is clean but costs goodwill. Choose one, write down the defect you accept, and keep using it so the series stays comparable.
Should unredeemed points be treated as a liability?
Yes. At the close of the worked quarter the balance is 1,460 rewards at 8.25 PLN: 12,045.00 PLN of maximum exposure and 3,613.50 PLN of expected settlement at the measured 30.0 % redemption rate. Plan cash against the expectation, size risk against the maximum.
When is a loyalty program the wrong tool?
When you cannot recognise the guest well enough to measure anything, when contribution margin per visit is too thin for any plausible uplift, when a small group carries the business and needs targeting instead, or when the actual leak is an unanswered phone. All four are cheaper to fix directly.
What happens to the liability when points are never redeemed?
It converts to breakage at expiry and the obligation ends there. What it does not do is become income: nothing was sold and nothing was earned, a promise simply lapsed. Keep it out of the revenue line, and remember that extending validity or changing the rules revives the whole balance at once.
Take one earning cohort from three months ago and follow it to the end of its validity. Count what was redeemed, what expired and what is still open, multiply the redeemed count by plate cost plus variable service cost rather than by the menu price, and divide the total by your contribution margin per visit. The incremental visits that come out are the program's actual price, measured on your own guests. To assemble that arithmetic on your own data, start from the restaurant section and the guest record that has to hold the balance.