Onfido verification

Onfido SMS Verification Not Working? Fixes for Failed Codes

Onfido SMS verification failing? You're not alone. Most verification screens won't tell you why a number was rejected or a code never arrived โ€” they just fail. This guide breaks down the 7 fixes that actually work, the 4 core causes behind most failures, and what each cryptic error message really means. Whether you're staring at a "phone number not accepted" error or testing Onfido's SMS flow in QA, you'll learn when to retry, when to switch numbers, and why free SMS-receive sites are a dead end. Get a working number in seconds with a clean-range temporary number โ€” no code, no waiting.

  • Works for Onfido verification globally
  • 210+ countries โ€” pick any number
  • OTP delivered in under 60 seconds
  • No monthly subscription, no personal info required
210+
Countries supported
Minutes
Typical OTP delivery
100%
SIM-free verification
24/7
Numbers available

Buy with confidence

Automatic refund if the code never arrives โ€” credited straight back to your balance, no ticket required. Refund policy.
Pay with crypto (USDT, BTC, ETH and more) or card & local methods. No card stored, no subscription, pay per code.
Questions before you buy? Our support team monitors tickets daily โ€” contact support.

What is Onfido SMS verification?

Onfido SMS verification confirms you control a phone number by sending a 6-digit OTP to that number during signup or login. With SMSPin you receive that code on a temporary virtual number online โ€” no physical SIM card needed and your production workflows stay separate.

Pick the right number

Temporary, free, or rented?

Three different products. Most people verifying Onfido once want the first one.

Why SMSPin

Everything you need for Onfido verification

No paperwork, no carrier hassle โ€” a real number ready to receive your Onfido OTP code right now.

๐Ÿ”

Keep your personal number private

Your real phone number never touches Onfido. Use a virtual number for full privacy.

โšก

OTP in under a minute

Onfido sends the SMS immediately. Your inbox refreshes in real time โ€” no delays.

๐ŸŒ

210+ countries to choose from

US, UK, Germany, India, Brazil, and more. Real, carrier-registered numbers.

๐Ÿ“ฑ

No monthly subscription, no hardware

Everything happens online. No monthly subscription to buy, no roaming, no second phone.

๐Ÿ”

Auto-refund on failure

If the OTP never arrives in 20 minutes, your credits return automatically.

๐Ÿ’ณ

Crypto-friendly billing

Top up with USDT, BTC, ETH and more via Cryptomus. No card required.

Step-by-step

How to verify Onfido online

Four steps โ€” from picking a number to a verified Onfido account.

Submit your number โ€” Onfido captures and normalizes it to international format +[country code][number].

Risk assessment happens first โ€” The number is checked against fraud databases and virtual number lists. This is where most rejections occur, before any SMS is sent.

OTP generation and delivery โ€” A 6-digit code is sent via SMS, typically within 30 seconds if carrier routing is clean.

You enter the code โ€” Onfido validates it against the generated value and its 5โ€“10 minute expiry window.

Post-validation risk check โ€” Onfido can still fail verification after a correct code if the number triggers a secondary fraud flag. That means you may need a different number entirely.

Who it's for

Is this right for you?

โœ“ Great for

When this works well

  • People keeping their personal number off Onfido
  • Freelancers setting up a separate Onfido account
  • Marketers managing multiple accounts
  • Travelers needing a local number without buying a SIM
  • Developers testing Onfido integrations
  • Anyone re-verifying after losing access to an old number
โš  Not suitable for

When this isn't the right fit

  • Spam, harassment, or policy violations
  • Permanent long-term primary numbers
  • Voice-call-only verification flows
  • Activities that violate Onfido's terms of service

SMSPin is provided for legitimate privacy and convenience use cases only. Please review Onfido's terms before use.

Trust & privacy

Your privacy is the point

๐Ÿ”’

Real carrier-registered numbers

Every SMSPin number is a legitimate, carrier-registered mobile number โ€” not a VoIP range. Onfido accepts them reliably.

๐Ÿ•ถ๏ธ

Zero personal data required

Sign up with email only. Your real number and identity stay private.

โšก

Instant inbox, no waiting

The moment Onfido sends your OTP, it appears in your dashboard โ€” pushed, not polled.

Troubleshooting

OTP not arriving? Do this

"Verification failed" โ†’ OTP was wrong or expired. Wait 15โ€“30 minutes and retry with the same number.

"Unable to verify phone" โ†’ The number is flagged as virtual, VoIP, or previously abused. Switch numbers โ€” retrying won't help.

"Too many attempts" โ†’ Onfido locks verification after multiple failures. Wait 15โ€“30 minutes before retrying.

If you see 3 consecutive failures, stop and switch to a fresh number. The same number will keep failing.

Comparison

Free vs activation vs rental

OptionWhat It DoesBest For
Free SMS sitesPublic, heavily abused numbersโŒ Avoid โ€” blocklisted by Onfido
Pay-per-useClean-range number, from $0.01/codeโœ… One-time verification, testing
RentalDedicated number, 1 dayโ€“1 monthโœ… Ongoing or multi-step verification
Format tips

Number format tips

Always use international format: +[country code][number] โ€” no leading zeros or spaces.

Match the country code to the service โ€” a US number for US-based services lowers risk scores.

Mismatched country codes raise fraud flags and increase rejection chances.

FAQ

Common questions answered

Is it legal to use a temporary number for Onfido SMS verification?+

Yes, using a temporary number for legitimate verification purposes is legal in most jurisdictions. What's not legal is using it to commit fraud, compromise account security for malicious purposes, or violate any platform's terms of service. SMSPin is not affiliated with any app or website; please follow each app's terms and local regulations.

Why does Onfido verification fail even when I enter the correct OTP?+

Onfido performs risk checks before and after you submit the code. Even with a correct OTP, a number can fail verification if a secondary fraud check flags it. This typically happens when the number was recently used or is from a known virtual range. At that point, the fix is a different number, not another retry.

What's the difference between a one-time number and a rental from SMSPin?+

A one-time number is issued for a single verification; you pay per code received (from $0.01), and the number is released afterward. A rental gives you a number for a set window (1 day up to 1 month) for scenarios where you need ongoing access, like account recovery or repeated verification steps.

What should I NOT use a temporary number for?+

Never use temporary numbers for banking, government identification, crypto exchange withdrawals, or any account where losing access would be financially or legally damaging. Temp numbers are great for marketing-avoidance, trials, app testing, and privacy, not for accounts that store sensitive data you need to recover long-term.

My Onfido code never arrives. Should I keep retrying with the same number?+

If the error is number-related (not accepted, unable to verify), retrying will never work; switch numbers. If the error is OTP-related (wrong code, expired), wait 15โ€“30 minutes and request a new code on the same number. If you've failed 3 times, switch numbers to reset the failure counter.

Can I automate Onfido SMS testing with SMSPin's API?+

Yes. SMSPin's developer API lets you programmatically request a phone number, poll for incoming OTP messages, and retrieve the verification code, all without manual steps. This makes it possible to build fully automated Onfido verification test suites in CI/CD pipelines.

Why does my Onfido verification work on one device but fail on another?+

Onfido's risk engine considers the phone number, device fingerprint, and IP address together. Switching devices can reset the device-based risk score, but the number-based rejection will persist. If the same number fails on multiple devices, the number itself is the problem.

Read the full Onfido SMS verification guide

Onfido SMS Verification Not Working? 7 Fixes for Failed Codes and Rejected Phone Numbers

Compliance line: SMSPin is not affiliated with any app or website. Please follow each app's terms and local regulations.

Who this guide is for: Maybe you're staring at an Onfido verification screen that won't budge. Or you're a developer trying to test Onfido's SMS flow in QA. Perhaps you're just someone who'd rather not hand over their personal SIM to yet another app. If any of that sounds like you, keep reading.

When to use it: Pull this guide out when you're actively fighting a failed code, a rejected number, or an SMS that never shows up.

When NOT to use it: If you're dealing with banking or government identity verification, temporary numbers are rarely the right call. And obviously, don't use this to attempt fraud or compromise account security. That's not what we're about.

Quick Answer:

  • Fix 1: Check if your number is flagged. VoIP and virtual numbers get rejected outright; switch to a clean-range number.

  • Fix 2: Verify your number format. Use +[country code][number] with no leading zeros.

  • Fix 3: Disable Wi-Fi calling. It routes SMS over VoIP and breaks delivery.

  • Fix 4: Check your spam folder. Android and iPhone both hide unknown-sender messages.

  • Fix 5: Wait 15โ€“30 minutes before retrying. OTP expiry and lockout windows cause most "failed" states.

  • Fix 6: Switch numbers after 3 failures. The same number will keep failing; you need a fresh one.

  • Fix 7: Use a temporary SMS service with clean number ranges. Free SMS-receive sites are blocklisted; paid providers rotate pools.

Why Is Onfido SMS Verification Not Working? The 4 Core Causes

Onfido SMS verification usually fails for one of four reasons: your number is flagged as VoIP or virtual, the carrier is blocking the shortcode, the number was recently used for another account, or a regional routing issue is delaying the OTP. Here's the annoying part: most "verification failed" screens in Onfido won't tell you which one you're hitting.

So you've got to troubleshoot systematically. Here's what's actually happening behind the curtain:

  • Number type rejection: Onfido's verification layer flags numbers tied to VoIP services or known virtual number ranges. This is the #1 cause of "phone number not accepted" errors.

  • Carrier shortcode blocking: Some carriers block SMS shortcodes from identity verification services, especially on prepaid plans or in certain regions.

  • Recent usage: If the number was used for an Onfido verification in the past 30 days, the system may reject it to prevent duplicate accounts.

  • International routing delays: OTPs sent to numbers in certain countries can take 2โ€“5 minutes to route; if you give up before the code arrives, it looks like a failure.

Here's the key insight: Onfido's risk engine doesn't just verify a code; it verifies the number itself. That's why understanding which failure mode you're in matters more than unthinkingly retrying.

Need a quick path to a working number? Receive SMS verification codes online; a fresh number can be issued in seconds.

Onfido Verification Failed SMS: What the Error Messages Actually Mean

Onfido's SMS verification errors are intentionally vague. They don't expose the underlying security logic that would make it too easy to game the system. But the common messages do map to a few known states. Let me translate them for you:

  • "Verification failed" โ†’ The OTP you entered was wrong, or the code expired before submission. Onfido codes typically expire in 5โ€“10 minutes.

  • "Unable to verify phone" โ†’ The number is flagged in Onfido's risk engine, likely as virtual, VoIP, or previously abused.

  • "SMS not sent" โ†’ The SMS gateway couldn't route to your carrier. This is different from a rejection; it's a transport failure.

  • "Too many attempts" โ†’ Onfido locks verification after multiple failed OTP entries. Wait 15โ€“30 minutes before retrying.

The takeaway here is simple: if you retry with the same number and the same error persists, the fix isn't another retry; it's a different number type. A flagged number will stay flagged.

Onfido Phone Number Not Accepted: Why Your Number Gets Rejected

Onfido rejects phone numbers for reasons you can't see. The number might be in a known virtual number range. It might have been used for too many verifications. It might be associated with a VoIP provider. The rejection happens before any SMS is sent, so you'll never even receive a code.

Common rejection reasons:

  • VoIP and virtual number databases: Onfido's provider checks numbers against known VoIP ranges. Google Voice and similar services are typically blocked outright.

  • Usage history: Numbers that have been used for multiple verifications across different services accumulate a "risk score" that triggers rejection.

  • Country-specific blocks: Certain country codes have higher fraud rates, so Onfido rejects entire number ranges from those regions.

  • Publicly documented test ranges: If you're in QA, your test numbers may be flagged because they're from publicly documented test ranges.

What to do about it: don't keep re-entering the same number. If you're getting "phone number not accepted," switch to a different number from a private, clean pool. This is where temporary SMS verification numbers from a reputable provider become genuinely useful; they maintain number ranges that stay off public blocklists.

How Does Onfido SMS Verification Work? A Step-by-Step Breakdown of the OTP Flow

Onfido SMS verification follows a standard OTP flow on the surface, but it adds risk checks before and after sending the code. Understanding the full pipeline helps you diagnose where verification breaks.

Step 1 Number submission: Onfido captures your number and country code, then normalizes it to an international format. If you enter a local format (e.g., 555-1234 instead of +1 555-1234), the system may reject it outright.

Step 2ย  Risk assessment: The number is checked against internal fraud databases, public virtual number lists, and historical usage patterns. This is where most "phone number not accepted" errors happen before any SMS is even attempted.

Step 3ย  Code generation and delivery: A 6-digit OTP is generated and sent via SMS, typically within 30 seconds if routing is clean. The delivery path depends on the carrier, country, and whether the sender uses a shortcode or long code.

Step 4ย  Validation: You enter the code; Onfido checks it against the generated value and its expiry window. If the code is wrong or expired, you get "Verification failed."

Step 5ย  Post-validation risk check: This is the step most users don't know about. Onfido can still fail verification after a correct code if the number triggers a secondary fraud flag, for example, if it was recently used or matches a known abuse pattern.

The practical implication: you can enter a perfectly correct OTP and still see "verification failed." That's not a technical glitch; it's Onfido's risk engine making a second decision. When this happens, no amount of code re-entry will help. You need a different number.

Onfido Phone Verification for Testing: How to Use a Test Phone Number SMS in QA

If you're testing Onfido's SMS flow in QA, the biggest mistake is using the same test number for every scenario. Each verification attempt consumes the number's "clean slate" status; reuse causes rejections that look like product bugs but are actually just number fatigue.

Here's a better approach:

  • Don't use documented test numbers from Onfido's docs in production; those are sandbox-only and won't work against the live API.

  • Use a fresh number per test case, especially if you're testing rejection scenarios, expiry windows, or retry logic.

  • Budget for test runs: cheap SMS verification pricing starts at $0.01 per code received, so even a hundred test cases cost about a dollar.

  • Automate with an API: SMSPin's API lets you programmatically request a number and poll for incoming OTPs, making your test suite repeatable without manual intervention.

  • Logging which numbers were used for which test cases prevents accidental reuse across environments and makes debugging easier.

If you're doing quick sanity checks, Onfido's sandbox may let you skip SMS entirely. But if you're testing the real SMS pipeline, including delivery latency, carrier routing, and international formatting, you need a real number that can actually receive OTPs.

Need a test number for Onfido QA? Grab a free SMS number and check whether your flow works before spending real money. No signup fees; pay only per code received.

Onfido Sandbox Verification Code: How to Test SMS Flows Without a Real SIM

Onfido's sandbox environment gives you test credentials and documented test numbers, but there's a catch. Those test numbers only work in the sandbox API, and they don't simulate the real SMS delivery pipeline. They return predefined verification states without generating any actual SMS traffic.

What that means for testing:

  • Sandbox numbers don't test carrier routing, shortcode delivery, or international formatting, all of which fail in production.

  • If your QA checklist includes "OTP arrives within 30 seconds" or "code is in the correct format," you need real SMS delivery, which sandbox numbers can't provide.

  • A two-tier testing strategy is best: use sandbox numbers for logic testing (error handling, retry states, UI flows), then use a temporary SMS number for one round of real delivery testing before release.

The gap between sandbox and production is where most teams get burned. Sandbox passes, production fails not because the code is wrong, but because the SMS delivery path is entirely different. A single real-world test with a temporary number catches these issues before your users do.

Onfido OTP via SMS: Why Codes Arrive Late or Not at All

When Onfido sends an OTP via SMS, the code is generated instantly, but delivery can take 30 seconds to 5 minutes depending on the recipient's carrier and region. If your code never arrives, the most likely culprits are carrier shortcode blocking, international routing delays, or the number being flagged as non-deliverable.

Here's what to check:

  • Shortcode vs. long code: Onfido may send from different numbers depending on region. Some carriers block shortcodes on prepaid plans; switching to a postpaid plan or a different carrier can fix this.

  • International routing: Codes sent to numbers outside the sender's home country go through aggregators, which adds latency and failure points.

  • Silent drops: Some carriers silently discard SMS from unknown shortcodes rather than delivering or rejecting them; you see nothing at all.

  • Your phone's SMS filter: Android's spam filter and iPhone's "Filter Unknown Senders" can both hide OTP messages from your main inbox.

  • Wi-Fi calling: If enabled, Wi-Fi calling routes SMS over VoIP, which can break delivery entirely.

If you're using a temporary SMS service, you'll see the code appear on their dashboard the instant it's delivered. That instantly isolates whether the problem is delivery (you see it on the dashboard but not your phone) or your phone itself (you don't see it anywhere).

Quick Fixes to Try Right Now: Network, Settings, and Phone-Side Checks

Before you blame Onfido, run through these phone-side checks that cause most "SMS not working" issues. These take under two minutes and resolve roughly half of all Onfido SMS verification problems:

  1. Disable Wi-Fi calling: SMS delivery fails when Wi-Fi calling routes messages over VoIP. Turn it off temporarily during verification.

  2. Check spam and blocked messages: Android's Messages app and iPhone's "Filter Unknown Senders" both hide OTP messages from unknown numbers.

  3. Verify international format: Use +[country code][number] with no leading zeros or spaces that could confuse the gateway.

  4. Toggle airplane mode: This forces your phone to re-register with the carrier, clearing temporary SMS routing glitches.

  5. Restart your phone. Clears carrier message queues that can delay or drop incoming SMS.

  6. Check your signal: If you're on Wi-Fi only with no cellular signal, SMS can't arrive at all.

If these don't work, move to the next step: deciding whether to retry or switch numbers.

Onfido SMS Verification Troubleshooting: When to Retry vs. When to Switch Numbers

The most important troubleshooting decision is knowing when a retry will help versus when it's a waste of time. Here's the rule of thumb:

Retry conditions: If the error is OTP-related (incorrect, expired, too many attempts), wait 15โ€“30 minutes and retry with the same number. The lockout window will reset, and a fresh code can work.

Switch conditions: If the error is number-related (not accepted, unable to verify), switch numbers immediately. Retrying the same number will always fail because the number itself is flagged.

The 3-strikes rule: If you get three consecutive failures on one number (any combination), stop and switch to a fresh number. Continuing to retry is wasting time.

Track your error messages: The message determines your action. "Verification failed" โ†’ wait and retry. "Phone number not accepted" โ†’ switch numbers now.

Keep a spare ready: Temporary SMS providers issue numbers instantly, so you always have a fallback without waiting. Tests show this approach resolves verification failures dramatically faster than dead-end retry loops.

Tried every fix and Onfido still won't accept your number? Get a fresh number from a clean range in under 30 seconds. If no code arrives, we automatically refund you.

Using a Temporary Number for Onfido SMS Verification: What Works and What Doesn't

Temporary numbers can absolutely work for Onfido SMS verification, but only if they come from a provider that maintains clean number ranges. Here's the honest breakdown:

What doesn't work: Free SMS-receive websites. Their numbers are heavily abused and widely flagged, and Onfido's risk engine catches them quickly. If you're using a free service that displays incoming messages publicly, expect rejection before the OTP is even sent.

What works: Paid verification platforms that rotate numbers and maintain private pools. SMSPin removes numbers from the pool after high usage, keeping ranges cleaner and less likely to be blocklisted.

Pay per use pricing: With plans starting at $0.01 per code received, a verification attempt costs virtually nothing, even if the number gets rejected before delivery.

Automatic refunds: If no code arrives, SMSPin automatically refunds the number cost; you're not paying for failed attempts. This de-risks the entire verification process.

Rental option: If your Onfido process requires a number to stay valid for days (e.g., repeated verification over a week), rent a phone number for verification for 1 day up to 1 month. This covers scenarios where one-time numbers aren't enough.

The bottom line: temporary numbers work for Onfido verification when you use a provider that maintains clean ranges and refunds failures. Free services are a false economy; they fail, and you waste time anyway.

How to Prevent Onfido SMS Verification Errors in Future Sign-Ups

Most Onfido SMS verification failures are preventable if you follow a few ground rules:

  • Never reuse numbers across Onfido verifications; each attempt consumes the number's clean status, and reuse triggers flags.

  • Avoid free SMS-receive sites entirely; those numbers are on every risk engine's blocklist.

  • Check your carrier's SMS capability: some prepaid plans, data-only eSIMs, and new carrier activations don't support SMS receipt.

  • Match the country code: if you're verifying for a service in the US, use a US number. Mismatched country codes raise risk scores.

  • Protect your personal SIM: using your real number for verifications puts it on marketing lists and exposes it to data breaches. If you do this frequently, a dedicated temporary number is the privacy-preserving choice.

For teams doing WhatsApp phone verification help or similar flows, the same rules apply: fresh numbers, clean ranges, and no reuse.

Onfido Testing SMS Flow: A QA Checklist for Developers and Testers

If you're building a product that uses Onfido's verification, your QA checklist needs to cover more than "does the code arrive." Here's a comprehensive test plan:

Test case 1ย  Valid number: Verify a clean temporary number receives the OTP and verification completes. This is your happy path; confirm it works at least once per release.

Test case 2ย  Rejected number: Confirm your app handles the "phone number not accepted" error gracefully: no crash, a clear message to the user, and a path forward.

Test case 3ย  Expired OTP: Wait past the expiry window and confirm the user gets a clear "code expired" message and can request a new one. Most Onfido codes expire in 5โ€“10 minutes.

Test case 4ย  Network interruption: Disable SMS delivery mid-flow and confirm your app shows a timeout state rather than hanging indefinitely.

Test case 5ย  Lockout behavior: Trigger "too many attempts" and verify your app communicates the 15โ€“30 minute lockout clearly.

Test case 6ย  Country-specific routing: If you support multiple countries, test with numbers from at least 2โ€“3 different regions.

Automation with SMSPin API: Request a number, trigger Onfido verification, poll SMSPin's API for the OTP, submit it, and assert the result all programmatically. This makes your test suite fully repeatable and CI/CD-ready.

For more details on SMS flow testing, check out our guide on receiving SMS verification codes and UK numbers for region-specific testing.

How to Prevent Onfido SMS Verification Errors in Future Sign-Ups

Most Onfido SMS verification failures are preventable if you follow a few ground rules: use a number that's never been used for Onfido before, avoid numbers associated with public SMS-receive sites, and verify your phone is SMS-capable before starting. Here's how to make that a habit:

For individual users:

  • Keep a dedicated temporary number for one-time verifications; it stays off marketing lists and keeps your personal SIM private.

  • If you're signing up for trials or new services, use a number you don't mind losing access to later.

  • Set a rule: if it's a service you'll need long-term (banking, email, government), use your real number. If it's a trial, a game, or a one-time signup, use a temporary number.

For developers and testers:

  • Automate fresh number generation into your CI/CD pipeline so every test run gets a clean number.

  • Never commit test numbers to version control; they'll get flagged and reused.

  • Use country-specific numbers when testing region-specific verification flows.

For privacy-conscious users:

  • Your real number is linked to your identity. Every verification that uses it adds to a data trail that can be sold or breached.

  • Temporary numbers from reputable providers break that link; even if the service gets hacked, your real number isn't in the database.

SMSPin is not affiliated with any app or website. Please follow each app's terms and local regulations. Temporary numbers are for legitimate verification, privacy, and testing, not for fraud, abuse, or avoiding platform rules.

Key Takeaways

  • Onfido SMS verification failures fall into two categories: number-based (rejection, inability to verify) and OTP-based (wrong code, expired, too many attempts). The fix for each is different.

  • Number-based failures never resolve with retries; you must switch to a fresh number from a clean range.

  • Onfido's risk engine blocklists free SMS-receive sites. Paid providers that rotate numbers work because they stay off public blocklists.

  • Phone-side issues (Wi-Fi calling, spam filters, signal loss) cause a surprising number of failures; check these before blaming Onfido.

  • For developers, a two-tier testing strategy (sandbox + real SMS) plus API automation eliminates most production verification surprises.

Need a number that lasts for ongoing verification or multiple steps? Rent a dedicated number for a day, a week, or a full month and keep your personal SIM private.

Compliance note: SMSPin.io is not affiliated with any app, website, or third-party platform. Please follow each platformโ€™s terms and local regulations.


Ready to verify Onfido
without exposing your personal number?

Get a virtual number in under 2 minutes. No monthly subscription, no hassle, no privacy compromise.

Last updated September 17, 2026