# Design a loyalty points system: system design interview question

> Keep point balances correct across concurrent redemptions, repeated requests, purchase cancellations, and expiry.

Source: https://sysround.com/questions/design-loyalty-points-system
Updated: 2026-11-05


Difficulty: hard. Levels: Senior, Staff+.

## How the interviewer opens it

"Design a loyalty rewards service for a retailer. Customers earn and redeem points, and unused points expire. The service must maintain an auditable balance despite repeated requests, purchase cancellations, and concurrent redemptions."

## What to clarify first

- Point rules
- Scale and traffic mix
- Latency
- Consistency and durability
- Expiry and point allocation
- Purchase cancellations
- Repeated requests and event order
- Audit history
- Cancellation scope
- Region scope

## Scope of a strong answer

Core requirements:

- Credit points for a purchase
- Redeem points without excess spend
- Expire unused points at the required time
- Reverse canceled purchases and preserve an audit history

Usually out of scope:

- Payment collection and refund execution
- Reward rates, tiers, and promotions
- Transfers between customer accounts
- Redemption refunds
- Concurrent writes across regions

## What interviewers probe

### Concurrent redemptions and repeated requests

Concurrent requests compete for one balance. A lost response must not cause another spend, even after the account receives more points.

### Point expiry

Each earn has a separate expiry. A delayed task must not permit a spend of expired points or remove points twice.

### Purchase cancellations

A cancellation can arrive before its earn or after the customer spends the points. Expiry changes the amount that the service must reverse.

### Balance history and recovery

The balance and audit history must describe the same changes. Old debt must remain explainable after many years.

## Common mistakes

- The service trusts a cached balance to approve a redemption.
- The design keeps only a balance and discards each earn's history.
- The expiry task subtracts the original earn amount after the customer spends some points.
- The service records a request key separately from the point change.
- The service treats each event delivery as a new earn or reversal.
- The service deletes older history without preserving a valid basis for account rebuilds.

## The bar by level

- **Senior:** Defines point lots, exact expiry, durable request outcomes, and purchase reversals. Handles rejected retries, event order, debt, and failures after commit.
- **Staff+:** Meets the senior requirements. States invariants across balances, lots, debt, and history. Proves that retention permits complete account rebuilds. Defines reconciliation and safe recovery. Explains regional ownership and contention within one account.

Practice this question with an AI interviewer: https://sysround.com/practice/new?problem=loyalty-rewards


---
SysRound (https://sysround.com) is an AI practice tool for system design interviews. It has a voice or typed AI interviewer and a shared whiteboard. At the end, you get feedback on each skill and a model answer. The AI feedback can be wrong.
