Do You Actually Need Meta’s Approval to Send WhatsApp Messages via API?

·9 min read
Do You Actually Need Meta’s Approval to Send WhatsApp Messages via API?

Imagine you run an online clothing brand in Lahore or a logistics startup in Bangalore. Every time a customer places a Cash on Delivery (COD) order, you want to send an automated WhatsApp message to confirm their delivery address. You find a Python script on GitHub, hook up a cheap gateway, and it works perfectly for three days. Your confirmation rates shoot up. You are happy.

On the fourth day, you wake up to find your customer support number permanently banned. Your chat history is gone, your customers get dead silence when they message you, and your team is panicking. You try to register the number again, but WhatsApp tells you the number is no longer allowed to use their service.

Now you are left wondering: do you actually have to go through Meta’s official, bureaucratic approval process to run an API, or is there a way to bypass it without losing your business number?

Let's look at the reality of how these systems work in India and Pakistan, what actually requires approval, and which path makes sense for your business.

The Direct Answer: Yes and No

Whether you need Meta's approval depends entirely on which of the two technical paths you choose to send your messages.

If you use the Official Meta Cloud API (or a Business Solution Provider like Twilio or 360dialog), then yes, you absolutely need Meta’s approval. You must register your business, verify your phone number with Meta, and submit your message templates for automated review before you can send a single notification.

If you use an Unofficial QR-Code API, then no, you do not need Meta’s approval. You scan a QR code with your physical phone, just like logging into WhatsApp Web, and use an external gateway to send messages. Meta does not review your templates, and they do not verify your business identity. But if you do this incorrectly, Meta's automated anti-spam algorithms will flag your account and ban your number within hours.

Here is an honest, side-by-side comparison of both approaches based on real-world usage.

FeatureOfficial Meta APIUnofficial QR-Code API
Meta Approval Required?Yes (for templates and business setup)No
Setup Time1 to 3 days (depending on Meta Business Manager)5 minutes
Risk of Number BanNear zero (unless you violate commerce policies)High (requires strict rate-limiting and opt-in)
Message CostPay-per-conversation fee to MetaFlat monthly subscription to the gateway
Template RestrictionsStrict. No hard-selling, no spammy languageNone. Send any text, image, or document
System Stability100% stable. Meta's own serversCan break when WhatsApp Web updates its code

What Does Meta Actually Approve on the Official Route?

If you choose the official route, you do not need a human being at Meta to manually review your business before you send your first message. Meta has made the onboarding process much faster than it used to be. Today, you can start in "Unverified Trial Mode" and send up to 250 business-initiated messages per day. However, to scale past this limit, you must go through their automated approval systems.

1. Business Portfolio Verification

Meta wants to know you are a real business. If you are in Pakistan, they will ask for your National Tax Number (NTN) registration certificate, incorporation documents, or utility bills matching your business address. If you are in India, they will ask for your GST registration, Partnership Deed, or IEC certificate. If you are a freelancer running an unregistered operation, you will struggle to get verified here.

2. Phone Number Quality Rating

You cannot just use any active number. The number you use for the official API must be clean. It cannot be active on the regular WhatsApp app on your physical phone at the same time. If it is, you must delete your WhatsApp account from your phone first before registering it with the API. This is a common point of confusion. To understand this process fully, read our guide on which phone number you should choose for the WhatsApp API.

3. Message Templates

This is where most developers get frustrated. With the official API, you cannot send a custom, free-form message to a customer if it has been more than 24 hours since they last messaged you. You must use a pre-approved template. Meta categorizes these into three buckets:

  • Utility: Order confirmations, shipping updates, or billing alerts.
  • Authentication: One-time passwords (OTPs) for logins.
  • Marketing: Promotional offers, discount codes, or abandoned cart reminders.

If you try to send a marketing message under the guise of a utility message to save money (since utility rates are cheaper), Meta’s automated system will reject your template. If you repeatedly submit rejected templates, your account quality rating will drop, and your sending limits will be restricted.

How the Unofficial QR-Code Route Bypasses Approval

If you cannot or do not want to deal with Meta’s paperwork, you can connect your WhatsApp number to an API using a QR code. This method uses software to run a headless browser instance of WhatsApp Web on a virtual server.

When your server calls the API, the gateway translates your JSON payload into actions on that virtual browser. To Meta, it looks like you are simply typing a message on your computer. Because you are using the standard WhatsApp Web protocol, you do not need Meta Business Suite, you do not need to register a developer app, and you do not need to submit templates for approval. You can send an image, a PDF, or a block of text instantly.

But this freedom comes with a catch. Because Meta is not monitoring your templates pre-delivery, they monitor your behavior post-delivery. If you send 300 messages in 10 minutes to people who have never saved your number, Meta's automated spam filters will catch you. Your physical phone will suddenly log out, and you will see the dreaded "This account is not allowed to use WhatsApp" screen. To prevent this, you must learn how to stop getting banned and run a WhatsApp API without losing your number.

How to Set Up the Official Meta API (Step-by-Step)

If you decide that stability is your priority and you want to go the official route, here is the exact technical path to get approved and send your first message.

Step 1: Create a Meta Developer App

Go to the Meta for Developers dashboard (developers.facebook.com) and log in with your personal Facebook account. Click Create App, select Other, and then choose Business as the app type. Give your app a name and link it to your Meta Business Portfolio.

Step 2: Add WhatsApp to Your App

On your app dashboard, scroll down to the list of products and click Set Up under the WhatsApp section. Meta will ask you to accept their terms and select your Meta Business Account. Once done, they will assign you a temporary phone number and a test WhatsApp Business Account ID to play with.

Step 3: Register Your Real Phone Number

Under the WhatsApp setup menu, go to API Setup, scroll down, and click Add Phone Number. Enter your display name (this must match your business branding, or Meta will reject it), select your time zone, and enter your phone number. Meta will send a verification code via SMS or voice call to that number. Enter the code to link it.

Step 4: Generate a Permanent Access Token

The developer console gives you a temporary access token that expires in 24 hours. Do not use this in your production code. You must go to your Meta Business Suite, navigate to Users > System Users, create a new System User, assign them the "Admin" role, and generate a permanent access token with the whatsapp_business_messaging permission.

Step 5: Submit a Message Template for Approval

Navigate to the WhatsApp Manager inside your Business Suite. Go to Message Templates and click Create Template. Let's say you want to send a verification code. Select the Authentication category, name your template otp_verification, and add your body text: Your verification code is {{1}}.

Click submit. Meta's automated system will analyze the template. For standard OTP and utility templates, approval usually takes less than two minutes. Once approved, you can call their endpoint using a POST request like this:

POST /v18.0/YOUR_PHONE_NUMBER_ID/messages HTTP/1.1
Host: graph.facebook.com
Authorization: Bearer YOUR_PERMANENT_ACCESS_TOKEN
Content-Type: application/json

{
  "messaging_product": "whatsapp",
  "to": "923001234567",
  "type": "template",
  "template": {
    "name": "otp_verification",
    "language": {
      "code": "en_US"
    },
    "components": [
      {
        "type": "body",
        "parameters": [
          {
            "type": "text",
            "text": "482910"
          }
        ]
      }
    ]
  }
}

Critical Mistakes to Avoid with Meta’s Approval Process

Having set these systems up for dozens of clients, we see the same expensive mistakes repeated constantly. If you want to avoid service interruptions, keep these rules in mind.

  • Hardcoding the 24-hour temporary token: We have seen developers build entire notification systems only to have them break the next day because they used the temporary token from the developer console instead of generating a permanent system user token.
  • Using a number that is active on your personal phone: If your customer support team is currently using a physical Android phone with the standard WhatsApp Business app to chat with customers, do not register that same number for the Official Cloud API. The moment you do, the physical app will log out, and you will lose your chat history. You must manage your API chats using a custom-built dashboard or a third-party inbox tool.
  • Misclassifying templates to save money: Meta's review algorithms are smart. If you try to sneak a product pitch into a template labeled "Utility" to pay the lower utility rate, Meta will reject it. If you keep doing it, they will flag your account for policy violation.
  • Ignoring the opt-out mechanism: If you send marketing templates without a clear "Reply STOP" button, users will click the "Block" or "Report" buttons on their phones. If your block rate exceeds 3% of your total delivered messages, Meta will automatically downgrade your phone number's quality rating, which limits your daily sending capacity.

Frequently Asked Questions

Can I send OTPs without Meta’s template approval?

If you use the official Meta API, no. You must use an approved "Authentication" template. Fortunately, these templates are almost always approved instantly by Meta's automated system. If you use an unofficial QR-code API, you can send OTPs without approval, but we do not recommend this. Unofficial APIs have higher latency and can disconnect if your physical phone loses internet access, which causes delayed OTPs and dropped sign-ups. For a reliable setup, read our guide on how to send WhatsApp OTP to customers using an API.

How much does Meta charge for approved messages in India and Pakistan?

Meta does not charge per individual message; they charge per 24-hour conversation. This means once you send an approved template to a customer, you can exchange unlimited messages with them for the next 24 hours at no extra cost. The exact rates vary by country and category. India has different rates compared to Pakistan. To see the exact, up-to-date pricing, you must check Meta's official rate card on the Meta for Developers portal, as these rates are adjusted periodically based on currency fluctuations.

What happens if Meta rejects my message template?

If a template is rejected, Meta will provide a generic reason in your developer dashboard (such as "Format violation" or "Spammy content"). You can edit the template to fix the issue and resubmit it. If you believe the rejection was a mistake by their automated system, you can click "Request Review" to have a human agent look at it. This manual review usually takes up to 24 hours.

Can I use both official and unofficial APIs on the same phone number?

No. A phone number can only exist in one ecosystem at a time. It is either registered directly on Meta's cloud servers (Official API) or registered on a physical SIM card inside a mobile phone (Unofficial API). You cannot run both simultaneously on the same number.