Phone verification is the first thing a new user does in your app and the last thing you want to lose them on. There are three common ways to confirm a number: an SMS with a code, a flash call, and a code in a messenger such as Viber. They differ in price by up to ten times, in delivery speed and in how many users complete the step. This article compares them and shows the cascade most teams end up with.
SMS OTP
The classic: the user enters a number, receives a 4 to 6 digit code by SMS, types it in. Works on every phone, needs no app and no internet. Its problems are known: in many countries an A2P SMS costs 3 to 10 cents, delivery on some carriers takes 10 to 60 seconds, filtering by carriers and by phone spam filters swallows part of the messages, and SMS pumping fraud can generate thousands of fake requests overnight.
Use it when: the audience is broad, the number of verifications is moderate, or as the last step in a cascade. Details and rates are on the SMS gateway and two-factor authentication pages.
Flash call
The service places a short call to the user’s number and immediately hangs up. The last digits of the calling number are the code. On Android the app can read the incoming number automatically, so the user does nothing; on iPhone the user reads the last digits from the call screen and types them. The call is never answered, so it costs a fraction of an SMS, usually 5 to 10 times less, and arrives within 2 to 3 seconds.
Where it fails: users with call blocking or “silence unknown callers” enabled, corporate numbers behind a PBX, and any flow where the user must copy digits by hand and does not understand what is happening. The screen has to explain “you will receive a call, do not answer it, enter the last 4 digits” clearly. More on the mechanics on the flash call verification page.
Use it when: verification volume is high and most users are on Android, for example marketplaces, delivery apps, mobile games.
Viber OTP
The code is sent as a message from your verified business account in Viber. It is delivered in one or two seconds, the message is branded with your name and logo, it cannot be spoofed by a random sender, and the price in Viber-heavy countries is lower than SMS. The obvious limit: the user must have Viber installed and active on that number. In Ukraine, Bulgaria, Greece, Serbia, the Philippines or Myanmar that is most of the audience; in Germany or the United States it is not.
Viber also provides a delivery status, so you know within seconds whether the code reached the phone and can fall back to another channel. The Viber OTP page describes the setup and the countries where it makes sense.
Side by side
| SMS OTP | Flash call | Viber OTP | |
|---|---|---|---|
| Works without an app | yes | yes | no, needs Viber |
| Typical delivery time | 5–60 s | 2–3 s | 1–2 s |
| User effort | type the code | none on Android, type digits on iOS | type the code |
| Relative cost | 1x | 0.1–0.2x | 0.3–0.6x in Viber markets |
| Delivery report | partial, depends on carrier | yes | yes |
| Fraud exposure | SMS pumping | low | low |
| Branding | sender name only | none | name and logo |
The cascade: send the cheapest channel first
No single method reaches everyone, so production systems chain them. A typical order for a Viber market:
- Viber OTP if the number has Viber. Delivery status arrives within seconds.
- Flash call if Viber is not available or not delivered within a few seconds.
- SMS as the final fallback, or immediately for the users who asked for it.
For an audience without Viber the order is flash call first, then SMS. The cascade API does this with one request: you send the number, define the order and the timeouts, and receive a single result, while paying only for the channel that actually delivered.
Conversion: what actually changes the numbers
- Explain the flash call. A one-line hint with the last-digits rule raises completion on iOS noticeably.
- Autofill where possible. Android SMS Retriever and call detection remove typing entirely.
- Keep the code short and the timer visible. Six digits, 60 to 120 seconds, a visible “resend” button that switches channel on the second attempt.
- Do not resend the same channel blindly. If SMS did not arrive in 30 seconds, the second SMS is unlikely to help; a call or a Viber message is.
- Rate-limit by number and by IP. This is what stops SMS pumping, and it costs nothing.
Which one to choose
- Mostly Android, high volume: flash call first, SMS fallback.
- Viber country, consumer audience: Viber OTP first, flash call, then SMS.
- B2B audience with corporate phones: SMS first, Viber where available.
- Global product: cascade per country; the same API handles all three.
Pricing depends on the destination country and volume. The two-factor authentication page lists the options, and for a cost estimate for your countries and volumes the team answers in the contact form within a business day.