How SMS pricing works
Your SMS bill is built from several components, and the per-message rate is only one. Understanding the parts is the first step to controlling the total.
- Per-message rate: varies by destination country and sometimes by carrier.
- Carrier surcharges / pass-through fees: added by some carriers on top of the base rate.
- Number rental: monthly cost of the sending numbers or short codes.
- Registration fees: one-time or recurring costs for 10DLC and sender-ID registration.
- Verify API premium: managed verification often costs more per success than raw SMS.
Why country matters so much
Termination rates β what the destination carrier charges to deliver a message β differ by orders of magnitude between countries. Add local sender-ID requirements, template registration, and route quality, and the effective cost of a verified user can vary 50x depending on where they are. Budgeting on a single blended rate hides this and produces nasty surprises when your user mix shifts.
| Cost tier | Example markets | Notes |
|---|---|---|
| Low | United States, Canada, much of Europe | Cheap per-message but 10DLC/registration overhead in the US |
| Medium | Parts of Latin America, Southeast Asia | Route quality varies; test delivery before trusting price |
| High | Some African and Middle Eastern markets | High termination rates and strict sender-ID rules |
| Variable | India, Indonesia, Brazil | Registration regimes and template rules shape the true cost |
These are relative tiers, not quotes β get current per-country rates from your provider for your actual traffic.
Why verification traffic gets expensive
OTP spend balloons for reasons beyond the base rate. Retries and impatient resends multiply messages per signup; fraudulent or bot signups generate paid sends that never convert (SMS pumping / toll fraud); and sending to expensive countries you did not plan for skews the average. Each is addressable.
- Resend abuse: no cooldown means users trigger multiple paid sends.
- SMS pumping fraud: bots farm your send endpoint to expensive destinations.
- Over-verification: verifying on every action instead of once per session.
- Wrong channel: paying for SMS where a cheaper factor would do.
Concrete ways to cut spend
Most teams can cut OTP cost substantially without hurting the experience. The biggest wins come from stopping waste and using the cheapest adequate channel.
- 1
Add resend cooldowns and caps
Stop users from triggering many paid sends; a countdown plus a daily cap per number removes a lot of waste.
- 2
Block fraud at the send endpoint
Rate limit per IP/number, add risk checks or CAPTCHA, and cap sends to unusually expensive destinations to kill SMS-pumping.
- 3
Offer cheaper factors
Move willing users to passkeys or TOTP, which cost nothing per use, and keep SMS as fallback β see the OTP Alternatives guide.
- 4
Optimize routing
Use quality routes for key countries and let your provider tag traffic as OTP; review per-country delivery so you don't overpay for failing routes.
Budget and monitor
Track cost per verified user by country, not just total spend, and alert on anomalies β a sudden spike often means fraud or a delivery problem driving retries, both of which you want to catch fast. A little instrumentation turns SMS from an unpredictable line item into a managed one.
- Measure cost per verified user per country, not blended spend.
- Alert on send spikes β they usually mean fraud or a delivery regression.
- Reconcile provider invoices against your own send logs.
- Revisit your channel mix as passkey/TOTP adoption grows.