A Twilio alternative for WhatsApp with flat pricing
Twilio charges every message — $0.005 plus Meta’s fee — and needs Meta’s business verification before production. WaAPI costs a flat $10 per number and connects the number you already have.
$10 per number / month · No per-message fees · Cancel anytime
Twilio pricing for WhatsApp
What 1,000 messages cost, and where a flat rate wins
Cost per message = $0.005 Twilio fee + Meta’s fee for the recipient’s country. Calculated with utility messages, the category notifications use; since 1 October 2026 the same rate applies to replies inside the 24-hour window.
| Recipient country | Cost per message | 1,000 messages | 5,000 messages | WaAPI ($10) is cheaper from |
|---|---|---|---|---|
| Pakistan | $0.0200 | $20.00 | $100.00 | about 500 messages a month |
| Nigeria | $0.0117 | $11.70 | $58.50 | about 850 messages a month |
| Egypt | $0.0086 | $8.60 | $43.00 | about 1,200 messages a month |
| India | $0.0064 | $6.40 | $32.00 | about 1,600 messages a month |
| Brazil | $0.0118 | $11.80 | $59.00 | about 850 messages a month |
Below the line, Twilio is cheaper
Below the break-even in the table — 500 messages a month to Pakistan, 1,600 messages a month to India — Twilio costs less than a flat $10. That’s the honest reading of the table.
Marketing costs far more
1,000 marketing messages cost $52.30 to Pakistan, $56.60 to Nigeria, $69.40 to Egypt, $16.80 to India, $67.50 to Brazil. Marketing templates to US numbers are not allowed at all.
WaAPI’s numbers have a limit too
With send protection on, a number starts up to 60 new conversations a day. 5,000 messages a month are realistic to people you already talk to, not to 5,000 strangers.
As of November 2026. Sources: Twilio pricing and Meta fee list · Meta, non-template messages. Rates in USD; break-even rounded.
At a glance
Beyond the price
|
Twilio
On Meta's platform
|
WaAPI
Independent · flat rate
|
|
|---|---|---|
| Pricing model | No base fee. $0.005 per message, sent or received, plus Meta's fee per message. Failed messages $0.001. Phone numbers from $1.15 a month | $10 per connected number a month, nothing per message |
| Before the first message | Upgraded account, Meta business portfolio, WhatsApp Business Account, and a number not yet registered with WhatsApp | Link a number that runs the app by QR code or pairing code |
| Business verification | Meta's verification before production; according to Twilio it can take several weeks | Not required |
| Templates | Approval usually in minutes, up to 48 hours on manual review | None needed |
| Throughput | Up to 80 messages per second; Meta's sending tiers apply | Paced at 1–2 s between messages per number by default; scale with more numbers |
| Groups | Group messaging through Twilio Conversations | Groups and channels through the same API |
| SDKs | C#, Java, Node.js, PHP, Python, Ruby, Go | PHP, Laravel, Python, Node.js, plus an n8n node and an MCP server |
| Testing | Trial account without card: up to 5 verified recipients, expires after 30 days. Shared sandbox number, one message every 3 seconds | Free test on your own number |
As of October 2026, read on each provider’s own pages. Sources: Twilio pricing · Twilio messaging pricing · Twilio self sign-up · Twilio trials · Twilio sandbox · Template approvals · Twilio libraries · Throughput
Which one fits
Twilio or WaAPI?
When Twilio is the better choice
- You send large volumes to people who never wrote to you.
- You need the official sender, high throughput — up to 80 messages a second — or more channels such as SMS from one provider.
- Your volume per number stays below the break-even in the table above.
When WaAPI fits better
- You want to use your own existing number.
- Your volume per number is above the break-even for your recipients' country.
- You need groups and channels.
- You want to start today, not after a business verification.
Switching
Moving a project from Twilio
- 1. Link a number that runs the app. The sender you registered with Twilio is on Meta’s API; WaAPI links your app number or a new one by QR code.
- 2. Swap the address format. Recipients become a chat id: the number without the plus sign, followed by @c.us.
- 3. Replace templates with text. No content templates, no approval: the body is the message.
- 4. Move the status callback. Delivery updates and incoming messages go to the instance’s webhook URL.
curl --request POST \
--url https://waapi.app/api/v1/instances/123/client/action/send-message \
--header 'authorization: Bearer your-api-token' \
--header 'content-type: application/json' \
--data '{
"chatId": "[email protected]",
"message": "Your appointment is confirmed for Tuesday, 10:30."
}'
<?php
$instanceId = 123;
$apiToken = 'your-api-token';
$ch = curl_init("https://waapi.app/api/v1/instances/{$instanceId}/client/action/send-message");
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
'authorization: Bearer ' . $apiToken,
'content-type: application/json',
],
CURLOPT_POSTFIELDS => json_encode([
'chatId' => '[email protected]',
'message' => 'Your appointment is confirmed for Tuesday, 10:30.',
]),
]);
echo curl_exec($ch);
import requests
instance_id = 123
api_token = "your-api-token"
response = requests.post(
f"https://waapi.app/api/v1/instances/{instance_id}/client/action/send-message",
headers={"authorization": f"Bearer {api_token}"},
json={
"chatId": "[email protected]",
"message": "Your appointment is confirmed for Tuesday, 10:30.",
},
)
print(response.json())
const instanceId = 123;
const apiToken = 'your-api-token';
fetch(`https://waapi.app/api/v1/instances/${instanceId}/client/action/send-message`, {
method: 'POST',
headers: {
authorization: `Bearer ${apiToken}`,
'content-type': 'application/json',
},
body: JSON.stringify({
"chatId": "[email protected]",
"message": "Your appointment is confirmed for Tuesday, 10:30.",
}),
})
.then((res) => res.json())
.then(console.log);
Limits
Limits and sending safely
There is no cap on how many messages you send. In our experience, what gets numbers restricted is contacting many people who never wrote to you — so send protection is on by default for every new number.
What counts as a new conversation: a person who has never written to your number and whom you have not messaged in the last 7 days. Replies to people who wrote to you first and messages to groups and channels never count, and a follow-up within those 7 days doesn’t count twice.
Need more? Spread new contacts across several numbers, or switch send protection off for a number after confirming the warning — at your own risk.
Flat rate, simple
No message quota and no per-message fees; new contacts are paced by send protection. Media, groups, channels, SDKs and MCP included. Cancel anytime.
- No per-message fees
- No per-user fees
- No setup fee
- Cancel anytime
Twilio vs. WaAPI: questions
Cost, setup and what changes in your code.
-
$0.005 for each message sent or received, plus Meta’s fee for the category and the recipient’s country. A utility message comes to $0.0200 in total to Pakistan, $0.0117 to Nigeria and $0.0086 to Egypt (as of November 2026).
-
For utility messages the break-even is about 500 messages a month to Pakistan, about 850 messages a month to Nigeria and about 1,200 messages a month to Egypt. Below that, per-message pricing costs less than $10.
-
No. There is no business portfolio, no verification and no template review. You link a number by QR code and send.
-
WaAPI links numbers that run in the app. A number registered on Meta’s API through Twilio doesn’t, so use your app number or a new one.
-
No, only this one messaging channel. If you need SMS from the same provider, that is a reason to stay with Twilio.
Swap the meter for a flat rate
Test free for 3 days · No credit card.