All guides

Discounts & loyalty

Build codes, happy-hour windows and automatic promotions, and run a points programme customers can redeem at the till.

10 min readOwnerManager

Create a discount

Dashboard → Discounts

  1. Open Dashboard → Discounts and click New discount.

  2. Enter a Code such as WELCOME10.

    Codes are stored in upper case, so welcome10 and WELCOME10 are the same code.

  3. Choose the Type: Percentage (%) or Fixed amount.

  4. Enter the Value.

    10 as a percentage takes 10% off; 200 as a fixed amount takes 200 off, and never more than the basket is worth.

  5. Set the conditions you need — see below.

  6. Leave Active on and click Create.

The conditions you can attach

Starts at / Ends at
Calendar window. Outside it the code is refused. The end date must be after the start date.
Days of week
Restrict to particular days — Tuesdays only, or weekends. Leave empty for every day.
Start time / End time
Happy-hour window in 24-hour time, evaluated in Nairobi time. Both must be set together. A window that crosses midnight, such as 22:00 to 02:00, works as expected.
Min subtotal
The basket must reach this amount before the discount applies.
Usage limit
How many times the code may be used in total. Once it is exhausted the code stops working; leave blank for unlimited.
Applies to (category)
Scope it to one category — drinks only, for instance. The discount is worked out on that category's share of the basket.
Branch scope
Limit the discount to one branch, or leave it open to the whole organization.
Auto-apply
On: no code needed, it applies itself whenever it qualifies. Off: the cashier must type the code.

How a discount is chosen

How the system decides which discount appliesyesnonoyesCheckout startsCode typed?Look that code upStored upper caseGather activeauto-apply rules forthis branchPasses dates, days,time window, minimumsubtotal, usage limit,category?Refused with the reason"not valid now"Best qualifying rulewinsWorth the most to thecustomerAmount recomputed onthe serverPercentage of, or cappedat, the eligible subtotalDiscount applied

A typed code must pass every condition or it is refused with a reason. With no code, qualifying auto-apply rules compete and the customer gets the best one — never two.

Read this diagram as text
  • Checkout starts Code typed?
  • Code typed? Look that code up (yes)
  • Code typed? Gather active auto-apply rules for this branch (no)
  • Look that code up Passes dates, days, time window, minimum subtotal, usage limit, category?
  • Gather active auto-apply rules for this branch Best qualifying rule wins
  • Passes dates, days, time window, minimum subtotal, usage limit, category? Refused with the reason (no)
  • Passes dates, days, time window, minimum subtotal, usage limit, category? Best qualifying rule wins (yes)
  • Best qualifying rule wins Amount recomputed on the server
  • Amount recomputed on the server Discount applied

One discount per order

Discounts do not stack. If several auto-apply promotions qualify, the customer gets the largest, and only that one. A code that fails its conditions is rejected with a message — it is never silently ignored.

Discount amounts are decided by the server

The till sends the code, not the money. The discount is recomputed from the stored rule at checkout, so an old value cached on a terminal cannot be used to take more off.

Recipes for common promotions

You wantSet it up as
Happy hour on drinks, 17:00–19:00 weekdaysPercentage, auto-apply on, days Mon–Fri, start 17:00, end 19:00, applies to the Drinks category
Launch code for the first 100 customersPercentage or fixed, code shared publicly, usage limit 100
Spend 2,000 get 200 offFixed amount 200, min subtotal 2000, auto-apply on
One branch clearing stock this weekendPercentage, branch scope set to that branch, starts and ends over the weekend

Turn on loyalty

Dashboard → Settings → Customer loyalty

  1. Open Dashboard → Settings and find Customer loyalty.

  2. Switch Enable loyalty points on.

  3. Set KES per point.

    100 means a customer earns one point for every KES 100 they pay. A smaller number is a more generous programme.

  4. Save changes.

Earning and spending pointsnoyesyesnopaidnot paidyesSale at the tillPhone number captured?Balance shown at thetillRedeem points field appearsWalk-in: no pointseither wayRedeeming now?Capped by balance,programme minimum andthe billDeducted in the sametransaction as the saleOrder settles as paidPoints earnedTotal paid ÷ KES per point,rounded downNo pointsHeld or unpaid orders earnnothingRefunded later?Earned points takenback

Points only exist against an identified customer. The phone number captured at the till is what links the sale to the balance.

Read this diagram as text
  • Sale at the till Phone number captured?
  • Phone number captured? Walk-in: no points either way (no)
  • Phone number captured? Balance shown at the till (yes)
  • Balance shown at the till Redeeming now?
  • Redeeming now? Capped by balance, programme minimum and the bill (yes)
  • Redeeming now? Order settles as paid (no)
  • Capped by balance, programme minimum and the bill Order settles as paid
  • Order settles as paid Points earned (paid)
  • Order settles as paid No points (not paid)
  • Points earned Refunded later?
  • Refunded later? Earned points taken back (yes)

Points are earned on settled sales only

Points are awarded when an order is actually paid and is tied to an identified customer. Held orders, unpaid orders and walk-ins with no phone number earn nothing, and points earned on a sale are taken back if it is refunded.

Redeeming points at the till

  1. Capture the customer's phone number on the order.

    This is what matches them to their record and their balance.

  2. The Redeem points field appears with their balance beside it.

    It only shows when a matched customer actually has points to spend.

  3. Enter how many points to spend.

    The credit shows on the summary as Applied N pts, and the total comes down accordingly.

  4. Place the order as usual.

The limits, applied automatically

  • Never more points than the customer actually holds.
  • Never more than the bill is worth — a redemption cannot make a total negative.
  • Never below the programme's minimum redemption, if one is set.
  • Points are deducted as part of the same transaction that records the sale, so two tills cannot spend the same balance twice.