L
LoyaltyDocs

Redemption Flow

Lock points with redeem, secure with a one-time code, commit with confirm-transaction — from the till or from the app

Spending points has one extra safeguard that earning does not: the moment a redemption starts, its points go on hold — so the same balance can never be promised to two purchases at once.

Beat 1 — Request and Hold

The till starts the redemption with its own redemption number (request redemption). The platform checks everything in one pass — the balance, your ceilings, your daily guards, any reward quota — then places the points on hold.

What a redemption can express

Example

A discount against the bill

200 points off the total

A specific reward

A named voucher — its per-customer quota applies automatically

Part-payment

Points cover what they can; the rest is paid normally

Where it happened

The till, the website, the app — recorded with the redemption; when centres are separated, the centre whose points are being spent

  • Asking for more than the customer can spend fails on the spot — before any code is sent — with the reason stated.
  • Sending the same redemption again (a crash, a retry) returns the original answer — no duplicate hold, no second code.
  • Several redemptions can run at once as long as together they fit the balance.
  • With centres separated, only points earned at the named centre — plus points that carry no centre — can be spent there.

Beat 2 — The Customer Approves (when the code is on)

With the one-time code enabled, the customer receives it — on WhatsApp or by SMS — and the till validates it (validate the code). The full story is on the OTP Validation page.

Beat 3 — Confirm

The till confirms (confirm) and the points are deducted — oldest points first. If two confirmations race, exactly one wins; the other is safely ignored. The receipt-style WhatsApp message goes out automatically if Message the member is on, or when the till triggers it.

Redeeming From the App

Patient Profile → Redeem points runs the same three beats as a dialog: the wallet shows what is usable, Lock points reserves the amount (with the centre when points are centre-specific, and optionally the bill value, channel and reason under Advanced), the code step appears if your tenant asks for one, and Confirm redemption completes it — or Release points cancels and frees the hold. A countdown shows how long the lock has left. Closing the dialog with points still locked asks whether to keep the lock or release them.

What You Configure — Settings → Redemption and Settings → OTP

Setting

Your options

Default

Loyalty is switched on

The master switch — off stops earning, redeeming, reversals and uploads

Off

Ask for a one-time code

On — every redemption needs the customer's code / off — redemptions confirm directly

Off

Hold points for

Minutes the hold and the whole approval-and-confirm dance may take

10

Maximum points per redemption

The most points spendable in one redemption, for any customer

None

Ceilings by tier

A different per-redemption maximum for each tier

None

Daily guards

Per customer per calendar day: points per redemption, redemptions per day, points per day — each independent (see Fraud & Usage Limits)

None

Per-reward quotas

How many times one customer may ever redeem a specific reward (see Fraud & Usage Limits)

Unlimited

Message the member

Whether confirming also sends the customer's WhatsApp message

Off

Changes take effect on the next redemption.

When Things Do Not Finish

Situation

What happens

Customer walks away

The hold expires on its own with the window — nothing to clean up

Sale is cancelled

The till releases the redemption; points free instantly (see Pending Redemptions & Release)

The code could not be sent

The hold is released at once and the till starts again

Something fails mid-way

Nothing was deducted; start the redemption again

For developers

Request and response formats for every step are in the interactive API reference — follow the inline links. The redeem response carries a `confirm_with` block to copy into the confirm call and a `lock_expires_at` deadline.

Was this page helpful?

Last updated on

On this page