Why an SMS Verification Code Does Not Arrive — and How to Get One That Does
A code that never lands is the most common thing that goes wrong with a virtual number, and it almost never means the number itself is broken. Five distinct failures produce the same blank screen, each with a different fix, and you can tell them apart in about a minute. This guide follows the delivery chain from the send button to your dashboard, shows where it breaks, and explains what a failure costs you — which, when the code never arrives, is nothing.
What has to happen before a code reaches you
An SMS code is not sent to you by this site. It is sent at a number this site holds, by the platform you are verifying, and it crosses several hands on the way. Knowing the order of those hands is most of the diagnosis, because each hop fails in a way you can recognise.
- You press Send code on the service you are signing up to.
- That service hands the message to its own SMS provider, which chooses an international route to the destination country.
- The route delivers it to a mobile carrier inside that country.
- The carrier delivers it to the number, which sits in our pool.
- Our system attaches the message to your open order and it appears in your dashboard.
Only the last step belongs to us and it takes milliseconds. Steps two and three are where almost every failure happens, and both are decisions made by the sending platform, not by the number. That is why buying a second number in the same country and for the same service so often produces the same silence: you changed the thing that was not the problem.
Note. A one-time number stays open for 20 minutes. Delivery, when it happens at all, is typically under thirty seconds — so a code that has not arrived after two or three minutes is usually not late, it is not coming.
Five reasons a code does not arrive
These five cover the overwhelming majority of blank screens. The symptom column is what you actually see; match it before you spend money on a second number.
| What you see | Most likely cause | What actually fixes it |
|---|---|---|
| Nothing at all, no error on the service | The platform filtered the number range as VoIP and dropped the message silently | Retry on a physical or premium operator, which are non-VoIP |
| The service refuses the number before you can even request a code | That number, or its range, has already been used for this platform | Buy a fresh number, and switch country if it repeats |
| The service says the number is invalid or unsupported | Country and service mismatch — the platform does not accept that country | Pick a country the platform actually serves |
| “Too many attempts, try again later” | You are rate-limited on the sending side, not on the number | Wait out the cooldown before buying anything else |
| A code arrives but is rejected as invalid or expired | You requested several codes and entered an earlier one | Enter the most recent code only |
Note what is missing from that list: “the number does not work”. A virtual number is a real line on a real carrier. When nothing arrives, something upstream decided not to send — and the lever you have is which number you ask for next, not how long you wait.
The 60-second triage
Run these in order the moment the screen stays blank. Four of the five take seconds and cost nothing.
Check the order is live
Open your dashboard and confirm the order still reads active rather than expired or cancelled. An expired order stopped listening.
Re-read the number
Compare the number you pasted into the service with the one on screen, digit by digit, including the country code.
Look for a message on the service
A rate-limit notice or an unsupported-country notice means the send never happened. No number will fix that.
Request the code once more
One resend, not five. Repeated requests trip the rate limit and invalidate earlier codes.
Cancel and take the refund
Still nothing after two or three minutes, cancel the order. The price returns to your balance and you can change one variable and retry.
Good to know. Cancelling early is the right move, not a loss. An order cancelled before an SMS arrives is refunded in full to your balance, so there is no reason to sit on a dead number for the remaining eighteen minutes.
The VoIP problem, and why operator tier is the real lever
Large platforms maintain lists of number ranges they believe belong to internet telephony rather than to handsets. Ranges on those lists are refused at signup, or accepted and then never sent to. This is the single biggest cause of a code that never arrives, and it is invisible from your side: the platform reports nothing.
Every number here is sold under one of three operator tiers, and the tier is exactly the axis that matters for this problem. Virtual numbers are app-issued and cheapest. Physical numbers come from real mobile carriers and are non-VoIP. Premium numbers are also non-VoIP and are selected for delivery success. The live multiplier for each tier is shown next to the operator on every country page.
| Operator tier | Where the number comes from | Typical price | Choose it when |
|---|---|---|---|
| Virtual | Issued by an application, not a handset carrier | Base price, from a few cents | The platform is relaxed about number ranges |
| Physical | A real mobile carrier — non-VoIP | About 1.4–2.0× base | A virtual number was silently dropped |
| Premium | Real carrier, selected for delivery success — non-VoIP | About 2.5–4.0× base | The platform is strict, or the attempt matters |
The economics favour trying cheap first. A virtual number for a tolerant platform costs a fraction of a premium one and works. But once a virtual attempt has come back empty, buying a second virtual number in the same country repeats the same experiment. Move up a tier instead — that changes the number range, which is the variable the platform was actually filtering on. Non-VoIP is defined alongside the other terms in the glossary.
Watch out. Strict platforms are strict everywhere. For the well-known hard cases — WhatsApp, Telegram, OpenAI, Binance — starting at physical or premium is usually cheaper overall than two failed virtual attempts, even though the sticker price is higher.
Picking a country the service actually trusts
The second lever is the country, and it matters for two independent reasons. A platform may not operate in a country at all, in which case it will not send anywhere near it. And a platform may operate there but treat its number ranges as high-risk because of past abuse, in which case signups from that country are quietly held to a higher bar.
There is no universal best country, but there is a reliable way to choose one:
- Prefer a country where the platform has a real user base — a service popular in Europe is a poor match for a number from a country it barely serves.
- Prefer the country you will appear to be in. A number from one continent and a connection from another is a combination some platforms score against.
- If two attempts in one country both fail, change country rather than buying a third number there. Repeating the same country tests the same filter.
- Check the live per-country price before committing — an expensive pairing is usually expensive because supply is scarce, which is itself a signal.
Browse all countries, or start from the service and let the catalogue show you which countries carry it — the service catalogue lists more than a thousand platforms across 190+ countries. Country and service pages both show live prices and available operator tiers side by side.
What a code that never arrives costs you
Nothing. That is the design: you pay for delivered codes, not for attempts. Three situations return the price to your balance with no action from you beyond, at most, one click.
- The number did not receive the expected SMS before the timeout — the charge is reversed automatically.
- The number could not be assigned after purchase, for example because it went out of stock upstream.
- You cancelled an active order before any SMS arrived.
It is worth knowing the boundary just as precisely, because two common cases sit on the other side of it:
- The SMS arrived but the platform rejected or blocked the number afterwards. The order was fulfilled — a code was delivered — so it is not refunded.
- You picked the wrong service or the wrong country and a number was already assigned to you.
Refunds return to your site balance, never to the wallet you funded it from, and the balance can then be spent on any number or rental. The complete text is on the refund policy page.
Good to know. Because a failed attempt is free, the cheapest strategy is also the most aggressive one: cancel early, change exactly one variable, and try again. Waiting costs you time and buys you nothing.
Retrying without burning money
The discipline that saves money is changing one variable at a time. Three failed attempts that each changed two things tell you nothing about which change mattered.
Change the tier first
Same country, same service, one tier up. This is the cheapest test of the VoIP hypothesis and it resolves most cases.
Then change the country
Keep the tier that failed least badly and move to a country where the platform is well established.
Wait out any cooldown
If the platform showed a rate-limit message, no purchase helps until the cooldown expires. Fifteen to sixty minutes is typical.
Stop after three
Three clean attempts across two tiers and two countries is the point at which the obstacle is the platform, not the number.
If you are driving this programmatically, the same logic applies through the REST API: poll the order, cancel it when the window has clearly passed, and reissue with a different operator before you reissue with a different country. The agent API and the MCP server expose the same cancel-and-retry loop for AI assistants.
When a one-time code is the wrong tool
Some of what looks like a delivery failure is really a mismatch of tool and task. A one-time number exists for twenty minutes and accepts a single code. If the platform sends a second confirmation an hour later, or challenges you at the next login, that number is long gone and nothing will arrive — not because delivery failed, but because there is no longer a number listening.
For anything you intend to keep — an account you will log back into, a platform that re-verifies periodically, two-factor codes — rent a dedicated number for 7, 14, 30 or 90 days. It stays exclusively yours for the whole window and accepts unlimited incoming SMS from any service, with the longer windows costing less per day.
Note. Rentals are billed upfront for the whole window and unused time is not refunded, so match the window to how long you actually need to be reachable. Prices and durations are on the number rental page.
Funding is identical either way. If you have not topped up yet, the Monero payment guide walks the whole path from a funded wallet to a code on screen.
Why is my SMS verification code not arriving?
In most cases the platform never sent it. The usual reasons are that it filtered the number range as VoIP and dropped the message silently, that it does not operate in the country you chose, or that you hit a rate limit on repeated requests. Moving up an operator tier to a non-VoIP number resolves the largest share of these.
How long should I wait before giving up on a code?
Two to three minutes. Typical delivery is under thirty seconds, so a code that has not appeared after a couple of minutes is very unlikely to appear at all. The number itself stays open for twenty minutes, but waiting the full window rarely changes the outcome.
Do I get my money back if the code never arrives?
Yes. The price returns to your site balance automatically when the expected SMS does not arrive before the timeout, when the number cannot be assigned, or when you cancel an active order before any SMS has arrived. Refunds go to your balance rather than back to the wallet you funded it from.
Why does the service reject the number before any code is sent?
That is a range check, not a delivery failure. The platform recognised the number or its range as one it does not accept — usually because it classifies it as VoIP, or because that number was already used for the same platform. A fresh number on a physical or premium operator is the fix.
Does a VoIP number work for WhatsApp, Telegram or Google?
Often not. Those platforms are among the stricter ones and commonly refuse app-issued ranges. Physical and premium operators are non-VoIP numbers from real mobile carriers, which is what those services expect. Starting on a higher tier is usually cheaper than two failed attempts on the cheapest one.
Should I buy another number in the same country, or switch country?
Change the operator tier first, keeping the same country — it is the cheaper test and it addresses the most common cause. Change country only if a higher tier also comes back empty, and prefer a country where the platform has a genuine user base.
The code arrived but the service says it is invalid or expired. What happened?
Almost always you requested several codes and entered one of the earlier ones. Each new request invalidates the previous code. Use the most recent message only, and avoid pressing resend repeatedly while you wait.
Can I keep the same number for a re-verification later?
Not with a one-time activation — the number is released after the code is delivered or the twenty-minute window closes. If you expect a second code, a login challenge or ongoing two-factor prompts, rent a dedicated number for 7 to 90 days instead; it keeps receiving unlimited SMS for the entire window.
Ready to receive a code?
Fund a balance in Monero or any of eight other assets, pick a country and a service, and read the SMS in your dashboard. No email, no ID, no card.