Per-message pricing is live and now applies to businesses for whom it is July 1, 2025 or later, based on their WABA timezone.
This document explains how pricing works on the WhatsApp Business Platform.
To align with industry-standards, effective July 1, 2025, we now charge on a per-message basis:
"type":"template"
).We provide value to businesses in several ways:
"type":"text"
, "type":"image"
, etc.). These can only be sent within an open customer service window. See Sending messages for a list of message types.Our pricing explainer PDF outlines how we charge, and the various ways we provide value to businesses, in PDF form:
Pricing Explainer PDFUnlike non-template messages, template messages are the only message type that can be sent outside of a customer service window. Templates can be categorized as:
See Template categorization to learn how to categorize your templates correctly.
In the example below, a business sends 4 messages to a WhatsApp user but is only charged for 2 (1 marketing charge, 1 utility charge).
Hour | Action | Rate | Reason |
---|---|---|---|
0 | You send a marketing template message to a WhatsApp user, promoting your new product. | Marketing | All marketing template messages are charged. |
2 | The user messages you about the product. This opens a 24 hour customer service window ("CSW"). | - | Messages sent from a WhatsApp user to a business are not charged. |
3 | You send a text message to the user ( | None | All non-template messages are free within an open customer service window. |
4 | The user purchases the product and you send them a utility template confirming their order. | None | The CSW is still open, and utility templates sent within an open CSW are free. |
26 | The CSW closes, which means you can no longer send non-template messages. | - | 24 hours have passed since the user last messaged you. |
30 | You send a utility template message to the user, updating them on their order. | Utility | Utility template messages sent outside of a CSW are charged, and no open CSW exists between you and the user. |
Rates vary based on template category, volume tier, and country/region rate.
These rate cards reflect our current rates and volume tiers, effective July 1, 2025, based on WhatsApp Business Account timezone. This information is also available interactively on our WhatsApp Business website.
Specific countries have an authentication-international rate. Our rate cards reflect these rates. See Authentication-International rates to learn about these rates and if they apply to you.
Charges for conversations are based on the country calling code of the recipient WhatsApp phone number. The table below shows how we map country calling codes to countries or regions. If a country is not listed below, it maps to Other.
Markets |
Calling Code
(and network prefix if applicable) |
---|---|
Countries | |
North America | |
Rest of Africa | |
Rest of Asia Pacific | |
Rest of Central & Eastern Europe | |
Rest of Western Europe | |
Rest of Latin America | |
Rest of Middle East | |
Other |
The information in the table above is also available in a CSV file:
Country Calling Codes and Regional Rate Mapping CSVYou can unlock lower utility and authentication rates based on the number of messages you send in a month.
The table below is illustrative and only highlights the dynamics of volume tiers. Please refer to our rate cards to see what we charge.
Below are several examples to highlight how our tiers work and what we would charge in a given month, for a given market–category. These examples refer to the illustrative table above:
Example 1: A business that sends a total of B authentication messages in a month to India is charged:
Example 2: A business that starts to be charged our authentication-international rates on the 15th day of the month:
Example 3: A business has 3 WABAs sending authentication messages to India. For WABA A, it is still July 31 based on their timezone. For WABAs B and C, it is already August 1 based on their timezone. For July, the business is already being charged Tier Rate 1.
Example 4: 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 as of 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:
Currently, tiering information is not included in any webhooks. Use the pricing_analytics field to get tiering information for delivered messages.
Non-template messages, which can only be sent within an open customer service window, are free. 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" }
Note that for On-Premises API users running version 2.60 and lower, type
is omitted, so a category
of service
and billable
set to false
identifies these 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" }
Note that for On-Premises API users running version 2.60 and lower, type
is omitted, so a category
of utility
and billable
set to false
identifies these messages.
If you send a message to a WhatsApp user prior July 1, 2025 (which is when we switched from conversation-based pricing to per-message pricing), a utility conversation is opened between you and a user that spans the switch to per-message pricing (the conversation was opened before the switch but won't close until after the switch). In this case, utility templates sent to the user after the switch while the conversation is open will be free, but attributed to the open conversation. In status messages webhooks, these messages will have a pricing_model
of CBP
and the utility conversation ID will be assigned to conversation.id
. Once the conversation closes, subsequent utility messages will use per-message pricing, which will be reflected in new webhooks.
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):
FEP windows remain open for 72 hours. While open, you can send any type of message to the user at no charge. Note, however, that the customer service window is independent of the FEP window, so if the customer service window closes, you will only be able to send template messages.
Use the pricing_analytics field to get per-message pricing breakdowns and tiering information for delivered messages.
Billable messages have type
set to regular
in the pricing
object of status messages webhooks:
"pricing": { "billable": true, "pricing_model": "PMP", "type": "regular", "category": "<PRICING_CATEGORY>" }
The <PRICING_CATEGORY>
tells you what rate was applied (e.g. marketing
). See the status messages webhook reference for a list of possible values.
Note that currently, tiering information is not included in any webhooks. Use the pricing_analytics field to get tiering information for delivered messages.
Billing and billing-related actions are handled through the Meta Business Suite. See About Billing For Your WhatsApp Business Account for more information.
The WhatsApp Business Calling API has different pricing. See our Calling API pricing document to learn more.
Conversation-based pricing is deprecated. It was replaced with per-message pricing on July 1, 2025.