The Four Ways Ticket Fraud Actually Happens
Here is the insight that makes ticket fraud solvable: most of it isn't sophisticated forgery. It's a single valid ticket used more than once. Nobody is reverse-engineering your encryption — they're forwarding a screenshot. Once you see fraud as a duplication problem rather than a counterfeiting problem, the fix becomes obvious.
Almost everything you'll encounter at the door falls into one of four buckets:
- Forwarded screenshots. A buyer screenshots their QR code and texts it to three friends. Every copy is pixel-for-pixel identical to the original, so every copy looks completely legit to a person checking by eye.
- Duplicated PDFs. One emailed PDF ticket gets printed several times, or forwarded to a group thread. The paper in five different hands all carries the same code.
- Counterfeit or edited tickets. Someone photoshops a real PDF to change the name or tier, or guesses a plausible-looking ticket number and prints their own.
- Double-sold resale. A reseller sells the same ticket to two different buyers — both show up, both have a "valid" code, and only one can actually get in.
Three of these four are duplication, not forgery. That matters, because the defense against duplication is far simpler and far cheaper than the defense against forgery — and it's something you can deploy from a phone in your pocket.
Why Paper Lists and Static PDFs Can't Catch It
The reason eyeballing tickets fails isn't that your door staff aren't paying attention. It's that a printed guest list and a static PDF have no memory. A QR code on a PDF encodes its data exactly once, at the moment it's generated, and then never changes. It carries no live "used / not used" state. The code on the screen looks identical the first time it's scanned and the tenth time.
A paper checklist has the same blind spot. If you're crossing names off a printout, you can catch the same name twice — but only if both attempts come through the same sheet, in front of the same person, who happens to remember. Run two entrances off two printouts and neither one knows what the other already admitted. The first door waves a ticket through; the second door waves the screenshot of that same ticket through ten minutes later. Both did their job correctly. The system gave them no way to know.
Static artifacts simply can't answer the one question that stops fraud: has this exact ticket already walked through a door tonight?
The Fix: Validate Every Scan Against a Live Server
The fix is to give your tickets a memory. Instead of trusting what the code looks like, you check it against a live record. Every time a scanner reads a QR code, it asks the database two questions, and gets both answers back in under a second:
- Is this ticket real? Does it correspond to an actual sold ticket for this event?
- Has it already been used? Has this exact ticket been admitted at any door tonight?
The first time a valid ticket is scanned, the server returns valid and — in the same operation — marks it as used. The second time that same code is presented, from a screenshot, a forwarded PDF, or a reseller's second buyer, the server already knows. It returns rejected on the spot, with a clear red fail screen the door staff can't miss.
This single mechanism kills two of the four fraud types at once. Forwarded screenshots and duplicated PDFs both rely on the same code being honored more than once. Real-time validation makes that impossible: it doesn't matter how many copies exist, because only the first one through wins.
The rule that ends screenshot-sharing: the first scan wins, and every copy after it fails. It doesn't matter whether the duplicate is a screenshot, a printout, or a forward — once the original has been admitted, every identical code is dead on arrival.
Why the QR Code Itself Should Be Signed
Real-time validation handles duplicates. To handle counterfeits — the photoshopped PDF, the guessed ticket number — you need the code itself to be tamper-evident. This is where signing matters.
A bare ticket number is weak. If your codes are just sequential IDs, an attacker who sees a few of them can guess plausible new ones, generate a QR for the guess, and try their luck at the door. A cryptographically signed code closes that gap. Instead of a raw number, the ticket carries a token that has been signed with a secret key that only your server holds. The scanner can verify the signature is authentic, but nobody without the secret can produce a valid one.
The practical payoff: a forged or edited code fails its signature check before it ever reaches the database lookup. The math doesn't add up, so the token is rejected immediately — even if the device happens to be offline at that moment. Counterfeits don't get the benefit of the doubt; they get turned away on cryptography alone, no server round-trip required.
Signing and real-time validation are complementary. Signing stops fakes that were never real; live validation stops real tickets from being reused. You want both.
What Happens When the Venue Wi-Fi Drops
Anyone who has worked a door knows the venue dead zone is real. Basements, back entrances, packed rooms full of phones competing for the same tower — connectivity drops at exactly the worst moment, when a line is forming. A check-in system that simply stops working when the signal does isn't acceptable.
A well-built check-in app plans for this. It caches the guest list on the device ahead of time, so when the connection drops it keeps scanning against the local copy without missing a beat. Validated entries queue up locally, and the moment connectivity returns, the app syncs back to the server automatically.
The subtle part is conflict reconciliation. If two doors were both scanning offline and happened to admit the same ticket during the outage, the sync needs to detect that collision and flag the duplicate rather than silently accepting both. Good systems treat the sync as the moment of truth: when the devices reconcile, any ticket that was scanned in two places gets surfaced so you can act on it. Offline tolerance shouldn't mean offline blind spots.
Multiple Entrances, One Source of Truth
The moment you have more than one scanner, the whole game depends on whether they share state in real time. A ticket admitted at Door A must be unusable at Door B a few seconds later. If the two doors are working from independent copies that never talk to each other, you've recreated the two-printouts problem with extra steps.
This is the structural reason per-device paper columns can't scale: each sheet only knows its own admissions. A shared live database flips that around. Every scanner reads from and writes to the same record, so the instant Door A marks a ticket used, Door B sees it as used. One source of truth, every entrance, no gaps for a duplicate to slip through.
The same architecture also makes your numbers trustworthy. Because every scan lands in one place, your live attendance count reflects the entire venue, not one door's slice of it — which matters for capacity, safety, and knowing when you've actually sold out the room.
Your Anti-Fraud Check-In Checklist
If you're evaluating a ticketing platform — or auditing the one you already use — this is the short list of things that actually stop fraud at the door. Every item earns its place:
- Real-time server validation. Every scan is checked against a live record, not just inspected by eye.
- Signed or tokenized QR codes. Codes are cryptographically signed so counterfeits and guesses fail before lookup.
- Instant duplicate rejection. A reused code triggers a clear, unmistakable fail screen — not an ambiguous shrug.
- Multi-device shared state. Every scanner reads and writes the same source of truth in real time.
- Offline tolerance with sync. Scanning continues during dead zones and reconciles conflicts when the connection returns.
- Works on any phone. No proprietary scanners or special hardware to rent, charge, or lose.
- No required app download for buyers. Attendees show a QR code; they shouldn't have to install anything to get in.
If a platform checks all seven, the four fraud types from the top of this article have nowhere to hide.
How TixHQ Handles It
TixHQ was built around exactly this checklist. Every scan is validated in real time against the server, and each ticket is issued as a signed token — so duplicates are caught the instant they're presented and counterfeits fail their signature check before they ever reach a lookup. The first scan wins; every screenshot, forward, and reprint after it gets a clear fail screen.
It runs on any phone's camera with no extra hardware, and multiple staff can scan simultaneously while sharing one source of truth, so a ticket admitted at one door can't be reused at another. The result is simple: screenshots, duplicate PDFs, and counterfeit codes all get stopped at the door, the moment they're presented — without you renting a single scanner.
Catch every duplicate at the door.
Connect your own Stripe account and scan tickets from any phone — signed codes, real-time validation, multiple doors sharing one source of truth. No platform fee, ever.
Create your free account →No credit card required. No platform fee, ever.