When users report that their OTP SMS was not received, the cause on the app side is usually one of these: the route is slow or filtered, the sender ID or template is not registered for that country, the message is blocked by content or encoding, the number is wrong, or the OTP request is throttled. Measure delivery and verification per country and operator to find which.
Why is my OTP SMS not received?
For app owners, OTP failures cluster on specific countries and operators rather than spreading evenly. Start by checking whether the failing users share a country, an operator, a sender ID or a time window. The most frequent sender-side causes are:
| Cause | Typical sign | Fix |
|---|---|---|
| Operator filtering | Failures on one operator, DLR rejected or missing | Move to an authorised route for that operator; check content |
| Unregistered sender ID | Blocked or sender replaced in one country | Register the sender ID with the country's scheme |
| Template or entity not registered | All OTPs blocked in a country such as India | Register entity, header and OTP template (India DLT) |
| Slow or overloaded route | Delivered, but after 30 seconds or more | Check latency per route, add a second route |
| Wrong number format | Invalid number errors | Store numbers in E.164 |
| Your own rate limits | No message sent at all | Review limits and error messages shown to users |
Why are OTP messages delayed?
An OTP delay usually comes from queues on the route: a provider sending through too many hops, an upstream bind with low throughput, an operator that throttles international A2P traffic, or retries after temporary errors. A code that arrives after 60 seconds is often useless because the user has already pressed "resend", which adds load and confuses the user with two codes. Measure the time from submission to delivery report per operator; see SMS delivery rate and latency. If latency is high only during peaks, ask about throughput (TPS) on your binds: SMPP binds and TPS.
OTP delivery issues on specific operators
When users of one operator stop receiving codes, the operator or its firewall is usually rejecting traffic from your route, or a registration has expired. This happens when the route is not authorised for A2P traffic on that network, when the sender ID was registered only on other operators, or when the operator changed its rules. Ask your provider for the exact error codes and whether the route is direct or passes through other carriers. See SMS firewalls, direct SMS routes and, for India, DLT registration.
Content and template problems
- Template mismatch. In countries with template registration, the sent text must match the approved template, including spacing and variables.
- Links in OTP messages. URLs, especially shortened ones, raise filtering risk. A plain code and brand name is safer.
- Unicode by accident. Special characters or emoji switch encoding and can split the message. See GSM-7 vs Unicode.
- Promotional wording. An OTP that also advertises can be classified as promotional and blocked by DND rules. Keep OTP messages purely transactional: see transactional vs promotional SMS.
When the dashboard says delivered but the user has nothing
If reports say "delivered" while users insist they got nothing, the route may be returning fake delivery reports. Test with your own SIMs on each operator and compare what the phone receives with the report. The other common explanation is that the number in your database is not the user's current number (number recycling or typos), which a validation step at signup reduces.
How to fix OTP delivery issues
- Track three numbers per country and operator: sent, delivered (per DLR) and verified. The gap between delivered and verified shows hidden problems.
- Read error codes, not just status. See SMS DLR status codes.
- Register everything required in each country before sending: sender ID, templates, entity.
- Use two routes in your main countries and fail over when conversion drops.
- Add a second channel, such as voice OTP or WhatsApp, after a short wait. See OTP fallback.
- Protect the form against SMS pumping, which inflates traffic and can push you into throttling.
For general causes beyond OTP, see why SMS is not delivered, and for message design, OTP SMS best practices.
VoIPMatcher sources A2P SMS routes for OTP from its carriers and manages them per country. Request an OTP SMS route.
Frequently asked questions
What should I show users when the OTP does not arrive?
Show a countdown of 30 to 60 seconds, then offer clear options: resend the code, receive it by voice call or WhatsApp, or edit the phone number. Tell them which number the code was sent to so they can spot typos. Limit the number of resends and explain when they can try again.
Why is the OTP received after it expires?
The message was delayed on the route: queues at the provider, extra hops, operator throttling or a phone that was offline. Set the code validity long enough for normal delivery, usually a few minutes, and fix slow routes. If delays affect one operator, ask your provider to route that operator differently.
Should I send the same OTP code again on resend?
Either approach works if it is consistent. Many services resend the same code while it is still valid, so a delayed first message still works. Others issue a new code and invalidate the old one. Never keep several valid codes for long, and always limit total attempts per number and session.
Why do users on one mobile network not receive OTPs?
That usually means the operator is rejecting traffic from your route, or your sender ID or template is not registered for that network. Check delivery report error codes for that operator, confirm registration status, and test with a SIM on that network. A second route to that operator often solves it quickly.
Can SMS pumping cause real users to miss OTPs?
Yes. Pumping attacks can push your account past throttling or spend limits, trigger operator blocking of your sender or route, and fill queues so genuine codes arrive late. Protecting the OTP form with bot detection and rate limits therefore protects real users as well as your budget.
Need a route?
Send the destination, route type and target rate. We reply with what we can deliver.