Evaluate purchase and reward abuse protection by asking two questions of each grant in your app: who decides that value is given, and what that decision knows about the client asking for it. Otukan answers the second question. On Android and iOS, including Unity games, it detects patched billing flows, replayed receipts, clock-shifted rewards, farmed accounts and rewards granted on the device, and sends its verdict with each purchase or reward claim. Your server, working with store verification, keeps the first question. Otukan does not handle refunds, chargebacks or store accounts, and it never asks for your store credentials.
Related controls for games are covered on game and revenue protection.
Client exposure
Anything that turns into value for a player passes through the client at some point. The abuse follows the value.
| Flow | Manipulation | Where it happens | What Otukan contributes |
|---|---|---|---|
| One-off purchase | Store flow patched to report success | Hooked or rebuilt client | Hooking and integrity signal on the claim |
| Receipt handling | A real receipt resent from other installs | Many accounts, one payment | Claim bound to its session and device |
| Subscription and restore | Restore requested by an install that never subscribed | Shared or leaked receipts | Install and integrity context on the restore |
| Daily and timed rewards | Device clock moved forward | Clock settings or hooked time functions | Time-manipulation signal |
| Referral and first-purchase offers | Bonus claimed again and again | Emulators and reset devices | Farm and device-reset signals per install |
| Local reward grants | Currency added without a server call | Tampered reward code | Tampering signal, server ignores client counts |
Execution manipulation (patched code) and state manipulation (changed clocks, fake counts) both end in the same place: a claim that looks valid to a server that cannot see the client.
Platform differences
Android and iOS sell through different stores with different billing flows, and attackers patch them differently. On Android, rebuilt packages with patched billing code spread through mod sites. On iOS, purchase flows are more often hooked on jailbroken devices through injected libraries. Otukan builds each check for its own platform and reports which one fired.
Server authority
Some rules can be enforced only on your backend, however well the client is protected. For purchases and rewards:
- Store verification. Each transaction is confirmed with the store’s server-side verification: Google Play’s purchase verification for Android and the App Store Server API for iOS.
- Idempotent grants. A transaction identifier grants its item once, however many times it is submitted.
- Entitlement ledger. Owned items, subscriptions and balances live on the server, and the client only displays them.
- Server time and caps. Timed rewards, streaks and bonus limits follow the server’s clock and counters.
- Refunds and reversals. Voided purchases are revoked from the ledger using the store’s notifications.
Otukan’s evidence joins each of these decisions. A verified receipt from a hooked client, a restore from an unfamiliar install or a streak claimed from a farmed device can then be held or reviewed, rather than granted at face value. The request side is covered on mobile API protection.
Player experience
Performance
Purchase and reward moments are brief and high-intent, so a delay there costs money. Otukan performs its heavier checks at launch and when the shop opens, so the claim itself carries a result already computed. Measure store-sheet and reward-screen responsiveness on your oldest supported devices before release.
False positives
A player on a rooted phone who buys a bundle is still a paying customer. Start in observe mode and compare Otukan’s signals with store verification results before holding anything. Then test with Otukan three ways: patch a purchase flow in an authorised lab and confirm the signal, buy and restore on a clean supported device and confirm nothing is held, then repeat install, update, sign-in and a real purchase.
Appeal and recovery
When a claim is held, say so in the app and give the player a route to support. Keep restore-purchase working on new devices. Otukan’s verdict records which signal caused the hold, so support can release a genuine purchase quickly and explain a refusal.
For cheats that affect play rather than purchases, see mobile game anti-cheat. If your app is already in the stores, you can request a free App Exposure Check of the published release.