Watch And Earn docs
v4.0.0
Live demoConsole demo Get help
● Reference · Versions

Changelog
what changed, and why.

4.0.0 is the first Flutter release of this item. It replaces the native Android (Java) app 2.x with a new project: Flutter app, Firebase backend and operator console, with an optional cash wallet. It is not a drop-in update; read Updating from the Java version first.

4.0.0replaces 2.x (Java)

014.0.0: the Flutter rebuild, with an optional cash wallet

October 2026. From CHANGELOG.md in the package. 4.0.0 replaces the 2.x Java Android app with a new code base. It was developed through internal versions 3.0 and 3.1, which were never published; their changes are part of this release and are listed further down (3.1 features, 3.0 rebuild).

Two balances, never mixed

Points stay a non-transferable score with no cash value; ads, games and streaks pay points only. The new cash wallet is separate and credited only by verified offerwall, survey and playtime payouts, the referral commission on those, and cash you grant by hand. There is no conversion from points to cash and no setting can add one. Every money switch ships off. Wallet and payouts

Cash wallet and payouts (off by default)

  • Cash mode for offerwalls and surveys: the user receives a share of each verified provider payout (default 50 %, VIP 60 %), in whole cents of the wallet currency (USD by default, or another currency with your own USD rate). Cash mode
  • Pending, available, locked: new cash is held for 14 days by default (the providers' chargeback window). Reversals take it back, and a reversal after release can make the balance negative, which blocks cash-outs until it is settled. Big cash credits and credits of flagged users wait in the review queue.
  • Referral commission on cash, level 1 only (default 10 % within 180 days of sign-up), paid from your margin and reversed with its source.
  • Payouts by PayPal, crypto (USDT on TRON and Polygon, USDC on Base, Bitcoin, Litecoin by default; your own list with address checks), bank transfer (IBAN checksum) and gift cards from a catalog you type. Minimum, fee, countries and processing text per method; daily and monthly limits, account age, verified sign-in, 3 requests per hour, cancel while pending. Payout methods
  • PayPal Payouts API (optional) with sandbox and live, a verified webhook, a 30-minute poll and safe retries. Crypto, bank, gift cards and PayPal without credentials are paid by you and marked paid; no private key, seed phrase or bank login is ever stored. Gift-card codes are stored encrypted (AES-256-GCM).
  • Fraud flags on every request (shared device, emulator, root, VPN, reversal rate, velocity, young account, first payout, shared destination, flagged user). A flagged request always waits for a person. Fraud signals and limits
  • Platform switches: wallet and offerwalls on for Android, off for iOS and web by default. Platform rules

Operator console

  • Settings: Wallet & payouts, Payout methods, PayPal Payouts (owner only, with a connection test), cash reward mode and offerwall platforms, the cash hold threshold, the six new games.
  • Pages: Payouts (queue, flags, device signals, approve, reject, mark paid, bulk approve, audited destination reveal), Wallets (balances, entries, grant cash, freeze payouts), Business (measured revenue, measured payouts, margin, what you owe users, and an example calculator that is not a forecast). Payouts, Wallets, Business
  • Approval step: managers approve, reject and mark manual payouts paid; only the owner sends through the PayPal Payouts API, grants cash and changes money settings. Optional two-person rule (wallet.requireTwoPeople) for teams. Auto-approve (off by default) skips the human approval for small unflagged requests.

App

  • New design "Neon Plum": dark (default) and light themes, bundled Bricolage Grotesque and Inter fonts (SIL OFL 1.1), design tokens in app/lib/core/design.dart, a balance hero with both balances, reduced-motion support. Design and theming
  • Five tabs: Home, Earn, Play, Wallet, Profile. The Wallet tab becomes the Rewards store where the wallet is off.
  • Six new mini-games for points, each replayed on the server: Merge, Tower stack, Math rush, Mini sudoku, Color sort, Reaction. Mini-games
  • New texts in all 9 languages. The web demo shows labelled demo cash from simulated offers only.

Backend

  • New callables getWallet, requestPayout, cancelPayout, revealGiftCode; HTTPS paypalWebhook; trigger onWalletOp; jobs releaseWallet (hourly), walletTotals (every 15 minutes), pollPaypalPayouts (every 30 minutes); new rules and indexes. Account deletion keeps wallet and payout records.
  • startGame returns the seed only for Merge, so a client cannot compute the other games' solutions.

Ad networks

  • AppLovin MAX removed. The supported ad networks are AdMob, Unity Ads and ironSource LevelPlay (a waterfall, or AdMob or LevelPlay mediation), plus the offerwalls and surveys. The AppLovin plugin, its callback, its reporting key and its console fields are gone, and AppLovin keys left in existing config documents are ignored. Where the internal 3.x notes below mention AppLovin MAX, it no longer applies.

Requirements

  • Requirements: Flutter 3.41 or newer, Node.js 22, Android minSdk 24 / targetSdk 36, iOS 15. No third-party packages beyond those of the internal 3.1; the two fonts are bundled assets (Credits). App version 4.0.0+400.

At release the app, Cloud Functions (unit, emulator and security-rules) and console test suites pass, including the tests that keep points and cash apart.

02Updating from the Java version (2.x)

Upgrade notes

The full guide, with the new environment variables, the Firestore document structure, the deploy order and the options for old coin balances, is on Upgrade and migration. Every later release lists what you must do by hand under this heading.

The version published before 4.0.0 is the native Android (Java) app 2.x, with AdMob, AppLovin and Facebook Audience Network variants and a manual PayPal coin redemption. 4.0.0 replaces it on the same CodeCanyon item; download it from your Downloads page like any update.

  • Not a drop-in update. 4.0 is a new Flutter project with a new backend (Firebase) and a new data model. Nothing from the Java code base is reused, and your Java project cannot be upgraded in place. Treat it as a new app and set it up from Installation.
  • Balances are not migrated. Your users' coin balances live in your old backend. Nothing moves them into 4.0 automatically.
  • Keep your applicationId to update your store listing. Build 4.0 with your existing Android application id and your existing upload key, and it installs as an update of your current Play listing (Rebranding, Signing). Raise the version code above your last upload.
  • Coins become points. In 4.0, points earned from ads have no cash value and can never be cashed out (the hard rule). Tell your users before you publish, and update your store description so it no longer promises money for watching ads.
  • Cash is optional and different. If you want to pay users again, the optional cash wallet is funded only by partner offers and surveys, off by default and on Android only by default (Wallet and payouts, Your legal duties). Rename the app first (why).
  • Ad networks. 4.0 supports AdMob, Unity Ads and ironSource LevelPlay in one build. AppLovin MAX and Facebook Audience Network are not among them.

03Internal 3.1 (not published): more ways to earn, more to do

October 2026. From CHANGELOG.md in the package.

Operator revenue

  • Ad mediation. Several networks at once: a waterfall per format across AdMob, AppLovin MAX (removed in 4.0.0), Unity Ads and ironSource LevelPlay, or one mediator SDK (AdMob, MAX or LevelPlay; MAX removed in 4.0.0). Mediation and placements
  • New placements, each off by default and capped: app open, interstitials at natural breaks, banners per screen, native ads in lists, rewarded interstitials after game results with the opt-out intro AdMob requires. Global caps: full-screen ads per hour, first-session grace, no ads for VIP and remove-ads.
  • Offerwalls and surveys: AdGem and Lootably offerwalls, BitLabs and CPX Research surveys. Signed server-to-server postbacks, de-duplication, reversals, holds for review above a threshold. The provider payout is recorded as revenue. Offerwalls and surveys
  • VIP monthly and yearly with a points multiplier, ad-free, VIP-only games and a VIP season track. Consumable boosters (e.g. 2× points for 30 minutes). Point packs, off by default. Every purchase is verified on the server. VIP, boosters and packs
  • Sponsored campaigns you sell: banners, tasks and quizzes, always labelled "Sponsored", scheduled, with impressions and clicks. The booking amount is recorded as revenue. Sponsored campaigns
  • Revenue centre with measured figures only: verified purchases (when the store reports a price), offerwall and survey payouts, sponsor bookings, and ad revenue once AdMob reporting is connected (AppLovin MAX reporting was removed in 4.0.0). ARPDAU, revenue by source, D1/D7 retention and the sign-up → first ad → first purchase funnel. Revenue centre

User features

  • Season pass (free and VIP tracks), achievements, a monthly check-in calendar, events and tournaments with time-boxed leaderboards and prizes in points or cosmetics, teams with team leaderboards, friends and a friends leaderboard, a second referral level (at most two levels, off by default). Engagement features
  • Mystery box with the odds shown (points only), memory and word mini-games validated on the server, a rewards store (avatars, frames, themes, perks and operator rewards fulfilled by hand), a notifications inbox, promo codes.
  • 9 languages: English, Spanish, Portuguese, French, German, Hindi, Indonesian, Turkish and Arabic (right-to-left). A new onboarding and more motion. Languages

Safety and growth

  • Anti-fraud: device reports (emulator, root/jailbreak, VPN, App Check), an accounts-per-device limit, a points-per-hour velocity rule and a manual review queue in the console. Anti-fraud
  • Push campaigns by segment with an inbox copy, A/B tests for economy values (the app and the server assign the same variant), promo codes for points. Growth tools

Changed

  • Server refusals carry a reason token (details.reason) that the app translates.
  • Requires Flutter 3.41 or newer (flutter: ">=3.41.0" in app/pubspec.yaml).

Fixed before release

  • Push campaigns to one team: the console picks the team and sends its id (Push campaigns).
  • Caps of 0 mean "none" everywhere (app, server, demo) (Placements). Console help texts match what the backend does: the offerwall hold threshold (holds), the n-th check-in reward (check-in), the emulator switch and the VIP multiplier (Anti-fraud, Economy). AdGem and BitLabs callback URLs are console fields and survive every save (Postback URLs). LevelPlay native unit ids are no longer asked for: the app renders native ads with AdMob (AppLovin MAX was removed in 4.0.0).
  • Season tiers, mystery-box and event prizes reference real store items, and a Status check warns otherwise (Season pass).
  • Leaderboard and team rows show the equipped avatar and frame.
  • The points name from the console appears next to the balance; the default points notice, plurals ("1 day") and the Arabic profile tab are fixed in all 9 languages; iOS declares all 9 languages (Languages).
  • The demo app and the demo console tell the same sample story.
  • iOS builds again: google_mobile_ads is pinned to 9.0.0 (Google Mobile Ads iOS SDK 13.3). Version 9.1.0's public iOS headers import a private SDK header and do not compile with the standard Flutter Podfile (use_frameworks!); no 9.1 APIs are used. The LevelPlay plugin is built as a static library because IronSource ships a static framework (Troubleshooting).
  • iOS Simulator on Apple silicon: the Podfile removes the arm64e simulator exclusion that IronSource Ad Quality adds, which made Flutter build an x86_64-only simulator app that iOS 26 simulators refuse to install.

Tests at release: app 112; Cloud Functions 62 unit, 51 emulator and 61 security-rules tests; console 58 unit and 16 emulator tests.

04Internal 3.0 (not published): complete rebuild

A new code base: a different language (Flutter instead of native Android Java), a new backend and a new data model.

New

  • Flutter app for Android and iOS from one code base, plus a web demo mode with simulated, labelled ads.
  • Firebase backend: Cloud Functions (TypeScript, Node 22) hold every rule. Points are credited only on the server, in one transaction with a ledger row.
  • Several ad networks in one app, chosen in the console without a new build. Since 4.0.0: AdMob, Unity Ads and ironSource LevelPlay (AppLovin MAX was removed).
  • Server-side verification of every rewarded video, with each network's signature check, one-time sessions, duplicate protection, daily caps, cooldown, rate limits and fraud flags.
  • Operator console on the MIKODES Admin Kit: brand, legal, ads, economy, features, purchases and push settings; users, ledger, fraud flags, leaderboard, quizzes, tasks, offers and push pages; roles and an audit log.
  • More ways to collect points: daily streak, lucky wheel, scratch cards, quizzes, daily tasks, partner offers with signed postbacks, invite codes, levels, badges and leaderboards.
  • Optional VIP subscription and remove-ads purchase, verified with the Google Play Developer API and the App Store Server API.
  • Guest, Google and Apple sign-in with account linking, in-app account deletion, Google UMP consent, App Check, push to all users, light and dark theme.
  • Firebase emulator workflow and test suites for the app, the Functions, the security rules and the console.

Removed on purpose

  • PayPal coin redemption and every other cash-out. Paying users money for watching ads breaks the AdMob rewarded-ads policy and puts both the ad account and the store listing at risk. Users now collect points and badges only. (The optional cash wallet of 4.0 is a separate balance funded by partner offers and surveys, never by points.) See Policy and compliance.
  • The native Android (Java) project and its separate AdMob, AppLovin and Facebook ad variants. One Flutter project with several networks replaces them (since 4.0.0: AdMob, Unity Ads and ironSource LevelPlay). Facebook Audience Network is not one of them.

05How to apply future updates

  1. Keep your changes visiblePut the unzipped package in git before you change anything, so you can compare it with a new version.
  2. CompareUnzip the new version next to yours and compare folder by folder (app/, firebase/, admin/). admin/packages/admin-kit/ is the vendored kit: replace it as a whole, never edit it.
  3. Deploy in orderFirestore rules and indexes and Functions first, then the console, then a new app build.
  4. Back up firstBack up the console's data/ folder (or Postgres) and keep the same ADMIN_SECRET_KEY.