ReceiveSMS.ink

Verification Code Never Arrived? Nine Reasons Why, and What to Do

8 min read

You entered a number, pressed send, and nothing came. Before you try again a fourth time — which will often make things worse — it helps to know which of these is actually happening. They are ordered by how often each one turns out to be the cause on a service like ours.

1. The service blocks virtual numbers

This is the answer most of the time, and no amount of retrying will change it. Larger platforms buy access to databases that classify every number range by type: mobile, landline, VoIP, or non-fixed VoIP. Numbers from services like this one sit in the last category, and plenty of platforms refuse it outright.

The tell is the timing. If the site accepted your number and claims a code was sent, but nothing ever arrives, the message was very likely never handed to a carrier at all. If the site rejects the number immediately with “please enter a valid mobile number”, the block happened at the form.

What to do: try a number from a different country. Classification databases are uneven, and a range that is flagged in one country is often clean in another. Beyond that, a service that has decided to refuse virtual numbers will keep refusing them.

2. Someone already used that number on that service

Public numbers are shared. If three people before you registered with the same platform using the same number, that platform now considers the number taken — or flags it as suspicious and drops the send silently.

What to do: pick a different number from the list. This one is quick to test and quick to rule out.

3. You hit a rate limit

Nearly every platform caps how many codes it will send to one number in a window — often three per hour, sometimes three per day. Pressing “resend” five times in a minute is the fastest way to trigger it, and the interface rarely tells you. It keeps saying “code sent” while sending nothing.

What to do: stop pressing resend and wait an hour. Genuinely. Each extra attempt can extend the cooldown.

4. Country mismatch

Some services only send codes to numbers in countries where they operate. A UK bank will not text a Canadian number. Delivery-service and food-delivery apps are especially strict, since the number is tied to a physical address.

What to do: match the number’s country to the service’s market if we have one available.

5. Carrier filtering

Carriers run their own spam filtering on inbound application-to-person traffic, and it is aggressive. Messages containing URLs, certain keywords, or coming from a sender ID with a poor reputation get dropped in transit. Nobody is notified — not you, not the sender.

In North America this is formalised as 10DLC: senders must register their campaigns, and unregistered traffic is throttled or blocked. In practice, messages from large registered senders arrive reliably and messages from small unregistered ones are a lottery.

What to do: nothing on your end. Try a different country, or a different number.

6. The code arrived, just not where you looked

On a shared public number, a busy inbox can push your code down the page within seconds of it arriving. If several people are using the same number, messages interleave.

What to do: our number pages stream messages live over a websocket, so keep the tab open and watch rather than refreshing. Check the sender and timestamp, not just the top of the list.

7. The number was wrong

Country code included or not, leading zero kept or dropped — the two most common formatting mistakes. A UK mobile written as +44 07451... has one digit too many; the leading zero is a domestic-dialling convention and is dropped when you use +44.

What to do: copy the number from our page rather than retyping it.

8. Genuine carrier delay

Most codes land in under ten seconds. Occasionally a message sits in a queue for several minutes, usually during regional congestion. By then the code has often expired.

What to do: wait two minutes before requesting a new one, so you do not trip the rate limit in point 3.

9. The sender has a delivery problem

Sometimes it is simply broken on their side — an expired SMS provider account, an exhausted quota, a misconfigured sender ID for your region. Small services are more prone to this than large ones.

What to do: if a service works for other people but never for you, and you have ruled out the above, it is worth writing to them.

The uncomfortable summary

If a platform has decided not to accept virtual numbers, there is no trick that defeats that, and we would not help you find one if there were. Free numbers here are best suited to low-stakes signups, testing, and services that do not gate on number type. For anything you need to work reliably, a private number has a better delivery record because it is not shared and not burned through by other people — but it is still a virtual number, and services that block the category will still block it.

Related

If you want to understand what the code itself is doing, see what is an OTP code. Developers testing their own send flows should read testing SMS verification flows.