In this blog, we explain how to generate and use a Permanent Access Token using System User + Business Manager, the correct and production-safe method.



💡 What is a WhatsApp Cloud API Access Token?
An access token is required to:
- Send WhatsApp messages
- Manage templates
- Read delivery status
- Connect webhook securely
Without a valid token → API will not work.
❌ Temporary Token vs ✅ Permanent Token
❌ Temporary Access Token
- Expires in 24 hours
- Meant only for testing
- Not safe for production
- Causes sudden failures
✅ Permanent Access Token (Recommended)
- Long-term usage
- Used in live projects
- Generated via System User
- Safe & stable
👉 Production systems must use Permanent Token only.
🧩 Correct Way: System User + Business Manager
Meta requires permanent tokens to be created using System Users inside Business Manager, not from personal accounts.
This system is controlled by Meta Platforms.
✅ STEP 1: Go to Meta Business Manager
- Open business.facebook.com
- Select your Business
- Go to Business Settings
✅ STEP 2: Create a System User
- Business Settings → Users → System Users
- Click Add
- Choose Admin
- Create System User
👉 This user represents your application, not a person.



✅ STEP 3: Assign Assets to System User
Now assign WhatsApp assets.
- Select the System User
- Click Assign Assets
- Choose:
- WhatsApp Accounts (WABA)
- Apps
- Give Full Control
Without this step → token will not work.
✅ STEP 4: Generate Permanent Access Token
- Open System User
- Click Generate New Token
- Select your App
- Select permissions:
- whatsapp_business_messaging
- whatsapp_business_management
- Generate token
- Copy & store securely
🎉 This is your Permanent Access Token.
🔐 STEP 5: Use Token in WhatsApp Cloud API (PHP Example)
$token = "PERMANENT_ACCESS_TOKEN"; $phone_id = "PHONE_NUMBER_ID"; $data = [ "messaging_product" => "whatsapp", "to" => "91XXXXXXXXXX", "text" => ["body" => "Hello from Anjok Technologies"] ]; $ch = curl_init("https://graph.facebook.com/v18.0/$phone_id/messages"); curl_setopt($ch, CURLOPT_HTTPHEADER, [ "Authorization: Bearer $token", "Content-Type: application/json" ]); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data)); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_exec($ch); curl_close($ch);
No expiry issues 👍
⚠️ Common Mistakes (Very Important)
❌ Using user access token
❌ Forgetting to assign WABA to system user
❌ Missing WhatsApp permissions
❌ Token stored in public JS
❌ Token rotated accidentally
These mistakes cause sudden API failure.
🛡️ Best Practices for Permanent Tokens
✔ Always use System User token
✔ Store token in .env file
✔ Never expose token in frontend
✔ Limit permissions to WhatsApp only
✔ Rotate token only when required
🧠 Quick Checklist
✔ Business verified
✔ WhatsApp Business Account active
✔ System User created
✔ App assigned
✔ WABA assigned
✔ Correct permissions
✔ Permanent token generated
If all checked → API is stable.
🏢 How Anjok Technologies Helps
At Anjok Technologies, we handle:
- Permanent token setup
- System user configuration
- Business Manager permissions
- Token expiry issues
- WhatsApp Cloud API full setup
- PHP / Laravel integration
- Webhook + chatbot setup
We ensure your WhatsApp API never stops suddenly.
📞 Contact Anjok Technologies
📱 +91 80729 70517
🌐 anjoktechnologies.in
👉 Ask for WhatsApp Cloud API Permanent Token Setup