WhatsApp API Cost Calculator: Estimate Your Monthly Bill
Your finance lead wants a number for next quarter's WhatsApp spend, and every online WhatsApp API cost calculator you try asks for "messages per month" as a single figure. That single figure hides everything that matters: which category each message is, which country it goes to, which ones are free, and what your provider adds.
A useful estimate takes about an hour and a spreadsheet. You list every message your systems send, turn the list into monthly volumes per category and market, subtract the free ones, apply Meta's rates, then add your provider's fees.
This guide walks through that method with a worked example, a spreadsheet formula, a short Python calculator, and the line items most estimates leave out.
The formula in one line
For each market and category:
cost = (delivered messages minus free messages) × rate, then add provider fees on top.
Three rules shape the inputs:
- Only delivered messages are charged. Messages from customers to you are free.
- Free messages come from two places. Every business phone number gets 1,000 free service messages a month (since October 1, 2026), and messages inside a free entry point window, opened when someone chats from a Click to WhatsApp ad, are free for all categories except Meta Business Agent.
- Utility and authentication rates are tiered. Above certain monthly volumes per market, the rate drops for the messages in each higher tier. Marketing and service rates are flat.
How Meta charges each category is covered in our WhatsApp API pricing guide. This post is about turning it into a number.
Step 1: List every message you send
Start from flows, not totals. Each flow has a trigger, a category and a typical count per customer. A fictional skincare store with 4,000 orders a month might list:
| Flow | Trigger | Category | Monthly volume |
|---|---|---|---|
| Order confirmed | Checkout | Utility template | 4,000 |
| Order shipped | Courier pickup | Utility template | 4,000 |
| Order delivered | Courier scan | Utility template | 4,000 |
| Cart reminder | Abandoned checkout | Marketing template | 3,000 |
| Monthly offer | Campaign, sent twice | Marketing template | 18,000 |
| Support replies | Customer messages | Service (free-form) | 10,000 on one number |
| Replies to ad chats | Click to WhatsApp ads | Free entry point window | 1,800 |
Two questions catch most mistakes at this stage. Is the template truly utility, or does it contain anything promotional that will get it billed as marketing? And does the flow fire inside an open customer service window? Since October 2026, utility templates sent inside the window are charged too, while free-form replies there draw on the 1,000 free service messages.
If your customers are in several countries, split each row by market. Rates are set by the recipient's country code and can differ more than tenfold between markets.
Step 2: Apply rates, with sample numbers
The rates below are example rates for illustration, not Meta's. Replace them with your market's row from Meta's rate card. Suppose your market's marketing rate were $0.05 and its utility and service rates were $0.005:
| Line | Billable messages | Example rate | Cost |
|---|---|---|---|
| Utility | 12,000 | $0.005 | $60.00 |
| Marketing | 21,000 | $0.05 | $1,050.00 |
| Service | 10,000 minus 1,000 free = 9,000 | $0.005 | $45.00 |
| Ad chat replies | 1,800 in free entry point windows | $0 | $0.00 |
| Meta subtotal | $1,155.00 |
Now the provider. Suppose, again as an example, your provider charges $49 a month plus $0.004 per message in both directions. Outbound is 44,800 messages and customers send about 11,800, so the per-message fee comes to $226.40 and the provider total to $275.40. The month is roughly $1,430.
The shape matters more than the total: marketing is under half of the messages sent but over 70% of the bill. Expect a similar shape with real rates, because marketing costs more than utility in every market on Meta's card, often several times more.
Step 3: Put it in a spreadsheet
Use one row per flow and market, with these columns: A flow, B category, C market, D monthly delivered, E free messages, F rate. Cost per row:
G2: =MAX(0, D2 - E2) * F2
G20: =SUM(G2:G19)
For tiered utility or authentication rates, put the tier table on its own sheet with columns A "from" (the volume where the tier starts, exclusive: 0, then the previous tier's top), B "to" and C rate, and the month's volume in cell B1 of a sheet named Main. Each tier row then costs:
D2: =MAX(0, MIN(Main!$B$1, B2) - A2) * C2
D8: =SUM(D2:D7)
Use a very large number for the top tier's "to" value. Volume tiers are counted per market and category across your whole business portfolio, so one tier table per market and category; our guide to WhatsApp API volume tiers explains the counting rules.
Or as a short Python script
The same logic as a script, with the free service allowance applied per number:
# WhatsApp API monthly estimate. EXAMPLE rates only: replace with your
# markets' rows from Meta's rate card and volume tier files.
FREE_SERVICE_PER_NUMBER = 1000
def tiered(volume, tiers):
"""tiers: list of (start_exclusive, end_inclusive, rate)."""
return sum(max(0, min(volume, hi) - lo) * rate for lo, hi, rate in tiers)
def estimate(templates, rates, service_by_number, fep=0,
provider_monthly=0.0, provider_per_msg=0.0, inbound=0):
meta = 0.0
for category, count in templates.items(): # templates only, not service
rate = rates[category]
meta += tiered(count, rate) if isinstance(rate, list) else count * rate
billable = sum(max(0, n - FREE_SERVICE_PER_NUMBER) for n in service_by_number)
meta += billable * rates["service"]
outbound = sum(templates.values()) + sum(service_by_number) + fep
provider = provider_monthly + provider_per_msg * (outbound + inbound)
return round(meta, 2), round(provider, 2)
rates = {"marketing": 0.05, "service": 0.005,
"utility": [(0, 80_000, 0.005), (80_000, 750_000, 0.0047)]}
print(estimate({"marketing": 21_000, "utility": 12_000}, rates,
service_by_number=[10_000], fep=1_800,
provider_monthly=49, provider_per_msg=0.004, inbound=11_800))
# (1155.0, 275.4)
Swap in real rates per market and run it once per market. If you already send on the API, replace the volumes with counts from the pricing object in your status webhooks, which tells you each delivered message's category and whether it was charged.
Line items most estimates forget
- Service replies. Free until September 30, 2026; now charged after 1,000 per number per month. Multi-bubble replies and chatty bots add up.
- Utility inside the window. Also charged since October 1, 2026.
- Recategorization. A utility template Meta reclassifies as marketing keeps sending, at the marketing rate.
- Authentication-international rates. If you send OTPs to users in one of 18 markets from a business based elsewhere and pass Meta's volume threshold, codes there cost far more.
- Resends. Every delivered OTP resend and every campaign re-send is a new charge.
- Provider extras. Inbound message fees, failed-message fees, per-number or per-seat fees, setup costs and wallet minimums. Our breakdown of WhatsApp BSP fees lists what to ask for.
- Currency and tax. Your Meta billing currency is fixed per messaging account, and taxes are usually extra.
- Quarterly rate changes. Meta can change rates on January 1, April 1, July 1 and October 1. Re-run the estimate each quarter.
- Meta Business Agent. If you use Meta's AI agent, it is billed per token, about 4 to 5 cents a message by Meta's estimate, and is never free.
- People and plumbing. A direct Cloud API integration needs hosting for webhooks and engineering time to maintain it.
Once you have a baseline, our guide to reducing WhatsApp API costs covers where to cut first. For the platform as a whole, see the complete guide to the WhatsApp API.
Once you have a monthly figure, set it against outcomes with our framework for deciding whether the WhatsApp API is worth it.
Where Tenashi fits
Run the estimate and look at which rows are conversations: support replies, follow-ups, sales chats, group threads. For those, the honest comparison isn't one provider against another, it's metered messages against a flat fee. Tenashi links the WhatsApp or WhatsApp Business number you already use with a QR scan and gives your team a shared inbox for DMs and groups with a CRM under every chat, at a fixed monthly price with no per-message fees: Starter $18/mo for 1 number and 2 team members, Growth $27/mo for 3 numbers and 10 members, Scale $56/mo for unlimited.
Keep the template rows where they are. Tenashi doesn't send templates, OTPs or high-volume alerts, and it is not Meta's official API. It paces sends to protect your number, and no tool can promise WhatsApp won't ban a number that spams.
See every feature · Get started
FAQ
How do I calculate WhatsApp API cost per month?
List every flow your system sends, assign each a category and market, and total monthly delivered messages per category and market. Subtract free messages: 1,000 service messages per number and anything in a free entry point window. Multiply by Meta's rate for each, using tiers for utility and authentication, then add your provider's fees.
What rates should I use in my estimate?
Use Meta's current rate card for each market you send to, downloaded from its pricing page in your billing currency, plus the volume tier file for utility and authentication. Avoid rates copied from blog posts or old quotes, because Meta can change them each quarter and changed 40 of them in October 2026.
Do I need to count messages customers send me?
Not for Meta's charges, because messages from users to businesses are free. Count them anyway if your provider charges per message in both directions, as some do. Inbound volume also tells you how many customer service windows you open, which shapes how many free-form replies you can send.
Are failed WhatsApp messages charged?
Meta charges only for delivered messages, so failures cost nothing on Meta's side. Some providers charge a small fee for failed messages, so check your contract. Failures still cost indirectly: a retried OTP or campaign message that later delivers is charged, so track retries as their own line in your estimate.
How accurate is a WhatsApp cost estimate?
As accurate as your volumes and categories. The rates are published, so most errors come from undercounting replies, assuming a template is utility when Meta treats it as marketing, or forgetting provider fees. Once you're live, rebuild the estimate monthly from the pricing data in your status webhooks.
An hour with a spreadsheet beats any single-number calculator. If the conversation rows dominate your estimate, see how Tenashi works at a flat monthly price.