Cash-handling fraud
An employee could take money without recording it, extend subscriptions "for free" to friends, or let people in without paying. Nothing was left behind.
A restaurant inside a pool venue sells access subscriptions: around 100–200 a month, in a season of just 3–4 months. Before, everything was on paper and from memory, with no trace of who did what. We built a custom web app that ties every payment and every entry to an individual account, verifies live from the database, and leaves a log no one can erase.
Subscriptions were sold in cash, on the spot, and kept from memory or on paper. With cash and physical access to the pool, the real risk wasn't the client, it was the absence of any trace: no one could say who took the money, who extended a subscription, or who let someone in.
An employee could take money without recording it, extend subscriptions "for free" to friends, or let people in without paying. Nothing was left behind.
A client would enter, then hand their code to a friend who entered too. The owner can't ask for ID at a pool, so the control had to be technical.
No change, no entry, no payment left a trace. Any dispute came down to "your word against mine".
A single link, nothing to install, works on any phone or tablet. Staff scan the client's QR code, and the app verifies live, straight from the database, whether the subscription is valid and how many entries remain. Every sensitive action is tied to the account of the employee who performed it.
We didn't start from "let's make a QR", but from the concrete business problems of a place that sells access in cash, seasonally, with staff that changes.
The heart of the app. With cash and physical access, the #1 risk is the employee taking money without recording it or extending subscriptions for friends. The solution: every sensitive action is tied to their account and written to an append-only log, with the before and after value. Only the manager changes validity or prices.
A client enters, then hands their code to a friend. The solution: one QR means one entry per day. A second scan warns; staff can force the entry, but the override is recorded and visible to the manager on four levels (reports, a dedicated page, the log, a daily email).
The solution: each code is a cryptographic random token (2192 combinations), impossible to enumerate. The status on scan is always read live from the database, never from the QR. An old screenshot or a modified code won't fool the system.
An expired subscription usually means a forgotten client. The solution: the client's data stays after expiry, separate from the subscription. A page with filters allows email offers and automatic renewal reminders (anti-spam, once per subscription).
Hard to apply consistently when staff are busy. The solution: on scanning a child's QR, the system shows a warning. The physical check stays with the employee, but it no longer gets forgotten.
The solution: on creation, the QR is sent automatically by email, plus a button that opens the employee's WhatsApp with a pre-filled message (no paid API). The member gets their code in seconds.
A place that runs 3–4 months a year can't afford an expensive software subscription all year. The solution: an architecture on modern infrastructure, sized exactly for this volume, with no fixed costs weighing on the off-season.
The difference isn't the QR code itself, since anyone can put a QR on a card. The difference is that every scan is verified live and leaves a trace no one can erase.
tok_2741…e92b4d8f
Beyond the business, the solution is built with care for the details that, ignored, turn into headaches later.
No invented numbers, just what changed in day-to-day operations:
The same solution works anywhere you sell access or subscriptions: gyms, beauty salons, physio clinics, car washes, dance schools, events. It adapts to your subscription type: by days, by sessions, or unlimited access.