Loyalty programs sound simple until you actually try to track them in a spreadsheet. Every purchase should add points, every redemption should subtract them, and the balance has to stay correct no matter how many rows pile up. Most spreadsheets end up with a "Points" column that someone manually edits after every transaction — until one day the math stops adding up and nobody can tell why.
In this tutorial, we'll build a Loyalty Points Wallet — a system where each customer has a Points Balance that updates itself the moment a purchase or redemption happens. No manual edits, no recalculating the whole sheet, no drift between what's recorded and what's real.
Start with a table to hold your customers. Add the basic fields: Name, Email, and Phone.
Customer table with Name, Email, and Phone columns, ready for loyalty tracking
Add a few customers to work with:
Customer table showing three records for Sarah Chen, Marcus Lee, and Priya Patel
We'll come back to add their points balance once we have real transactions to calculate it from.
Create a new table called Purchase. Add a One-to-Many field linking each purchase back to a Customer, plus an Amount field using the Currency data type (USD), and a Date field.
Purchase table with Customer link, Amount in USD, and Date columns
Add a few sample purchases so there's real data to calculate against:
Purchase table listing four purchase records linked to Sarah Chen, Marcus Lee, and Priya Patel with their respective amounts and dates
Create another table called Redeem, also linked to Customer via a One-to-Many field. Add a Credit field (Number) representing how many points were redeemed, and a Date field.
Redeem table with Customer link, Credit, and Date columns
Add a sample redemption:
Redeem table showing a single redemption record for Sarah Chen redeeming 5 points
Now go back to the Customer table. Add a new column and set its data type to Custom Logic — this needs to be chosen from the start, since a plain column can't be converted into one later.
Adding a new column on the Customer table and selecting Custom Logic as the data type
Describe the rule in plain language: for each customer, take the sum of all their Purchase amounts divided by 10, then subtract the sum of all their Redeem credits, to get the Points Balance.
Describing the points balance logic as purchase amount divided by 10 minus total redeemed credit
Confirm the clarification screen once the system shows its interpretation.
Clarification screen confirming the aggregation logic across Purchase and Redeem tables to compute Points Balance
Click Save.
Customer table showing the Points Balance column filled in automatically for Sarah Chen, Marcus Lee, and Priya Patel
Let's test it. Add a new purchase for Marcus Lee — $50.00 on 2026-08-20.
Adding a new purchase record for Marcus Lee for fifty dollars on 20 August 2026
Go back to the Customer table. Marcus Lee's Points Balance has already jumped from 4.5 to 9.5 — no refresh, no manual recalculation.
Customer table showing Marcus Lee's Points Balance updated instantly after the new purchase was added
Now add a redemption for Priya Patel — 10 points on 2026-08-20.
Adding a new redemption record for Priya Patel redeeming ten points on 20 August 2026
Her Points Balance drops from 20 to 10 immediately, reflecting the redemption without any extra step.
Customer table showing Priya Patel's Points Balance reduced after the redemption was recorded
Here's what this setup accomplished compared to tracking loyalty points manually:
What you built along the way:
This same pattern — a running total derived from linked activity — works for far more than loyalty points. Store credit, subscription usage, warranty claims, or any "balance that changes over time" can be built the exact same way.
Try the Live Preview
On this page
Related articles
Explore more product articles and best practices for teams building with Ambisius.
Still Using Spreadsheets?
You Should Try This.
Turn familiar spreadsheets into a structured system built for your business
No commitment. No credit card required.

© 2026 Ambisius. All rights reserved.