The app cheerfully reports "SMS sent," an hour passes - nothing. The default reaction is to blame the mobile carrier for "blocking messages." That's almost never it: the problem happens before the send command reaches the carrier gateway, and there's more than one cause.
After reading this you'll know where the code actually gets stuck - Meta, the number, or international routing - and what to do without turning retries into a new block.
Mistake: "several activations in a row from one IP - that's the cause, just change internet or use airplane mode."
Fix: switching networks does help some operators in practice, but that's not a confirmed Meta mechanism - it's a working community hypothesis. What's officially confirmed is that repeated code requests can trigger temporary limits - cooldown or rate limit - while the specific role of IP, ASN, or network type isn't disclosed. See too many attempts for more.
Start with what you can rely on without caveats.
Repeated code requests can trigger temporary limits - verification lock or rate limit. The recommendation is simple: don't keep resending; wait out the period. Meta partner materials mention waiting at least 10 minutes before retrying; after many requests the limit can stretch to 24 hours or longer.
The verification code is 6 digits, with two official delivery methods - SMS and voice call. If one fails, switching to the other is a built-in option, not a workaround.
Confirmed reasons for missing codes also include: inability to receive international SMS or calls on the number, carrier restrictions, wrong number format, issues with virtual numbers, the number already registered on WhatsApp, and recent account deletion on the same number. That's a wider picture than "it's the IP."
Key idea: "app says SMS sent" ≠ "SMS actually reached the carrier gateway." Practitioners report the UI sometimes shows success when the request stopped earlier - common observation, not a confirmed Meta mechanism, but it explains why blaming the telco first is wrong diagnosis.
The chain roughly goes: app UI → Meta server → international SMS aggregator (e.g. Twilio or Infobip) → local carrier gateway → device. The code can stall at any step; you can't legally see which - no open moderation logs for users or integrators.
A marketer set up three client accounts over office Wi-Fi. The first code arrived instantly. On the second and third phones the app said "Code sent" but no SMS for an hour. After switching to LTE and restarting the apps, codes for the remaining numbers arrived in 20 seconds. One practice case, not universal proof - but a typical pattern: trouble after a series of requests from one network exit.
Below is community observation, not official Meta policy. Some multi-account operators report moving from office Wi-Fi to mobile data restores code delivery. Mobile data is widely seen as more reliable for mass registration than corporate Wi-Fi - industry opinion, not a documented rule.
Airplane mode sometimes helps: it forces the modem to reconnect to the cell tower, which may assign a new IP from the carrier pool. Practitioners suggest 10–15 seconds in airplane mode so the carrier DHCP can drop the old session. No confirmed mechanism that IP change clears the limit vs coinciding with timer expiry.
Regular VPN often backfires. Many commercial VPNs use IPs with low trust in Meta's security systems, and turning one on usually worsens things.
| Step | Check | If the issue is here |
|---|---|---|
| 1 | Number in correct international format | Fix format, retry |
| 2 | Number can receive international SMS/calls | Change number or plan |
| 3 | Less than 10 minutes since last request | Wait for timer |
| 4 | Many retries in a row | Stop requests, wait up to 24 hours |
| 5 | SMS fails - try Voice Call | Switch delivery method |
| 6 | VPN or server proxy in use | Try without them |
| 7 | Registration over office Wi-Fi | Switch to mobile data |
Main rule: don't hammer "Resend code" dozens of times. It doesn't speed things up - it can extend the limit.
"No SMS - the mobile carrier is at fault." Wrong in most cases. The limit is usually on Meta's side, the number itself, or international routing - not the local telco.
"Change IP and the code arrives instantly." Not a confirmed mechanism. Some operators report improvement after a network change; no guarantee.
"VPN always fixes it." Often the opposite - commercial VPNs can worsen things due to IP reputation.
"You can keep tapping Resend forever." No. Retries can increase, not decrease, wait time.
"Official WABA numbers hit the same problem." No. Business API onboarding goes through Business Manager, sometimes landline robot-call verification - the logic here doesn't apply directly.
No published trust limits - how many registrations per mobile IP before a temporary cap. No visibility into which chain step failed in your case: Meta server, international aggregator, or local carrier. Figures like "blocked after three requests in ten minutes" or "datacenter IPs always blocked" are forum observations that may not match yours.
Before blaming the network, run the checklist: number format, international SMS capability, time since last request. Only after ruling out basics, switch to mobile data or Voice Call - once, not in a burst of retries.
Practical rule:
"SMS sent" in the UI doesn't guarantee SMS was actually sent: check the number and timer first, then change networks.