
QR code loyalty programs for agencies: multi-client stamp cards, points, and redemption tracking
How agencies build QR code loyalty programmes across many clients at once: stamp cards, points and tiers, fraud-proof redemption, multi-tenant data isolation, GDPR, and pricing it into the retainer.
ScanKit · Organization
· 16 min read
QR code loyalty programs for agencies: multi-client stamp cards, points, and redemption tracking
A café wants a digital stamp card. A salon wants a punch card that tracks repeat bookings. A retail client wants a points programme tied to spend. Ask any agency running QR campaigns for hospitality and retail clients, and a loyalty programme is usually the first thing a client asks for once they've seen what dynamic QR codes can already do for their signage and print.
The problem is that almost everything written about "QR code loyalty programmes" is aimed at the business running its own single card, not the agency building and managing this for ten, twenty, or fifty clients at once. That's a different problem. It needs data that never crosses between clients, reporting that rolls up for you without leaking into anyone else's dashboard, and a redemption model that survives someone screenshotting their stamp card and handing the photo to a friend.
This is a practical guide to building that: how QR loyalty actually works under the hood, the three programme structures worth offering, what stops the fraud that paper cards were already vulnerable to, and the multi-tenant architecture question you need to answer before you onboard client number two.
How a QR loyalty card actually works
A printed punch card is its own database. The ink pattern on the card is the entire record of how many coffees someone has bought, and if the card is lost, that history is gone. A QR loyalty card inverts this. The code itself carries almost nothing: it resolves to a unique customer identifier, and every stamp, point, or tier sits in a server-side ledger the business (or the agency, on the business's behalf) controls.
That single architectural difference is what makes everything else in this guide possible. Because the balance lives on a server, not on a card, you can correct a mistaken redemption, audit exactly when and where every stamp was earned, merge a customer's history across locations, and recover a "lost" card instantly by looking the customer up. None of that exists for a hole-punched paper card.
Two ways to implement the code itself:
- A static per-customer QR code, issued once (printed on a physical card, or saved to a phone), that the till scans on every visit. Simple to build, but the code itself becomes something to protect, since a photo of it is functionally identical to the original.
- A regenerating code inside a wallet pass or app, refreshed on a short interval so a screenshot goes stale within a minute. More setup work, considerably harder to abuse.
For most agency clients, a static per-customer code tied to a login-gated redemption step (see the fraud section below) is the pragmatic middle ground: cheap to run across many clients, and the login requirement removes most of the risk a bare static code would otherwise carry.
Apple Wallet and Google Wallet: what a loyalty pass can actually do
If a client wants "the stamp card is in my phone's wallet, not a separate app," that's a loyalty pass on Apple Wallet or Google Wallet, and both platforms support genuinely useful mechanics beyond just holding an image.
Apple Wallet passes support up to ten relevant locations (GPS coordinates or iBeacon identifiers) per pass. When the customer is near one, the pass surfaces on the lock screen automatically, no notification permission needed. For a client with more than ten locations, the common approach is updating the pass's location list dynamically to the ten nearest, rather than trying to cram every branch in.
Google Wallet loyalty objects support partial updates through their API: pushing a change to just the points balance or reward tier triggers a system-generated "Change Message" on the customer's phone, without you rebuilding or reprinting anything. Google caps this at three notifications per pass in a 24-hour window, and API calls are rate-limited, so a points update after every single small transaction isn't the right cadence; batching to meaningful milestones (tier change, reward earned, card about to expire) is.
This matters for agencies specifically because both platforms let you push a change to every customer's pass simultaneously when a client updates the programme, a new reward tier, a changed redemption threshold, without printing anything or asking customers to reinstall anything. That's the actual pitch to a client comparing this against a plastic card reprint.
The three programme structures, and which clients they fit
Not every client needs the same mechanic, and picking the wrong one is the most common reason a loyalty programme underperforms. There are three structures worth offering, and each maps cleanly onto a different kind of client business.
Punch or stamp cards ("buy nine, get the tenth free") suit high-frequency, low-ticket, habitual purchases: cafés, quick-service food, sandwich shops, car washes. The mechanic is trivially easy for a customer to understand and for staff to administer at the till, which matters when the person scanning the code is a barista during a morning rush, not someone reading instructions.
Points-based programmes (earn a fixed rate per pound or euro spent) suit businesses with variable basket sizes and a broader product range: retail, salons, multi-service hospitality. Points let a business reward big spenders proportionally instead of treating a £4 purchase the same as a £40 one, which a stamp card can't do.
Tiered programmes (cumulative spend unlocks a status level with escalating perks) suit higher-ticket, lower-frequency businesses: boutiques, spas, premium salons, anywhere a client visits a handful of times a year rather than weekly. Tiers reward loyalty over a longer horizon and give a business a reason to email or message a customer who hasn't been to redeem a reward yet, something neither punch cards nor simple points do well.
Ask which of these three shapes fits the client's actual purchase pattern before defaulting to whichever one is easiest for you to set up. A points system bolted onto a café that really needed a ten-stamp punch card will feel over-engineered to both the owner and their customers.
Where QR loyalty fraud actually happens, and what stops it
Paper punch cards were never fraud-proof either, a friend could always borrow someone's nearly-full card, but a digital system that reuses the same static code for every visit introduces a specific new failure mode, one that's a close cousin of the redemption fraud already documented for single-use QR code coupons: the code can be photographed and the photo reused indefinitely, or shared with someone who never set foot in the shop.
The countermeasures that show up consistently across loyalty platforms, in roughly ascending order of effort:
- Server-side single-use enforcement. The moment a code is redeemed, mark it redeemed in the ledger immediately, and reject any second scan of the same redemption regardless of whether the image is a perfect copy. This is the baseline every implementation needs, and it stops the simplest replay attack (someone scanning a photo of an already-used stamp) for free.
- Account-bound redemption. Require the customer to be logged into the account the code belongs to before a stamp or point posts. This turns "I have a photo of your QR code" into "I also need your phone unlocked and logged in," which is a meaningfully higher bar.
- Velocity and geolocation checks. Cap how many redemptions an account can earn per day, and flag redemptions that happen at implausible locations or in implausible succession (two stamps at two towns ten minutes apart). This catches abuse patterns rather than individual bad codes.
- Rotating, time-limited codes. The most robust option: the code displayed in the wallet pass or app regenerates every 30 to 60 seconds, so a screenshot is worthless within a minute of being taken. This is the most engineering-intensive option and usually only worth it for a client with a genuine, ongoing abuse problem, not a default for every account.
Most agency clients need only the first two. Reserve rotating codes for the rare client whose margins make even occasional redemption fraud a real cost, rather than building it for everyone by default.
The part that's actually hard: running this for many clients at once
A single-business loyalty programme is a solved problem; dozens of vendors sell exactly that. What's genuinely difficult, and what almost nothing written about QR loyalty programmes addresses, is doing it for many clients simultaneously without their data, branding, or reporting bleeding into each other.
Three things have to be true from day one, because retrofitting them after client number five signs up is far more painful than building them in from client number one:
Data isolation has to be enforced at the data layer, not just hidden in the interface. A client's staff logging into their own dashboard should be structurally incapable of querying another client's customer list, even by guessing a URL or an ID, not merely prevented from seeing a menu option for it. If you're using a single shared database across clients, this means row-level access control tied to account identity, not application-layer filtering that a bug could bypass.
Branding and pass design have to be per-client, not templated with a client's logo pasted on. A wallet pass or landing page that visibly comes from the same generic template as every other client's programme undermines the point of a loyalty card, which is to feel like it belongs to that business. If you already keep one workspace per client for QR campaigns, extend that same separation to the loyalty layer rather than treating it as a bolt-on feature living outside the client structure.
Aggregated reporting for your own agency dashboard has to be a separate rollup, never a shortcut through individual client views. You want to see total redemptions or active members across your whole book of business without that aggregation view becoming a backdoor through which one client's data is visible from another's session. Build the agency-level summary as its own layer that reads from isolated per-client data, not as a permission you grant yourself inside a single client's account.
Get these three right, and the multi-client version of a loyalty programme is genuinely no harder to operate day-to-day than one you'd run for a single business. Get them wrong, and you're one support ticket away from a client asking, quite reasonably, why they can see another business's customer list.
GDPR, and why loyalty data is more sensitive than a one-off scan
A one-off scan of a print ad, tracked by ScanKit or any dynamic QR platform, typically produces anonymous or pseudonymous analytics: a timestamp, a rough location, a device type. A loyalty programme is a different category of data entirely, because it links a name, contact details, and an ongoing purchase history to an identifiable person, and that combination is behavioural profiling under GDPR (or the AVG in the Netherlands, DSGVO in Germany), not just an analytics event.
That raises the bar in three concrete ways. First, you need a genuine lawful basis, in practice almost always consent, for using the purchase history for marketing rather than just running the programme itself. Second, the customer's right to withdraw that consent has to actually work: an "unenrol and delete my history" action the ledger supports, not a support email that quietly does nothing. Third, retention has to be deliberate: define how long a dormant loyalty account's purchase history is kept before it's deleted, rather than accumulating everything indefinitely because deleting it was never built.
None of this is a reason to avoid loyalty programmes, agencies run them compliantly every day, but it is a reason to build consent and deletion into the ledger from the start rather than treating them as a request you'll handle manually if it ever comes up. GDPR fines scale to 4% of global annual turnover or €20 million, whichever is higher, for the most serious breaches, which is a strong incentive to get the boring parts (consent records, deletion flows, retention limits) right before the exciting parts (points, tiers, wallet passes).
Pricing the programme into what you already charge
Loyalty is naturally an add-on to a client relationship that likely already includes QR code campaign management, not a separate product you build from nothing. If you already charge clients for QR code campaigns, a loyalty programme fits the same retainer logic: it's ongoing infrastructure the client depends on, not a one-off project fee.
Off-the-shelf loyalty SaaS tools cluster into roughly three pricing bands: basic stamp-card-only tools with limited members and branding sit around the lower end per month; a fuller tier with wallet passes, points, push updates and analytics costs meaningfully more; and premium or unlimited-member tiers cost more again. Where a client sits in that range should shape what you charge them on top for management, not be absorbed silently into your existing retainer.
The short version
A QR loyalty card works because the balance lives on a server, not on the card, which is what makes correction, auditing, and multi-location merging possible in the first place. Pick punch cards for high-frequency low-ticket businesses, points for variable-basket retail and salons, and tiers for higher-ticket, lower-frequency spend. Stop the fraud that matters with server-side single-use enforcement and account-bound redemption before reaching for rotating codes. And treat multi-client data isolation, per-client branding, and a separate aggregated reporting layer as requirements from client number one, not fixes you'll make after client number five asks an uncomfortable question. Get the boring infrastructure right, and a loyalty programme becomes another dependable line in the retainer, not a support liability waiting to happen.
Frequently asked questions
Do QR code loyalty cards need a separate app?
No. The two most common implementations, a static per-customer QR code and an Apple Wallet or Google Wallet loyalty pass, both work without the customer installing a dedicated app. A wallet pass in particular can push points and tier updates directly to the customer's phone through the platform's own API, with no reinstall required.
Can one QR code work across multiple loyalty programmes?
Not in the way that's actually useful. A QR code resolves to a single customer identifier tied to one business's ledger. What can be shared is the underlying platform an agency uses to run all of its clients' programmes, but each client's programme and customer data should remain a separate, isolated record, not a single shared code.
How do you stop someone reusing a screenshot of their QR loyalty card?
Server-side single-use enforcement, marking a code redeemed the instant it's scanned, stops simple replay for free. Requiring the customer to be logged into their account before a stamp posts raises the bar further, since a screenshot alone no longer works without also having access to the logged-in account. Rotating, time-limited codes are the strongest option but are usually only worth the engineering effort for clients with a genuine, ongoing abuse problem.
What's the difference between a punch card, a points programme, and a tiered programme?
A punch card rewards a fixed number of visits regardless of spend, and suits high-frequency, low-ticket purchases like cafés. A points programme rewards spend proportionally, suiting retail and salons with varying basket sizes. A tiered programme rewards cumulative spend over a longer period with escalating status and perks, suiting higher-ticket, lower-frequency businesses like boutiques and spas.
Is running a loyalty programme for multiple clients different from running one for a single business?
Technically, yes, significantly. A single-business programme just needs a working ledger and a redemption flow. A multi-client version needs data isolation enforced at the database level (not just hidden in the interface), per-client branding rather than a shared template, and a separate aggregated reporting layer for the agency that never becomes a backdoor into any individual client's data.
Does GDPR treat loyalty programme data differently from a normal QR code scan?
Yes. A one-off scan typically produces anonymous or pseudonymous analytics. A loyalty programme links a name and contact details to an ongoing purchase history, which counts as behavioural profiling under GDPR. That means a genuine lawful basis (usually consent) for marketing use, a working consent-withdrawal and deletion flow, and a defined retention period for dormant accounts, rather than keeping everything indefinitely by default.
Can Apple Wallet or Google Wallet passes send location-based reminders?
Yes. Apple Wallet passes support up to ten relevant locations that trigger a lock-screen notification automatically when the customer is nearby, no separate notification permission needed. Google Wallet supports similar nearby notifications alongside its points and tier update mechanics. For clients with more than ten locations, updating the pass's location list dynamically to the nearest ten is the practical approach.
How should a loyalty programme be priced into what an agency already charges a client?
As an extension of the existing QR campaign retainer rather than a one-off project. Loyalty is ongoing infrastructure the client depends on, so where the underlying platform costs sit (basic stamp-card tools cost less than full wallet-pass-and-analytics tiers) should shape the management fee charged on top, rather than being quietly absorbed into a flat rate that doesn't reflect the added complexity.
Keep reading

· 16 min read
QR code feedback surveys: how to turn every touchpoint into a response (and actually act on it)
How to run QR code feedback surveys that agencies can defend: the right survey type for the moment, how many questions actually get answered, and how to route responses without breaking Google's review policy or the FTC's rules.
Read more
· 14 min read
QR codes for Instagram and TikTok followers: why the platform's own code can't be tracked
Instagram and TikTok both hand you a ready-made profile QR code, but neither one reports a single scan back to you. Here's why that breaks a print or event campaign, and how to build a follow code that logs scans, supports A/B tests, and can be redirected after printing.
Read more