Enforcement actions
When a user trips a fraud check, ZBD can place them in one of the following states. Each restricts what the user can do, without necessarily cutting them off entirely.- Limited earnings — the user can still earn and withdraw, but their withdrawal limit increases much more slowly, so they can’t earn as much as a normal user over time.
- Withdrawal lock — the user can initialize the SDK and earn normally, but when they try to withdraw they’re prompted to contact support. ZBD (or you) can lift the lock once the user is judged not to be suspicious.
- Disabled — the SDK will not initialize for this user. They cannot earn, send rewards, or withdraw.
How the protections work
Device attestation
Device attestation is the foundation. ZBD uses Apple and Google attestation systems to verify that the device running your game is genuine and unmodified — not rooted, jailbroken, or running in an emulator. When attestation is set up correctly, only users running a legitimate build of your app on a genuine device can increase their withdrawal limit and receive rewards. Users who attempt to sign up from an emulator or a jailbroken or rooted device are disabled automatically — no configuration needed. A sophisticated attacker using genuine devices can still pass attestation, which is why Time Alive and server-side reward delivery are additional layers rather than a substitute.Attestation only protects you when it’s configured correctly for both Android and iOS. To enable it, you’ll need to provide ZBD with your app’s Bundle ID and signing key details. See the Attestation Setup guide.
Time Alive
The SDK sends a ping to ZBD servers approximately every 20 seconds while your app is open. This builds up a “Time Alive” value that gates how much a player can withdraw. A player can earn rewards faster than they can withdraw them — but they can only access what their Time Alive allows. This means a bad actor who callsSendReward repeatedly can inflate their balance, but can’t immediately withdraw it. The withdrawal limit accrues slowly enough to make farming unprofitable.
For example: a player might earn 10,000 units in a session, but their withdrawal limit may only allow 200 units per hour of genuine gameplay. Farming requires real time, which limits the economics of an attack.
Bot and emulator detection
ZBD monitors network behavior and device signals to detect automated reward farming — bots running at scale, emulators, and coordinated IP patterns. This runs server-side and requires no configuration from you. For higher-risk integrations, additional verification steps can be enabled at the point of withdrawal, including CAPTCHAs. Talk to your Customer Success Manager if you’re concerned about large-scale farming.Geolocation
ZBD detects a player’s country from their IP address on SDK initialization. This determines:- Which payout methods are shown to the player
- What withdrawal limits apply (Tier 1 countries like the US, UK, and DE have higher limits than Tier 2 countries)
- Whether the player is in a supported region at all
VPN and proxy detection
VPN and proxy use is a fraud signal: VPNs are commonly used to spoof locations and bypass regional restrictions. ZBD responds in two different ways, at two different moments — don’t confuse them:- Policy: limited earnings mode. A player detected using a VPN or proxy is placed into limited earnings mode — the SDK initializes normally and rewards keep working, but their withdrawal limit grows much more slowly. This is reversible: the modal directs the player to support, and their normal earning rate can be restored once it’s resolved.
- Interference: init failure. Some VPNs, ad blockers, and private-DNS setups block the network requests device verification depends on. When that happens
Initfails, and because the modal can’t be shown after a failed init, you need to surface your own message asking the player to disable the blocker or VPN and try again. Do not fail silently. See Error Handling.
Configurable protections
Some signals are more prone to false positives, so ZBD treats them conservatively by default. You can tighten them for your game if you see abuse — just let us know and we’ll adjust your configuration.Datacenter connections
Most real players connect from a home or mobile network. A datacenter connection is unusual for a genuine player and is far more common among bots and gaming farms. That said, legitimate users do sometimes appear on a datacenter connection — for example, university or airport Wi-Fi that routes through one. Because of that, ZBD allows datacenter sign-ups by default. If you notice increased fraud or farming, you can ask ZBD to disable or withdrawal-lock users on datacenter connections.Default: off. Datacenter users are allowed unless you tell us otherwise. Reach out if you’d like them disabled or placed into withdrawal lock.
Factory reset
Most users never factory reset their phones. When they do, it’s often legitimate — a second-hand phone, or occasionally a major system update that sets the factory-reset flag. But factory resets are also a common evasion tactic: a user resets the device to give it a new identity, then plays as a “new” user to escape a disable or a withdrawal limit. We recommend placing a user into withdrawal lock if their device was factory reset within the last 2 weeks. You can adjust this threshold — for example, loosen it if you start seeing an increase in support requests.Developer tools
We can detect when a device has developer tooling enabled — developer options, debugging, and similar low-level access. Plenty of legitimate power users turn these on, but the same tooling is also what’s used to inspect, hook, and manipulate an app, so it’s a useful signal when weighing other risk factors. Because developer tooling on its own isn’t proof of abuse, ZBD allows these devices by default. If you see abuse from devices with developer tooling enabled, you can ask ZBD to disable or withdrawal-lock them.Device model
Fraud farms often run large numbers of the same cheap, low-cost device model. When you notice farming concentrated on a particular device model, ZBD can automatically place users on that model into withdrawal lock (or disable them). Because a popular budget phone can also be used by many genuine players, this control is targeted and off by default — you tell ZBD which device model(s) to action.Minimum app version
You can require a minimum supported version of your game for withdrawals. Users on anything below it won’t be able to withdraw and will be prompted to upgrade — for example, blocking withdrawals belowv1.1.2.
This protects you when an older build has a known bug or exploit that could be used to farm rewards.
Configuring these controls
The configurable protections above are managed by ZBD. To turn any of them on, change a threshold, or set your minimum app version, reach out to your ZBD Customer Success Manager with your preferences. They’re off by default, and we can adjust them as your needs change.What you can do
The single most effective thing you can do is move to server-side reward delivery:- Your server sends rewards, not the client — so the reward path is never exposed
- Disable client-side
SendRewardentirely in the dashboard - Provide ZBD with your server’s IP address so we can allowlist it