How to get your own WhatsApp Business API credentials
Short answer
Meta gives you four credentials. Your WhatsApp Business Account ID (WABA ID) and Phone Number ID are on the WhatsApp → API Setup page of your Meta app. Your permanent access token comes from Business Settings → System Users. Your App Secret is on App Settings → Basic. Paste all four into 399Apps, add the webhook URL back into Meta, and you are sending.
Updated 2026-07-14 · 399Apps · General GST information, not tax advice
Getting the four credentials: step by step
This is the direct route — you create the Meta assets yourself and own them. It takes about an hour of actual work; the rest of the 1–14 days is Meta’s verification queue, which nobody can shorten. No BSP is involved at any point, and nothing here is specific to 399Apps until the last step. If you use 399Apps and would rather not do this yourself, we do it for you free of charge, inside your own Meta Business account.
- 1
Create a Meta Business account and start verification
Go to business.facebook.com and create a Business account for your company (or use the one you already have). Start Business Verification straight away under Business Settings → Security Centre — it needs your registration certificate, a document showing your legal name and address, and usually a domain you control. This is the long pole: it typically clears in 1–3 working days, and nothing below goes live until it does.
- 2
Create an app on Meta for Developers and add WhatsApp
At developers.facebook.com → My Apps → Create App, choose the Business app type and link it to the Business account from step 1. Open the app, find WhatsApp in the product list and add it. Meta creates a WhatsApp Business Account (a WABA) under your business and attaches a free test number to it.
- 3
Copy your WABA ID and Phone Number ID
Open WhatsApp → API Setup inside the app. Two long numbers are on that screen: the WhatsApp Business Account ID (the WABA ID) and the Phone Number ID. The Phone Number ID is NOT your phone number — it is the numeric ID Meta assigns to that number, and pasting the phone number itself is the single most common setup mistake.
- 4
Register a real business number Meta has never seen
On the same screen, add your own phone number. It must not be active on consumer WhatsApp or on the WhatsApp Business app — if it is, delete that account first and wait for it to clear, or use a different number. Any Indian operator works, and a landline works if it can take a voice call. Meta verifies it by SMS or voice call. Once registered, copy the new Phone Number ID for that number; the test number’s ID is not the one you want in production.
- 5
Set your display name and wait for approval
Set the business display name customers will see in the chat header. Meta reviews it against your verified business name — a name that reads like a slogan or does not match your documents gets rejected, which costs you another review cycle. Keep it to your trading name.
- 6
Create a System User and generate a permanent token
Business Settings → Users → System Users → Add. Create an Admin system user, then Add Assets and give it your WhatsApp Business Account with full control. Now Generate New Token against your app, tick whatsapp_business_messaging and whatsapp_business_management, and set the expiry to Never. Copy the token immediately — Meta shows it exactly once.
- 7
Copy your App Secret
In the same app, go to App Settings → Basic and reveal the App Secret. This is a different thing from the access token: the token proves you may send, the App Secret proves that a message you receive genuinely came from Meta. Without it, an incoming STOP cannot be trusted, so opt-outs are ignored.
- 8
Paste the four credentials into 399Apps
Open the WhatsApp hub in your 399Apps account and enter the WABA ID, Phone Number ID, access token and App Secret. Hit Verify — that calls Meta’s phone-metadata endpoint and reads back your display phone number and verified name, so a green result means the credentials really work rather than merely that they saved.
- 9
Give Meta the webhook URL so replies reach you
The hub shows a webhook URL unique to your organisation. Paste it into Meta under WhatsApp → Configuration → Webhooks and subscribe to the messages field. This is what makes a customer typing STOP actually unsubscribe them, and what carries Meta’s delivery and read receipts back so your send reports are real rather than assumed.
- 10
Send a test message
Use the test send on the hub. It sends hello_world — the one template Meta pre-approves for every account — in en_US. Add the destination number to Test Recipients in your Meta dashboard first, or Meta rejects the send as "re-engagement window expired" and the failure looks like a credential problem when it is not.
Why go direct instead of through a BSP
Almost every guide to this subject is published by a Business Solution Provider, and they share one commercial interest: that you route your WhatsApp through them. The model is a monthly platform fee plus a markup on every message on top of Meta’s wholesale rate — entry plans in India commonly run from roughly ₹1,000 to ₹2,500 a month before a single message is sent, and the per-message markup on top is typically in the low double digits of a percent, sometimes far more.
That is why those same guides describe going direct as weeks of engineering work. It is not. The work above is an hour of form-filling plus Meta’s verification queue, and at the end you hold the assets: the WABA is in your Business account, the number is registered to you, and the token is yours to revoke. If you leave 399Apps tomorrow, your WhatsApp Business account stays exactly where it is.
- • The WABA, the number and the templates belong to your Meta Business account, not to us
- • Meta bills your business directly at Meta’s own published rates
- • 399Apps takes no per-message cut and is not your BSP
- • Revoking the token in Meta instantly cuts our access, with nothing to cancel on our side
The number is where most setups fail
Meta will not register a number that is currently in use on consumer WhatsApp or on the free WhatsApp Business app. This catches almost everyone, because the number a business wants to use is usually the number it has been messaging customers from for years.
You have two clean options. Delete the existing WhatsApp account on that number from inside the app (Settings → Account → Delete my account), wait for it to fully clear, then register it — you lose that chat history, so export anything you need first. Or register a second number for the API and keep the old one for one-to-one chat. Plenty of businesses run both deliberately: a human number for conversations and an API number for invoices, receipts and reminders.
- • The number cannot be live on consumer WhatsApp or the WhatsApp Business app
- • Deleting that account is irreversible and takes the chat history with it
- • Any Indian operator works; a landline works if it can receive a voice call
- • A number registered to the API can no longer be used in the normal WhatsApp app
Use a permanent System User token, not the one on the dashboard
The API Setup page offers a temporary access token right next to the IDs you need, and it is the obvious thing to copy. It expires in 24 hours. Paste that one and your integration works beautifully for a day and then stops, usually on a morning when you are billing.
The token that belongs in production is generated against a System User in Business Settings with the expiry set to Never, carrying the whatsapp_business_messaging and whatsapp_business_management permissions. Meta displays it once, so store it somewhere safe before you close the dialog. In 399Apps it is encrypted at rest and never shown back to you — the field stays masked, and leaving it blank when you edit anything else keeps the saved token untouched.
The App Secret is what makes opt-out work
It is tempting to skip the App Secret, because messages go out fine without it. They do — what breaks is everything coming back. Meta signs every inbound webhook with the App Secret, and without it we cannot tell a genuine STOP from a forged one, so we refuse all of them.
That matters more than it sounds. A forged STOP would suppress a real paying customer permanently and you would have no way to undo it, so the safe behaviour is to fail closed and ignore inbound entirely until the secret is set. The cost of that safety is real: a customer who types STOP and keeps receiving messages reports the number, and a reported number is how businesses lose WhatsApp access altogether.
- • Without the App Secret, every inbound message is discarded — including STOP
- • With it, STOP suppresses that contact and we send an acknowledgement back
- • The same webhook carries delivery and read receipts, so send reports stop being guesses
- • The App Secret is on App Settings → Basic, not on the WhatsApp screens
What it costs
The WhatsApp Business API connection is a free add-on included with any paid 399Apps subscription — there is no separate WhatsApp plan, no per-user charge and no monthly platform fee from us. Messages are billed by Meta, to your business, at Meta’s own published rates, on the payment method attached to your Meta Business account. We never see that bill and we take nothing from it.
Meta prices per template message and rates differ by category — utility and authentication messages (an invoice, a payment receipt, an OTP) cost a fraction of a rupee each in India, while marketing messages cost meaningfully more. Because there is no markup in between, the invoice you send a customer costs you what Meta charges for it and nothing else. Compare that to a platform fee plus a percentage on every message and the difference compounds with every bill you raise.
- • The connection: free with any paid 399Apps subscription
- • The messages: billed by Meta directly to you, at Meta’s rates
- • 399Apps markup: none, on any message, at any volume
- • Meta’s published rate card is the one to check before you budget — it changes
What WhatsApp will not let you do, whatever a vendor promises
These are Meta’s platform rules, not one vendor’s limitations, and a provider who implies otherwise is setting you up to lose your number. A business cannot start a conversation with free-form text. Anything you initiate has to be a template Meta approved in advance, and template review takes minutes to a day.
Free-form replies are allowed only inside the 24-hour window that a customer’s own message opens. Recipients must have given you their number in a context where messaging them is expected — uploading a scraped list is the fastest route to a blocked number. And opt-out is not optional: STOP has to work, which is exactly why the App Secret is part of the setup rather than a nice-to-have.
- • Business-initiated messages must use a pre-approved template
- • Free-form text only inside the 24-hour window a customer’s reply opens
- • No cold broadcasting to numbers that did not opt in
- • A high block rate lowers your quality rating and can cost you the number
You may not need the API at all
If all you want is to send a customer their invoice PDF from your own phone, the Cloud API is more machinery than the job needs. Every 399Apps account includes a wa.me quick send: pick the customer, the message is built in your browser, WhatsApp opens with it ready, you press send. No Meta account, no verification, no templates, nothing to set up — and nothing leaves your browser, because we never see the message.
The Cloud API earns its setup when sending has to happen without a human present: payment reminders that go out on schedule, receipts that follow a POS sale automatically, booking confirmations, delivery updates, or one message to two hundred customers. That is the line. If a person is going to tap send every time anyway, start with quick send and come back to this page when you outgrow it.
How 399Apps helps
The WhatsApp Business API connection is a free add-on on any paid 399Apps subscription — flat ₹399/month per app, unlimited users, prices exclude GST. You bring your own Meta WhatsApp Business account, Meta bills you directly for messages at its own rates, and 399Apps adds no markup on any of them. We also do the setup for you at no charge, in your own Meta Business account, so you still own everything. The wa.me quick send needs no setup at all and is included on every plan. Free for 14 days.
Get your WhatsApp Business API credentials — frequently asked questions
Where do I find my WABA ID? +
What is the difference between the Phone Number ID and my phone number? +
Why does my access token stop working after a day? +
Do I really need the App Secret? +
Can I use my existing WhatsApp Business number? +
How long does the whole setup take? +
What does 399Apps charge for WhatsApp? +
Can 399Apps do this setup for me? +
Do I need a BSP like Wati, Interakt or AiSensy? +
Who owns the WhatsApp Business account — me or 399Apps? +
Related
- Which WhatsApp method do you need? Quick send vs Cloud API vs QR
- WhatsApp Business API cost in India, per message
- Nidhi Books — GST billing and accounting
- WhatsApp billing software — send bills from your own number
- Nidhi Campaigns — WhatsApp marketing to your own customers
- Nidhi Appointments — bookings with WhatsApp reminders
- 399apps for Schools — fees and alerts on WhatsApp
- Does 399Apps have hidden charges?
- Can I use my existing WhatsApp Business number with 399Apps?
- How to create a GST invoice on your phone
- See pricing
- All GST guides
GST billing, returns & e-invoicing — done automatically
Nidhi Books raises GST-compliant invoices and prepares GSTR-1 and GSTR-3B exports, with unlimited users flat ₹399/month per app. Free for 14 days.