Loyalty & CRM
Guest profiles and loyalty points
Attach a guest to an order at the till and their profile, lifetime spend and points balance update from that order. There is no separate loyalty app to keep in sync.
Anjali G.
98•• ••• 412 · Thamel
- Visits
- 23
- Lifetime spend
- Rs 48,760
- Points balance
- 1,240worth Rs 124
Points ledger
append-only
- EARN27 SepORD-0141 · on Rs 1,860 settled+186
- REDEEM_REVERSAL19 SepORD-0133 · 25% refunded → share returned+100
- REDEEM18 SepORD-0133 · Rs 40 off the bill−400
- EARN18 SepORD-0133 · on Rs 2,140 settled+214
- ADJUSTMENT02 SepManager · Goodwill: cold momo+50
How guests earn points
Points are earned when an order is completed, at the rate you set, on the amount the guest paid in money. Points used to pay part of a bill do not earn more points.
- 1Attach the guest to the order at the till and each visit is added to their profile.
- 2Earn rate, point value and minimum redemption are set per restaurant.
- 3Points are whole numbers, and their cash value is calculated exactly, without rounding drift.
ORD-0158 · completed
Illustrative dataThe Rs 400 settled with points is left out of the earn base; otherwise a balance could regenerate itself: redeem, earn a slice back, repeat.
Refunds and cancellations reverse points
Cancel an order and the points used on it go back to the guest. Refund part of it and the guest gets that share of points back at the same moment as the money, so points are never returned for a refund that failed.
Points earned on the order are taken back by the same rule. Several partial refunds never return more than was redeemed.
400 points redeemed · refunded in quarters
Illustrative data- Refund 1 of 4 · 25% of the bill+100 → 100
- Refund 2 of 4 · 25% of the bill+100 → 200
- Refund 3 of 4 · 25% of the bill+100 → 300
- Refund 4 of 4 · 25% of the bill+100 → 400
Returned
400
Never more than
redeemed
Two staff redeeming the same balance
If two staff try to redeem the same guest’s points at the same time, one succeeds and the other is refused. The balance never goes negative. This behaviour is covered by tests that run against a real database.
Balance 500 pts · 21:03:17
Counter
Redeem 500 → applied
Waiter tablet
Redeem 500 → refused: insufficient points
The account row is locked while the check and the deduction happen, so they can’t be split by another terminal. A retried request with the same key replays. It doesn’t burn twice.
Choose how redeemed points are taxed
A redeemed point can be treated as a discount or as a payment, and the tax on the bill differs between the two. DataRestro asks you to pick one and shows the difference first.
= 400 points at 0.10 per point (the shipped default)
Default. The guest is taxed on what they actually pay. Most common reading. Set per restaurant, ideally before you trade, or at a period boundary.
Bill · worked example
DISCOUNT
- Goods
- 100.00
- Taxable base
- 60.00
- Tax at 10%
- 6.00
- Guest pays
- 66.00
- Revenue recognised
- 60.00
- Appears on the order as
- loyaltyDiscountAmount
Tax · discount
6.00
Tax · tender
10.00
The figures above are examples. Neither treatment is universally correct. Confirm with your accountant before you take real money. Redemptions are reported on their own line, separate from manual discounts, because one is revenue given away and the other is a liability being settled.
How it connects
Where loyalty data comes from
Guest records are updated from orders, and points change in the same step as the payment or refund they belong to.
Feeds in
Loyalty & CRM
Customer records, lifetime spend, points earn, redemption and reversal, tenant-scoped and audited.
Feeds out
- The billRedemption as discount or tender
- PaymentsTender mode writes a LOYALTY payment
- AnalyticsLoyalty discounts on their own line
- CampaignsPlannedSMS and email to segments
Loyalty and CRM features
- Available
- Available
- Partial
- Partial
- Planned
- Planned
Guest profiles
AvailableName, phone, order history and lifetime spend from one aggregate query.
Points earn
AvailableOn completion, on real money settled, at a per-restaurant rate.
Redemption
AvailableRejected, not silently capped, if it exceeds what’s eligible.
Tax mode
AvailableDISCOUNT (default) or TENDER, per restaurant, recorded in the audit log.
Reversal
AvailableOn cancel, full refund and partial refund; proportional and capped.
Concurrency & retries
AvailableRow-locked balance; idempotent redeem; never negative.
CRM segments & consent
PartialGuest records exist; segments and marketing consent do not yet.
Tiers & expiry
PlannedEvery guest earns at one rate; points don’t expire. Expiry is a liability question first.
Campaigns & promotions
PlannedRule-based promos and SMS/email. Manual discounts only today.
Gift cards
PlannedStored value on the payment ledger.
Group-wide balances
PlannedOne points balance shared across separately registered restaurants.
Loyalty questions
Which tax mode should I pick?
Do points work across my branches?
Do points expire?
Can I run SMS or email campaigns?
Try the demo
A sample restaurant in your browser. Take an order, send it to the kitchen, mark it ready and take payment. No account needed.