Citrus Mobile: pay-as-you-go eSIM data for travel
Wholesale eSIM data for travel.
Every international trip used to end the same way: a roaming bill nobody agreed to, or an hour in an airport shop buying a plastic SIM in a language you don't read, for a bucket of data you'll never finish using.
Citrus Mobile is the answer I wanted to exist. Pay-as-you-go eSIM data in 200+ countries, starting at $0.01/MB, on web, iOS and Android. No contract, no monthly bill, and no expiration date on data you've already paid for. You land, you're online, and you're charged for exactly what you moved.
This is a write-up of what that product actually is and what it takes to build one.
The problem: travel data is sold wrong
Mobile data is a commodity. The way it's sold to travelers is not.
Roaming is the default, and it's the worst option — a carrier extending you service in a country where they own nothing, at a markup that reflects the fact that you have no alternative at 11pm in a taxi line. Local prepaid SIMs are cheaper but expensive in time: find a shop, show ID, swap the physical card, lose the one from home in a hotel drawer.
Then came the first generation of travel eSIMs, which fixed the logistics and kept the pricing model. You buy "3GB for Japan, valid 15 days." Two problems fall out of that immediately. You have to guess how much data a trip needs before the trip, and you almost always guess wrong in one direction or the other. And whatever you don't use, you lose — the expiry date is the whole business model. It's a gift card with a countdown timer.
The bet behind Citrus Mobile is that if you meter honestly and never expire the balance, you don't need the countdown timer. People buy more often, from more countries, because there's no penalty for buying a small amount.
What Citrus Mobile does
Concretely, it's three things.
Data in 200+ countries. You pick where you're going, install a profile, and the device attaches to whichever partner network is available in that country. Coverage is the product; a travel eSIM that covers 40 countries is a niche product, and one that covers most of the map is a default.
Per-megabyte pricing from $0.01/MB. Not plans, not buckets sized for someone else's trip. You top up a balance and it drains as you use it. A week of maps, messaging, and boarding passes costs what a week of maps, messaging, and boarding passes costs.
A balance that doesn't expire. Data you bought in Lisbon in March is still there in Bangkok in November. This one line does more for retention than any campaign — nobody has to re-decide whether Citrus Mobile is worth it before their next trip, because they already have a balance sitting in the app.
The account works across web, iOS and Android, which matters more than it sounds: the purchase usually happens on a laptop while planning, and the install has to happen on the phone that's traveling.
How an eSIM product actually works underneath
An eSIM is not a piece of hardware you ship. It's a downloadable profile — a cryptographically packaged set of carrier credentials that the phone's embedded SIM chip installs and then behaves as if it had always been a physical card from that operator.
Three moving parts have to line up.
Profile delivery
When a customer buys, something has to allocate a profile from an available pool and hand the phone a way to fetch it — in practice a QR code or an activation URL, which the device redeems against a provisioning server that then pushes the credentials down over the air. The customer-visible step is "scan this"; the engineering-visible step is a provisioning call whose success or failure has to be reconciled with a payment that has already been taken.
That reconciliation is most of the work. Payment succeeded and provisioning failed is the single worst state in the system, because the customer is standing in an airport with money spent and no service. Every path through that flow needs to be idempotent and retryable: re-requesting the same purchase must not allocate a second profile, and a failed allocation must either recover or refund itself without a human in the loop, because the human is asleep in another time zone.
Wholesale data underneath
The per-megabyte price only exists because the data is bought upstream at wholesale rather than resold from a retail plan. A travel eSIM operator sits on top of aggregated access to partner networks and pays a negotiated rate for traffic carried in each country, then prices retail above that rate.
Two consequences follow. First, margin varies by country — some markets are cheap, some are structurally expensive, and a flat retail price is a bet on the mix of where your customers actually go. Second, your unit economics are genuinely marginal: an idle account with a stale balance costs almost nothing to keep alive. That's what makes never-expiring balances affordable. A plan-based competitor needs expiry because it has sold a bucket it must eventually stop honoring; a per-megabyte operator has already been paid for exactly the traffic it will eventually carry.
Metering and billing per megabyte
Selling by the megabyte means the ledger is the product. Usage records flow back from the network side, get attributed to the right subscriber, and decrement a balance that the customer can see in the app. The requirements are unglamorous and unforgiving: usage must never be double-counted, a balance must never go meaningfully negative, and the number on the screen has to be close enough to real time that it feels like a fuel gauge rather than a monthly statement.
Getting that wrong is not a rounding error, it's a trust failure. A traveler who thinks they're being overcharged for data they can't audit will uninstall the app in the country where they most need it.
How this differs from DialAnyone
I build both, and they're often mistaken for the same product. They aren't.
DialAnyone is a full virtual-telecom product: real phone numbers, SMS, call forwarding, and data, for people who need an identity on the phone network in another country. The unit of value is a number you can be reached at.
Citrus Mobile is deliberately narrower — data only, aimed at travel. No number, no inbox, nothing to maintain between trips. The unit of value is a connection, and the entire product surface is "am I online, and what is it costing me."
Keeping them separate was a product decision, not an accident of history. Bundling a phone number into a travel data product would have added identity verification, number provisioning, and regulatory obligations to a flow whose whole promise is that you can be online three minutes after you land.
What building it reinforced
The technical work of a travel eSIM is mostly the work of any telecom product: provisioning that can fail, usage that has to be counted honestly, and a payment path that has to survive bad hotel wifi. What's specific to this one is that every failure happens to someone abroad, without connectivity, unable to call support — which pushes you toward self-healing flows and away from anything that assumes a customer can be reached to fix it.
The commercial lesson is simpler. Most travel eSIMs compete on price per gigabyte and quietly claw it back with expiry. Removing the expiry and metering by the megabyte is a harder system to build and an easier product to explain, which turns out to be the better trade.
If you're building something in this space — eSIM provisioning, wholesale data, or telecom billing — that's the kind of work I take on.
Building something like Citrus Mobile?
Book a call