Skip to content

How loyalty works

(Earning is live. Redeeming is designed but not built yet — this page says which is which, honestly.)

Earning — works today

Attach a customer to the sale (the Customer button, or automatically on wholesale) and every completed sale earns them points. The till's customer chip shows their running total (★ next to their name), and so does customer lookup.

  • Points are per item: each product has a Loyalty pts/$ rate in inventory maintenance, and items can be excluded entirely (bags of beans might earn nothing; drinks earn full rate). Modifiers carry their own rate — normally zero.
  • Points are computed on the discounted line price: a discounted latte earns points on what was actually paid.
  • Voiding a sale reverses its points — the void screen lists "loyalty points reversed" along with every payment it undid.
  • The customer's phone number is their loyalty key — it's how the counter finds them ("what's your phone number?"), so the new-customer dialog asks for it up front.

Like account balances and stock levels, a points total is the sum of a ledger, never a typed number — every earn and reversal is its own audit row.

Not built yet (designed, coming)

  • Redeeming — spending points at the till. The ledger already has a place for redemptions; there's no redeem button yet.
  • Birthday reward — the customer record stores a birthday; nothing acts on it yet.
  • Named plans / tiers (e.g. "Bean Heads") and the loyalty settings screen — the Loyalty program settings permission is reserved and waiting.
  • NFC tap — identifying the customer by tapping a sticker or card instead of asking for a phone number.

Until redemption lands, points quietly accumulate — nothing is lost by ringing sales with customers attached now.