First, find which of the five stages you are stuck at
"Registration failed" is one phrase for five different stages, each with its own error family. Adding the number, verifying it with a code, clearing display name review, registering it with a two-step PIN, and moving it from somewhere else all fail differently, and almost every wasted hour comes from fixing the wrong stage.
Last verified: August 2026 against the Meta for Developers WhatsApp Business Platform (Cloud API) documentation. Error codes and strings quoted are the literal values the platform returns.
Pull the number's current state before doing anything else:
GET https://graph.facebook.com/v21.0/{phone-number-id}
?fields=display_phone_number,verified_name,name_status,code_verification_status,status,quality_rating,platform_type
&access_token={token}| Stage | What it looks like | Field that tells you | Section |
|---|---|---|---|
| Adding the number | WhatsApp Manager says the number is already in use, or rejects it outright | Number never appears, or appears with no ID | 2, 3 |
| Verifying ownership (OTP) | Code never arrives, or verify fails | code_verification_status is NOT_VERIFIED or EXPIRED | 4 |
| Display name review | Name shows as declined or pending | name_status is DECLINED, PENDING_REVIEW or EXPIRED | 6 |
| Registering for Cloud API | /register returns a 1330xx error | status not CONNECTED | 5, 7 |
| Migrating from an app or another provider | Loops between the stages above | Mixed | 8 |
Note that platform_type tells you whether the number is on CLOUD_API, ON_PREMISE or NOT_APPLICABLE - a number that you think is on the Cloud API but reports otherwise is a migration problem, not a registration one. For errors that happen after the number is live and sending, our WhatsApp API error-codes guide is the companion to this one; this guide stops at the moment the number reports CONNECTED. Every code quoted below also has its own page in the WhatsApp error-code directory.
1. Phone verification and business verification are different things
This distinction resolves a surprising share of "my number is verified but registration still fails" reports. There are two separate verifications, owned by two different parts of Meta, and passing one says nothing about the other.
| Phone number verification | Business verification | |
|---|---|---|
| What it proves | You control this phone number | Your company is a real legal entity |
| How | One-time code by SMS or voice call to the number | Documents uploaded in Business Manager > Security Center |
| Where it shows | code_verification_status: VERIFIED on the phone number | Business Manager verification status |
| Required for | Registering the number at all | Higher messaging limits, official business account, more phone numbers |
| Typical time | Minutes | Days to weeks |
You can register and start sending with phone verification alone. An unverified business is limited in how many business-initiated conversations it can open per day (the WhatsApp messaging-limit tiers) and how many numbers it can add, and its display name is subject to closer review - but "registration failed" is almost never a business verification problem. Conversely, a fully verified business with a number that never completed its OTP will fail at /register with 133006, covered in section 5. Meta's Cloud API getting-started guide walks the phone side; the business side lives in the Business Help Center.
2. "Number already in use": the WhatsApp app is still holding it
A phone number can exist in exactly one place: the WhatsApp consumer app, the WhatsApp Business app, one WhatsApp Business Account on the API, or the On-Premises API. When you try to add a number that is active somewhere else, WhatsApp Manager refuses it - the wording varies by surface, but it says the number is already registered or in use on WhatsApp. The number has not been verified; it has not even been added.
The cause is nearly always that the number is still logged into the WhatsApp or WhatsApp Business app on a phone somewhere - often a phone in a drawer, or a SIM that was moved to a new device years ago and auto-restored. The fix is to release it from the app:
- On the phone where that number is active, open WhatsApp, go to Settings > Account > Delete my account, and confirm with the number. Export any chats you need first - they do not come with you.
- Wait. Meta's guidance is a few minutes before the number can be re-used; in practice, if the account was long-lived or recently re-registered, give it longer. Retrying every thirty seconds during this window can also trip
133016(section 7). - Add the number in WhatsApp Manager and verify it.
If the number is in use by another WhatsApp Business Account on the API - a previous agency, a trial with another provider - deleting the app account does nothing, because there is no app. That is a migration, covered in section 8. And if you were hoping to keep using the Business app on the same number while also using the API, see the coexistence note in the same section: outside that specific path, the rule is one home per number.
3. Numbers that cannot be registered at all
Some numbers will never pass, and it is better to know before spending an afternoon on OTPs. WhatsApp needs a number that can receive either an SMS or an international voice call, and that is not already tied to WhatsApp in a way you cannot undo.
- Short codes are not supported.
- Landlines work only through the voice-call method, and only if the line actually rings through to a human or a place you can hear the code - IVR menus, auto-attendants and voicemail-first lines usually eat the call. Ask the carrier to disable the IVR temporarily, or use the direct line.
- Toll-free and premium numbers are hit and miss; many cannot receive SMS and some reject international calls, which is how the code arrives.
- Numbers from countries or territories Meta does not serve are rejected outright. Meta publishes the list of where the WhatsApp Business Platform is unavailable; if your number's country code is on it, no amount of retrying helps.
- Numbers previously banned on WhatsApp - for spam, for policy violations on the consumer app - generally cannot be registered on the API either. If the number has a history, check it before you build on it; our guide to a restricted WhatsApp Business Account covers what Meta looks at.
One more silent blocker: a WhatsApp Business Account can only hold a limited number of phone numbers until the business is verified. If the Add button in WhatsApp Manager is greyed out rather than failing, that is the limit, not a registration error.
4. The verification code never arrives, or is rejected
Verification is two calls. Request the code, choosing SMS or voice and a language for the message:
POST https://graph.facebook.com/v21.0/{phone-number-id}/request_code
?code_method=SMS&language=en_US
&access_token={token}Then submit what you received:
POST https://graph.facebook.com/v21.0/{phone-number-id}/verify_code
?code=123456
&access_token={token}A wrong or expired code fails with 136025, whose title in Meta's error reference is Verify code error. Codes expire quickly and a fresh request invalidates the previous one, so the classic failure is two people on the team both requesting codes and one of them typing the older one.
When nothing arrives
| Situation | Why | Do this |
|---|---|---|
| SMS requested, nothing after 5 minutes | Carrier filtering international A2P SMS; number is a landline; DND registration | Request again with code_method=VOICE |
| Voice requested, phone never rings | IVR, call screening, or the line rejects international callers | Disable IVR, whitelist international, or use SMS |
| Request accepted but no new code after several tries | Per-number request limit reached | Stop. Wait several hours before the next attempt - repeated requests extend the cooldown |
| Code arrives on a phone running WhatsApp | The number is still registered in the app | Section 2 first, then verify |
| Every code is rejected | Older code typed after a newer request; or typing the WhatsApp app's 6-digit login code instead of the Business Platform one | Use only the most recent code, from the Cloud API request |
Meta rate-limits how many codes a number can request in a window. After a burst of requests the API stops sending without a clear error, and the only remedy is time. Make one request, wait the full few minutes, and only then switch methods.
5. Registering: the two-step verification PIN errors (133005 to 133010)
Verification proves you own the number. Registration attaches it to the Cloud API so it can send and receive. That is one call, and it always carries a six-digit two-step verification PIN:
POST https://graph.facebook.com/v21.0/{phone-number-id}/register
{
"messaging_product": "whatsapp",
"pin": "123456"
}If the number has never had two-step verification, this call sets the PIN. If it has - because it was previously registered, or came from the Business app or On-Premises with two-step enabled - the PIN must match. That is where the 1330xx family comes from:
| Code | Title in Meta's reference | What it means | Fix |
|---|---|---|---|
133005 | Two step verification PIN mismatch | The number already has a PIN and you sent a different one | Find the original PIN (see section 7), or reset it |
133006 | Phone number re-verification needed | The OTP step was never completed, or expired | Back to section 4: request and verify a code, then register |
133008 | Too many two step verification PIN guesses for this phone number | You have been guessing | Stop for several hours; guessing faster extends the lockout |
133009 | Two step verification PIN was entered too quickly | Rate limit on attempts, even if one would have been right | Wait, then try once with the correct PIN |
133010 | Phone number not registered | You called a messaging endpoint before registering, or after deregistering | Run /register successfully first |
Two things people get wrong about the PIN. First, it is not the OTP - it is a PIN you choose and that persists on the number; sending the six-digit verification code as the pin produces 133005 if a PIN already exists. Second, it is not the business verification. Both are covered in the Cloud API registration reference, which is the page to keep open during this stage.
After a successful registration the response is {"success": true} and the phone number's status moves to CONNECTED. If you need to change the PIN later, you do it on the registered number with POST /{phone-number-id} and a pin body - and you should, the moment the number goes into production, because a PIN that only one departed contractor knew is the most common reason section 7 exists.
6. Display name rejected, pending or expired
The display name is the name customers see, and Meta reviews it against the display name guidelines. Its state is in name_status:
name_status | Meaning | What to do |
|---|---|---|
APPROVED | Live | Nothing |
AVAILABLE_WITHOUT_REVIEW | Accepted automatically - usually because it matches a verified business | Nothing |
PENDING_REVIEW | In Meta's queue | Wait; typically hours to a couple of days |
DECLINED | Rejected against the guidelines | Change it and resubmit |
EXPIRED | Approved name lapsed, usually after a long-unregistered period | Submit again |
NONE | No name submitted | Submit one |
The usual rejection causes, in rough order: the name does not match the business's own website and social profiles; it is a generic term ("Support", "Shop", "Deals"); it is all capitals or stuffed with punctuation and emoji; it includes "WhatsApp", a URL or a phone number; or it is a person's name for what is presented as a company. A name that is your brand but not obviously tied to you - a sub-brand, a campaign name - gets declined until business verification ties it back.
A display name in DECLINED does not stop registration on the Cloud API; the number can still register and send while you fix the name. It does stop the On-Premises API, which needs the certificate that WhatsApp Manager issues only after the name is approved - the base64 string you pass as cert (historically called the vname certificate). If you are on On-Premises and registration complains about the certificate, that is a display-name problem wearing a different hat. Cloud API does not use the certificate at all, which is one of several reasons Meta steers new setups there.
7. Forgotten PIN, deregistration loops and the waiting periods (133015, 133016)
The hardest version of this problem: the number is verified, the display name is fine, and /register returns 133005 because a PIN exists and nobody knows it. Three things to try, in order.
- Find where the PIN came from. If the number was on the WhatsApp Business app, it is the two-step PIN set in that app. If it was on the On-Premises API, it is the
pinfrom the original/v1/accountcall. If it was registered on Cloud API before, it is whatever the previous engineer or provider sent - check their handover notes or ask the BSP. - Change or turn it off in WhatsApp Manager. An admin of the WhatsApp Business Account can open the phone number's settings, find Two-step verification, and update or disable it. This works while the number is in a state WhatsApp Manager can manage; it is the route to take before the number leaves its current home, not after.
- Wait out the reset. If the number is stuck unregistered with an unknown PIN, Meta imposes a waiting period before the PIN can be reset or bypassed. The duration is not something to plan a launch around - assume days, not hours, and use the time to move the PIN into a shared secret store.
Deregistration, and the errors around it
To move a number, or to clean up a half-finished setup, you deregister it:
POST https://graph.facebook.com/v21.0/{phone-number-id}/deregisterThe errors that cluster here:
| Code | Title in Meta's reference | What happened | Fix |
|---|---|---|---|
133000 | Incomplete Deregistration | A previous deregister did not finish | Call /deregister again, then register |
133015 | The phone number you are attempting to register was recently deleted, and deletion has not yet completed | You deleted or deregistered and came straight back | Wait at least five minutes, then retry once |
133016 | Registration or Deregistration failed because there were too many attempts for this phone number in a short period of time | A retry loop, or several people retrying at once | Stop all automation touching the number; wait; retry once |
133004 | Server temporarily unavailable | Meta-side transient | Retry with backoff |
The shorter cooldown, 133015, clears on its own after a few minutes. 133016 is the one that turns a small mistake into a long afternoon. Every retry resets the clock. If a deploy script calls /register on boot and the service is crash-looping, you will hit it within minutes and stay in it until the loop stops. Register once, by hand or by a job that runs once, and never on process start.
8. Migrating a number: from the Business app, from On-Premises, from another provider
Most registration failures that look mysterious are migrations that skipped a step. The three cases:
From the WhatsApp Business app to the Cloud API
The supported path since 2023: in the app, turn off two-step verification (Settings > Account > Two-step verification) so the API can set its own PIN; make sure the app is up to date; then add the number in WhatsApp Manager or through Embedded Signup and complete the OTP. Chat history does not move - back it up in the app first. If the migration flow is not offered, or keeps failing on the "number in use" check, fall back to the older route: Delete my account in the app, wait, then add the number fresh (section 2). Meta has also been rolling out coexistence, where a Business app number can additionally be connected to the Cloud API through Embedded Signup and keep working in the app; it is offered in-flow when your account is eligible, and it is the only path where "both" is a real answer.
From the On-Premises API
Meta's On-Premises to Cloud migration guide is the authority. The order matters: deregister from On-Premises (the DELETE /v1/account call) before calling Cloud /register, and use the same two-step PIN the number had on On-Premises. Templates and the display name carry over because they belong to the WhatsApp Business Account, not to the hosting. Registering on Cloud while still registered On-Premises fails, and the number may go briefly dark either way - plan for a few minutes of downtime.
From another Business Solution Provider
If the number lives in a WABA owned by another provider, you need their cooperation: they disable two-step verification (or tell you the PIN) and you run the phone number migration flow in WhatsApp Manager, which moves the number into your WABA with its quality rating, messaging limit and name intact. Then you register it with a PIN of your own. Trying to add the number directly without that flow produces the "already in use" wall from section 2, because the number is still registered to the old WABA.
In all three cases the number's history comes with it: quality rating, messaging limit and any restriction. A number with a RED quality rating or a FLAGGED status does not become clean by moving - our restricted-account guide covers what to do about that, and the template rejection guide is worth reading before you submit the first template on the new hosting. Running the draft through the WhatsApp template checker first catches the formatting rejections.
9. The cryptic ones: 131000, 131045 and a number that registers but will not send
A few errors do not say "registration" but are registration underneath.
{"error":{"message":"Something went wrong","type":"OAuthException","code":131000}}131000 is Meta's generic failure. When it appears during /register or /request_code specifically, the pattern is usually one of: the number is mid-deletion from an app account, the phone number ID belongs to a different WABA than the token, or the WABA itself is in a restricted state. Retry once after a minute; if it persists, check the WABA's status in WhatsApp Manager before anything else.
131045 (Incorrect certificate) is the On-Premises certificate problem from section 6 surfacing at send time, and on Cloud API it points at a number whose registration did not complete cleanly - deregister and register again.
And the most common post-registration confusion: the number reports CONNECTED, test messages to your own phone work, and messages to anyone else fail. That is not registration. It is the 24-hour window and template rules, or the unverified-business messaging limit, and it belongs to the error-codes guide (131047, 131026, 130429). Registration is done the moment status is CONNECTED; everything after is messaging. The 131047 reference page explains the 24-hour window rule that causes most of those first failed sends.
The registration checklist, in order
- Read the number's fields (the query in the first section).
platform_type,code_verification_status,name_status,status. - Is the number free? Not in the consumer app, not in the Business app, not in another WABA. If it is, release it (section 2) or migrate it (section 8), then wait.
- Is the number eligible? Not a short code, not a banned number, not from an unsupported territory (section 3).
- Verify once. One
request_code, wait, oneverify_code. Switch SMS to VOICE only after a full wait. - Register once with a PIN you have written down somewhere shared.
133005means a PIN already exists - go to section 7 before guessing again. - Confirm
status: CONNECTEDand send a test message to a phone that has messaged the number first. - Submit the display name if
name_statusis notAPPROVED, and move on - it does not block Cloud API sending.
The two habits that prevent almost everything above: never put /register in a startup path, and treat the two-step PIN as a production secret from day one. The registration problems on other channels are shallower but the same shape - the Telegram and Messenger troubleshooting guides cover their equivalents of "the token is fine, the binding is not". The error-code directory has the Telegram and Discord code sets if you need the literal strings.
Avoiding this layer altogether
Everything in this guide is account plumbing: who holds the number, which verification you are actually failing, a PIN that persists across providers, a display name queue, a deregistration cooldown. It is the same for every business that connects a number, and none of it is the conversation you want to have once the number is live. A managed platform owns that layer so these errors do not land on you: with Conferbot's WhatsApp integration the number is connected through Meta's Embedded Signup, the verification, registration and PIN handling happen inside that flow, and you move straight to building replies in the visual flow builder. If you also run Messenger or Instagram, the same connection flow covers them. You can start free to see the signup flow, and once the number is live the WhatsApp link generator gives you a wa.me link with a pre-filled message for your site and ads. If you are starting from nothing, the WhatsApp Business API setup guide covers the steps before this one. The WhatsApp API cost calculator estimates what the conversations will cost once the number is sending.
Was this article helpful?
Build and deploy in 10 minutes. No coding needed.
WhatsApp Number Registration Failed? PIN Errors, Number In Use, Every Fix FAQ
Everything you need to know about chatbots for whatsapp number registration failed? pin errors, number in use, every fix.
About the Author
The Conferbot team writes about building, deploying, and improving AI chatbots.
View all articlesRelated Articles
From the reference shelf
Fact-checked reference pages and free tools for the platform this article covers.