Android developers

Monetize your Android app without putting a single ad in it

Users opt in, a capped share of the bandwidth their device is not using gets relayed for public web data collection, and you get paid for it. No ad renders. No paywall. The session your user had is the session they still have.

You change no screens
There is no ad unit to place, no paywall to design, and no purchase flow to maintain. The integration is one Gradle dependency, a consent screen you can restyle, and a start call. Your layouts do not move.
The limits are not yours to raise
A bandwidth ceiling, daily and monthly data caps that are tighter on mobile data than on WiFi, a CPU and memory budget, and a port and network denylist — all enforced inside the compiled Rust core, with no API to loosen them. The relay enforces the same limits from its side.
Consent is the only code path
The SDK cannot share anything until the user has accepted an agreement they were actually shown. Not a settings toggle defaulted on. Not a line buried in a EULA.
It stacks on what you already run
This is not a replacement for your ad mediation or your subscription tier. It is a second stream from the same users, and the two do not compete for the same screen real estate.
  • 8+ characters
  • An uppercase letter
  • A lowercase letter
  • A number

We verify every publisher before payout. A trustworthy network is worth more to us than a big one.

Free to integrate. up to $0.50 per user per month — earned daily, paid monthly.

Proof

  • Up to $0.50 per user per month
  • No ad inventory, no paywall
  • Caps enforced inside the Rust core
  • First 100 devices, no sales call
  • One Gradle line, minSdk 24

What it pays, precisely

Up to $0.50 per user per month. The rate is per country and your full rate card is in your dashboard from the moment you sign up.

The money accrues daily. A user counts for a day once their device has been sharing for 60 minutes in that day, each qualifying day is worth the monthly rate divided by the days in that month, and the month is the sum of its days. A device that shares for 59 minutes on a Tuesday earns nothing for that Tuesday — there is a bar and it is worth stating plainly.

Devices on hosting, datacenter or VPN IPs are not counted.

The arithmetic is written out in full, including what happens when your install base doubles mid-month.

What actually runs on the device

A background task that yields to the app it lives in. When a limit is reached — a data cap, or sustained load on the device — it opts the device out entirely and checks back later, rather than quietly throttling and staying resident.

We do not describe it as running only when the phone is idle, because deciding what "idle" means on a phone is a hard problem and most implementations solve it by ignoring the question. Continuous operation inside hard limits is the honest design, and it is the one you can verify.

The traffic goes to public web data collection: price and availability monitoring, flight and hotel search, SEO and ad verification, market research, and AI training data. A permanent blocklist covers .gov and .edu, banks and financial institutions, card processors, login endpoints, sensitive APIs, any reported-abuse domain, and the user's own local network.

Before you integrate anything

  1. Read the consent screen the SDK will show your users. If a vendor will not show it to you before integration, that is your answer.
  2. Ask which limits you are allowed to change. The correct number is zero.
  3. Ask what happens under sustained load. "Throttles" is a worse answer than "opts out".
  4. Ask who buys the traffic and what is blocked.
  5. Ship it behind a flag to 1% of users and watch your crash-free rate and your retention curve for a week.

Your first 100 devices go live without talking to anyone, which exists so that step 5 costs you an afternoon and nothing else.

How it works has the full technical description, and our ethics page has the part about what we will not do.

Questions

How much can an Android app earn from bandwidth sharing?

Up to $0.50 per user per month at the top country rate. Earnings accrue daily: a user counts for a day once their device has shared for 60 minutes in that UTC day, and each qualifying day is worth one day's share of the monthly rate. An app with 10,000 users qualifying every day of a 30-day month would earn 300,000 user-days, which at the top rate is $5,000 for that month. Rates vary by country and devices on hosting, datacenter or VPN IPs are not counted.

Will this get my Android app removed from Google Play?

Google Play's policies require that any background network use is disclosed to the user and consented to, which is why the SDK cannot transmit anything until the user has accepted an agreement they were shown. We do not claim Google Play compatibility on your behalf — the listing is yours, the disclosure obligations are yours, and any vendor promising you a guaranteed outcome on someone else's store is promising something they do not control.

What does the SDK do to battery and data?

It runs as a background task with a bandwidth ceiling and separate daily and monthly data caps, tighter on mobile data than on WiFi, plus a CPU and memory budget. All of those are compiled into the Rust core and there is no API to raise them. When a cap is reached or the device is under sustained load, the device opts out of sharing entirely rather than continuing at a reduced rate.

Does this work alongside AdMob or a subscription tier?

Yes, and that is the usual setup. It occupies no screen space and has no purchase flow, so it does not compete with an ad unit or a paywall for the same moment in the session. Most developers run it as a second stream on top of whatever they already have rather than as a replacement for it.

How long does integration take?

One Gradle line pulls the AAR and the native core: `implementation "io.cashraven:cr-sdk:4.1.3"`. It targets `minSdk 24` (Android 7.0 and above) with `compileSdk 34` and JDK 17, ships arm64-v8a, armeabi-v7a and x86_64, and covers phones plus Android TV and Fire TV. The API is Kotlin; Java callers work best behind a small Kotlin facade because some binding types are unsigned. The part worth budgeting time for is the rollout rather than the integration — ship behind a flag to a small percentage of users and watch your crash-free rate and retention for a week before widening it.

Your first 100 devices go live today.

No sales call, no approval to start earning.

Create your free account