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.

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?