Free WiFi should be free. But free can attract a different kind of guest, the one who claims a limited free bundle, uses it up, then finds a way to claim it again.
Here is the problem we saw. A data bundle priced at R0 is bait for abuse. Once a guest exhausts it, two workarounds kept showing up.
The first is same device, new account. A guest re-registers with a different phone number or email on the exact same phone or laptop, hoping the system only remembers the account, not the device.
The second is same account, new device. A guest takes an account that already claimed the bundle and connects from a different phone or laptop, hoping the system only remembers the device, not the account.
Either trick alone used to work, because most systems check only one signal. Ours checks both, together, every time.
When a guest tries to claim a promo bundle, we check the device itself, through a fingerprint unique to that phone or laptop, and the account, through the guest's phone number or email. If either signal has already claimed the bundle, the new claim is blocked. Switching only the account does not work. Switching only the device does not work either. A guest would need a genuinely new device and a genuinely new identity at the same time, which is real friction, not a five second workaround.
Venues stay in control of the rules. Choose once ever, hourly, daily, weekly, monthly or yearly resets, and optionally set a start and end date for a limited time promo. A free (R0) bundle gets this protection automatically, since it needs it the most. A paid bundle can opt in too, useful for a steep discount a venue still wants to rate limit.
We also did not want guests finding out the hard way. A guest who has already claimed a bundle sees it greyed out before they even tap it, not a "sorry, try again" message after wasting their time.
The result is free and discounted WiFi that actually stays available to the next real guest, instead of being soaked up by the same person working around the rules.