Why One OTP Channel Never Wins Everywhere
Most teams pick a verification channel once. Someone evaluates SMS versus flash call versus WhatsApp, writes a doc, makes a call, and that decision quietly hardens into the way the product works — everywhere, forever.
That decision is almost always wrong somewhere, because the economics of verification are not global. They're per-country, and they don't just vary in degree. They invert.
Here's the evidence, straight from our own published rates.
The same three channels, four countries
These are real per-attempt prices from our pricing snapshot (generated 2026-07-06). Nothing here is illustrative:
| Country | Flash Call | SMS | Telegram |
|---|---|---|---|
| Nigeria | €0.004 | €0.20 | — |
| Ethiopia | €0.004 | €0.192 | €0.015 |
| Tunisia | €0.005 | €0.295 | — |
| Bosnia & Herzegovina | €0.0061 | €0.065 | €0.015 |
Read the Nigeria row, then the Bosnia row.
In Nigeria, a flash call costs roughly one fiftieth of an SMS (€0.004 vs €0.20). If you're running high-volume signup there and you're on SMS, channel choice is not a rounding error on your infrastructure bill — it is your infrastructure bill.
In Bosnia, the same two channels are about ten times apart (€0.0061 vs €0.065) — still a real gap, but an entirely different order of decision. And SMS in Bosnia (€0.065) costs less than a third of SMS in Nigeria (€0.20). The channel didn't change. The corridor did.
Where it fully inverts
Bosnia is the only country in our current snapshot with a published WhatsApp rate, and it's the most instructive number we have:
| Bosnia & Herzegovina | Price |
|---|---|
| Flash Call | €0.0061 |
| Telegram | €0.015 |
| SMS | €0.065 |
| €0.40 |
WhatsApp costs more than six times SMS there — and roughly 65× flash call. Any blanket rule that says "use WhatsApp, it's cheaper than SMS" is not a simplification in that corridor. It's a factually wrong statement that would multiply your verification spend.
Germany runs the opposite way: SMS €0.065, Telegram €0.015. There, Telegram is roughly four times cheaper than SMS. Same two channels, opposite verdict, one continent apart.
There is no channel that is universally cheapest. There is only the channel that's cheapest for the corridor you're actually sending to.
Price is necessary, not sufficient
If cost were the whole story, everyone would route everything through the lowest number in the table and go home. Three things stop that.
Reach. A channel only works if your user has it. SMS is the only channel that reaches essentially every handset with no app installed, no data connection, and no account. That universality is exactly what you're paying the premium for. In a market where your users overwhelmingly live in one messaging app, an OTT channel is excellent — and in a market where they don't, it's a dead end at any price.
The interaction. Flash call verifies in a median of 2–3 seconds and, on Android, with zero digits typed. SMS takes 5–30 seconds and requires the user to notice a text, switch apps, and transcribe six digits correctly before it expires. Every one of those steps is somewhere a real signup gets abandoned. Cheap and slow can lose you more money than expensive and instant — if your funnel is worth more per user than the message costs.
Fraud exposure. SMS OTP routes through termination that somebody can profit from inflating; that's the whole mechanism behind AIT fraud. Flash call never enters the messaging chain, so there's no termination fee to farm. In a corridor you're being pumped in, the "cheaper" channel can be the one quietly costing you the most.
What good channel strategy actually looks like
Not one channel. Not every channel everywhere either. A per-corridor default with a fallback:
- Default to the cheapest channel that reliably reaches that market. Consult the real rate for the real destination, not a global average and not last year's decision.
- Keep SMS as the universal fallback. When the primary channel fails or the user isn't reachable on it, you need something that works on any handset. That's what you're paying SMS's premium for — use it as insurance, not as the default.
- Let high-volume corridors drive the optimisation. If 80% of your signups land in three countries, those three rows in the price table are where all the money is. The long tail can stay on SMS and it will not matter.
- Re-check periodically. Rates move. A decision made against 2024 pricing is a guess today.
The honest part
We publish every per-attempt rate, per country, on the pricing page — no quote form, no sales call, same rate whether the call is answered or not. That's partly a product decision and partly a self-imposed constraint: if we're going to argue that channel economics invert by country, we have to show the numbers that prove it, including the ones that are unflattering to us.
The WhatsApp row above is exactly that kind of number. It's in this post because it's true, not because it sells anything.
Pick your channel per corridor. Check the actual rate. The global answer doesn't exist.