Per Message Pricing
This document explains how message pricing works on the WhatsApp Business Platform.
The WhatsApp API pricing model is based on a per-message basis for each message a business sends to a user.
Basic terms
Templates and template categorization
Meta must approve templates before using and they can be sent at any time, even outside the 24-hour messaging window. Templates are charged according to the Meta price list.
When creating a new template or managing existing ones, it's important to understand how WhatsApp categorizes your template for pricing purposes. There are three types of templates:
Marketing templates – Enable businesses to achieve a wide range of goals, from generating awareness to driving sales and retargeting customers.
Utility templates – Enable businesses to follow up on user actions or requests, since these messages are typically triggered by user actions.
Authentication templates – Enable businesses to verify a user’s identity, potentially at various steps of the customer journey. Only authentication templates can be used to send a one-time passcode.
Free-form messages
Free-form messages are regular conversational messages that businesses can send in response to customer inquiries. These messages can be sent just in case the customer service window is open. These messages are free of charge.
Customer service window
Whenever a WhatsApp user messages or calls a business, a 24-hour timer called a customer service window starts (or refreshes if one has already been started).
When a customer service window is open between a business and a user, the business can send any type of message to the user. If a window is not open, the business can only send template messages to the user.
Free Entry Point window
If a WhatsApp user messages you via a Click to WhatsApp Ad or Facebook Page Call-to-Action button using a device running our Android or iOS app (our desktop and web apps are not supported):
A 24-hour customer service window is opened (as usual).
If you respond within 24 hours using any type of message, the message will be free, and a Free Entry Point ("FEP") window will be opened, starting from the time you respond.
FEP windows remain open for 72 hours. While open, you can send any type of message to the user at no charge.
Overview
Only delivered messages are charged.
Three categories are charged: marketing, utility, and authentication
The charge is determined by the recipient´s country calling code
Rates vary by market-category pair (example: price for utility in Germany)
When messages are delivered and charged

*CWS (customer service window)
*FEP (free entry point window)
Charge examples
Business sends two templates to the client, one marketing template and one utility. There will be two charges, for each template separately. This would also be applied in case the business sends two templates with the same category.

In case the user responds to the message, the business can respond to users at no charge with free-form messages.

During the customer service window, businesses can use free-form messages or utility templates free of charge.

Businesses can use free entry points to send all messages free of charge.

Here you can find the illustrated example: Once the customer service window is opened, a free-form message is free of charge, but an authentication template is billable.

Volume tiers
Businesses can unlock lower utility and authentication rates based on the number of messages they send in a month.
Overview
Basic information about volume tiers:
Messages are aggregated at the business portfolio level, across all WhatsApp Business Accounts (WABAs) owned by the portfolio
Only messages that are charged count toward the tiers
Volume tiers will be determined solely by Meta — All insights data is approximate due to small variations in data processing. Undue reliance should not be placed on insights data.
Tiers are market–category specific. Volume tiers are aligned to our rate cards and differ by market (e.g., Brazil or Rest of Latin America) and category (utility, authentication).
Rates are tier-specific — When a business sends enough messages at a given market–category pair to reach the next tier, they unlock the rate of the next tier, specifically for messages in that tier. This rate applies across all of their WABAs
Tiers reset monthly — At the start of the next month (12am WABA timezone), message count resets to 0 and businesses begin to accrue messages toward that month
Volume tiers examples
The table highlights the dynamics of volume tiers.

Example 1: A business that sends a total of B authentication messages in a month to India is charged:
List rate for the first A messages.
Tier rate 1 for messages A+1 to B.
Total charges for that month = Rate per tier 𝗑 messages in each tier.
Example 2: A business that starts to be charged our international authentication rates on the 15th day of the month:
Day 1 to 14 of that month: Volume tiers apply on the authentication rate.
Day 15 onward of that month: Volume tiers apply on the authentication-international rate, with messages continuing to accrue in that month. For example, if a business has already reached Tier 2, the business would be charged Tier 2's international authentication rate:
Example 3: A business has 3 WABAs, integrated across 2 solution providers. Provider 1 sends the first B messages in a given month, and Provider 2 starts sending messages when the business is in the 3rd tier. The business does not send enough messages that month to reach the next tier. What we would charge each provider:
Provider 1: List rate for A messages, then Tier Rate 1 from A+1 to B, and Tier Rate 2 for B+1 to C.
Provider 2: Tier Rate 2 across all of their messages.
Rates
Rates vary based on template category, volume tier, and country/region rate.
Meta pricelist can be found here.
Approximate charges can be calculated here.
How to check the usage
It is possible to use this API endpoint.
Approximate charges are no longer visible to the client in their Meta Business Portfolio in the Insghts section
Webhooks
How to check the webhooks
Tiering webhooks
Currently, tiering information is not included in any webhooks. Use the pricing analytics endpoint to get tiering information for delivered messages.
Free non-template messages
These messages will have type
set to free_customer_service
in the pricing
object of status messages webhooks:
"pricing": {
"billable": false,
"pricing_model": "PMP",
"type": "free_customer_service",
"category": "service"
}
Free utility template messages
Utility template messages sent within an open customer service window are free. These messages will have type
set to free_customer_service
and category
set to utility
in the pricing
object of status messages webhooks:
"pricing": {
"billable": false,
"pricing_model": "PMP",
"type": "free_customer_service",
"category": "utility"
}
Billable messages
Billable messages have type
set to regular
in the pricing
object of status messages webhooks. The <PRICING_CATEGORY>
tells you what rate was applied (e.g. marketing
).
"pricing": {
"billable": true,
"pricing_model": "PMP",
"type": "regular",
"category": "<PRICING_CATEGORY>"
}
Last updated
Was this helpful?