Pricing updates on the WhatsApp Business Platform

Effective April 1, 2025, we are lowering our authentication-international rates in Egypt, Nigeria, Pakistan and South Africa, as part of continued efforts to ensure our prices are on-par with alternate channels.

We are updating pricing on the WhatsApp Business Platform to be simpler and more consistent with industry practices, encourage higher-quality messaging experiences for people, and better align with value delivered for people and businesses.

  • Effective November 1, 2024 — service conversations will be free for all businesses.
  • Effective February 1, 2025 — authentication-international rates will be expanded to 7 additional markets across APAC and EMEA.
  • Effective July 1, 2025 — utility templates sent within an open customer service window will be free, and we will charge per message for template messages instead of per conversation.

Per-message pricing

Per-message pricing will apply to all businesses starting July 1, 2025, at 12am, by WhatsApp Business Account timezone. With per-message pricing, businesses on our platform will be charged:

  • Per delivered marketing template message
  • Per delivered authentication template message
  • Per delivered utility template message, if delivered outside of a customer service window

For example, if you send a marketing template and then two utility templates to a WhatsApp user, that will incur 3 charges (1 marketing, 2 utility). If the 2 utility templates are sent while a customer service window is open between you and the user, however, it would only incur a single charge (1 marketing).

Per-message pricing analytics

A new pricing_analytics field will be released July 1, 2025, that allows you to get per-message pricing breakdowns for any messages you have sent.

Per-message pricing Cloud API webhooks

Starting July 1, 2025, the conversation and pricing objects in status messages webhooks will be affected in the following ways, based on the webhook field version you are subscribed to. You can adjust subscriptions using the App Dashboard > WhatsApp > Configuration panel's Version dropdown menu for each webhook field.

Version 24.0 and higher

/* conversation object omitted unless webhook is for a free entry point conversation */
"conversation": {
  "id": "<CONVERSATION_ID>",           // new behavior, see table below
  "expiration_timestamp": "<CONVERSATION_EXPIRATION_TIMESTAMP>",
  "origin": {
    "type": "<CONVERSATION_CATEGORY>"
  }
},

"pricing": {
  "billable": <IS_BILLABLE?>,
  "pricing_model": "<PRICING_MODEL>",  // new value, see table below
  "type": "<PRICING_TYPE>",            // new property, see table below
  "category": "<CONVERSATION_CATEGORY>"
}

Version 23.0 and lower

"conversation": {
  "id": "<CONVERSATION_ID>",           // new behavior, see table below
  "expiration_timestamp": "<CONVERSATION_EXPIRATION_TIMESTAMP>",
  "origin": {
    "type": "<CONVERSATION_CATEGORY>"
  }
},

"pricing": {
  "billable": <IS_BILLABLE?>,
  "pricing_model": "<PRICING_MODEL>",  // new value, see table below
  "type": "<PRICING_TYPE>",            // new property, see table below
  "category": "<PRICING_CATEGORY>"
}

Cloud API webhook parameters


Placeholder Description

<CONVERSATION_ID>

Version 24.0 and higher:

  • The conversation object will be omitted entirely, unless the webhook is for a free entry point conversation, in which case the value will be unique per free entry point conversation.

Version 23.0 and lower:

  • Value will now be set to a unique ID per-message, instead of per-conversation, unless the webhook is for a free entry point conversation, in which case the value will be unique per free entry point conversation.

<CONVERSATION_CATEGORY>

Not changing.

<CONVERSATION_EXPIRATION_TIMESTAMP>

Not changing.

<IS_BILLABLE?>

Not changing.

However, the billable property will be deprecated in a future versioned release, so we recommend that you start using pricing.type and pricing.category together to determine if a message is billable, and if so, its billing rate.

<PRICING_MODEL>

New "PMP" value. Values can now be:

  • "PMP" — indicates per-message pricing applies.
  • "CBP" — indicates conversation-based pricing applies; will only be set to this value if the webhook is for a message that is part of a free entry point conversation.

<PRICING_TYPE>

New property. Values can be:

  • regular — indicates the message is billable.
  • free_customer_service — indicates the message is free because it was either a utility template message or non-template message sent within a customer service window.
  • free_entry_point — indicates the message is free because it is part of a free-entry point conversation.

<PRICING_CATEGORY>

Values are not changing, but can now be interpreted as follows:

  • authentication — indicates an authentication template message.
  • authentication_international – indicates an authentication template message sent to a WhatsApp user in a country or region that has authentication-international rates.
  • marketing — indicates a marketing template message.
  • utility — indicates a utility template message.
  • service — indicates a non-template message.
  • referral_conversion — indicates the message is part of a free entry point conversation.

Per-message pricing On-Premises API webhooks

Version 2.61 and higher

On-Premises API messages status and pricing notification changes will mirror the Cloud API version 24.0 webhook changes.

Version 2.60 and lower

On-Premises API messages status and pricing notification changes will mirror the Cloud API version 24.0 webhook changes, however, the pricing.type property will not be included.

Determining billing rate

The pricing.type value can be used in conjunction with the pricing.category value to determine if the webhook describes a message that was billable, and if so, which rate was applied. For example:

Type Category Rate Reason

regular

marketing

Marketing

All marketing template messages are billable.

regular

utility

Utility

Utility template messages sent outside of a customer service window are billable.

free_customer_service

utility

n/a

Utility template messages sent inside of a customer service window are free.

free_customer_service

service

n/a

Non-templates messages are free.

Free Entry Point conversations

With the launch of per-message pricing, free entry point conversations will behave the same but reflect messages instead of conversations. If a WhatsApp user messages you via a free entry point surface, you can respond with any type of message for free for 24 hours. If you respond, a 72 hour free entry point window will be opened. You can continue to message the user with any type of message while this window is open, at no charge. Note that 24 hours after the customer initially messages you, you will only be able to send templates (for free) unless the customer messages you again.

Free service conversations

Starting November 1, 2024, service conversations are free for all businesses (free tier conversations are now unlimited instead of capped at 1,000). As a reminder, a customer service window must be open between you and a WhatsApp user before you can send the user a non-template message.

Free service conversation example

  • Hour 0: a WhatsApp user messages you outside of your business hours. This opens a customer service window, so you are now able to send any type of message to the user for 24 hours, not just template messages ("type":"template")
  • Hour 0: your conversational AI bot automatically responds with a text message ("type":"text"), informing the user that a customer service agent will respond by 9am the next day
  • Hour 12: a customer service agent responds to the user with a text message

Free service conversation Cloud API webhooks

Use the pricing object in status messages webhooks as follows to determine if the webhook is associated with a free service conversation/message.

November 1, 2024 through June 30, 2025:

"pricing": {
  "billable": true,
  "pricing_model": "CBP",
  "category": "service"  // Will be set to "service"
}

Starting July 1, 2025:

"pricing": {
  "billable": false,
  "pricing_model": "PMP",  // New "PMP" value
  "type": "free_customer_service",
  "category": "service"
}

Free service conversation On-Premises API webhooks

Use the pricing object in status and pricing notification webhooks as follows to determine if the webhook is associated with a free service conversation/message.

Version 2.61 and higher


November 1, 2024 through June 30, 2025:

"pricing": {
  "billable": true,
  "pricing_model": "CBP",
  "category": "service"  // Will be set to "service"
}

Starting July 1, 2025:

"pricing": {
  "billable": false,
  "pricing_model": "PMP",           // New "PMP" value
  "type": "free_customer_service",  // New "type" property
  "category": "service"
}

Version 2.60 and lower


November 1, 2024 through June 30, 2025:

"pricing": {
  "billable": true,
  "pricing_model": "CBP",
  "category": "service"  // Will be set to "service"
}

Starting July 1, 2025:

"pricing": {
  "billable": false,
  "pricing_model": "PMP",  // New "PMP" value
  "category": "service"
}

Conversation analytics

All service conversations opened on or after November 1, 2024, will be identified as FREE_TIER. If you request conversation analytics filtering for service conversations (conversation_categories includes SERVICE) and use a lookback period that straddles this date:

  • Data before this date can include conversation_types with a value of either FREE_TIER (conversations opened before the 1K free tier limit was reached) or REGULAR (conversations opened after the 1K free tier limit was reached). Note that conversations opened before this date but delivered after it are charged, and thus identified as REGULAR.
  • Data after this date can include conversation_types with either value as well, but REGULAR will be zero (0), since all service conversations are now free and identified as FREE_TIER.

The conversation_analytics field will be deprecated when Graph API version 25.0 is released (late October or early November, 2025). This should give you adequate time to fetch any historical conversation analytics you might need before the field is no longer usable.

Whatsapp Manager insights

Starting November 1, 2024, the WhatsApp Manager > Account tools > Insights panel will have the following changes:

  • The Free tier count in the Free conversations tile can exceed 1,000. This indicates the number of free service conversations you have opened.
  • The Service count in the Paid conversations tile will no longer increment.

Free utility templates in the customer service window

Starting July 1, 2025, utility templates sent within a customer service window ("CSW") are free for all businesses. Utility templates sent outside a CSW will continue to be charged the utility rate.

This illustration shows the behavior of two utility templates sent by a business on or after July 1, 2025:

Utility template um1 is free because it is sent while the CSW is still open, but um2 is billed the utility rate, because it is sent after CSW has closed.

Note that you can also respond for free within the CSW using any non-template message, such as a text message, which also would not incur a charge (this is not changing).

Edge case

If 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), utility templates sent to the user after the switch while the conversation is open will be free, but attributed to the open conversation. These messages will have a pricing_model of CBP and the utility conversation ID will be assigned to conversation.id in status messages webhooks. Once the conversation closes, subsequent utility messages sent to the user will follow the new behavior illustrated above.

Free utility template Cloud API webhooks

Use the pricing object in status messages webhooks as follows to determine if the webhook is associated with a free (or billable) utility template.

Starting July 1, 2025:

"pricing": {
  "billable": false,                // vs. "true" for a billable utility template
  "pricing_model": "PMP",           // new value, will be set to "PMP"
  "type": "free_customer_service",  // new property, vs. "regular" for a billable utility template
  "category": "utility"
}

Free utility template On-Premises API webhooks

Use the pricing object in message status and pricing notification webhooks as follows to determine if the webhook is associated with a free (or billable) utility template.

Version 2.61 and higher

Starting July 1, 2025:

"pricing": {
  "billable": false,                // vs. "true" for a billable utility template
  "pricing_model": "PMP",           // new value, will be set to "PMP"
  "type": "free_customer_service",  // new property, vs. "regular" for a billable utility template
  "category": "utility"
}

Version 2.60 and lower

Starting July 1, 2025:

"pricing": {
  "billable": false,       // vs. "true" for a billable utility template
  "pricing_model": "PMP",  // will be set to "PMP"
  "category": "utility"
}

Free utility template analytics

Starting July 1, 2025, free utility templates message will have the following values in data point objects returned in pricing analytics responses:

{
  "pricing_analytics": {
    "data": [
      {
        "data_points": [
          {
            "start": <START_TIME>,
            "end": <END_TIME>,
            "volume": 1,
            "pricing_type": "FREE_CUSTOMER_SERVICE",  // Will be set to "FREE_CUSTOMER_SERVICE"
            "pricing_category": "UTILITY",            // Will be set to "UTILITY"
          },
          ...
        ]
      }
    ]
  }
}

Expansion of authentication-international rates

Effective April 1, 2025, we are lowering our authentication-international rates in Egypt, Nigeria, Pakistan and South Africa, as part of continued efforts to ensure our prices are on-par with alternate channels.

Effective February 1, 2025, any business eligible for authentication-international rates will be charged these rates across 7 additional markets listed below, except for the market that matches their Primary Business Location (where they will continue to be charged the authentication rate).

We will continue to notify businesses 30 days prior to authentication-international charges starting.

  • Egypt (+20)
  • Malaysia (+60)
  • Nigeria (+234)
  • Pakistan (+92)
  • Saudi Arabia (+966)
  • South Africa (+27)
  • United Arab Emirates (+971)

Updates to rates are available in the rate cards below.

Starting July 1, 2025, the eligibility threshold for authentication-international rates will be based on authentication messages sent instead of authentication conversations opened across all 9 markets that have authentication-international rates.

Rate cards

Our current rate cards are available here. They reflect all changes to rates through April 1, 2025.

Complete timeline

October 10, 2024

  • Emails announcing our pricing update and details about the update are sent and specify if you are in the Phase 1 or Phase 2 group of the per-message pricing rollout.

November 1, 2024

  • Service conversations are now free for all businesses on our platform.
  • Utility conversation rate is now lower for the "Rest of Africa" region. See Rate Cards above for this rate.

January 1, 2025

  • We count the number of authentication conversations you open with WhatsApp users across India, Indonesia and the seven additional markets when determining your eligibility for authentication-international rates.

January 7, 2025

  • A new version of On-Premises API is available. If you are an On-Premises API user, we recommend that you update to this version before July 1, 2025. If you do not upgrade to this version on or before July 1, 2025, any messages webhooks that include pricing information will have a pricing_model value of PMP instead of CBP, and conversation objects will have inaccurate data.

February 1, 2025

April 1, 2025

  • Lower international-authentication rates now apply for Egypt, Nigeria, Pakistan and South Africa.

July 1, 2025

  • Per-messaging pricing now applies to businesses.
  • Utility templates sent within an open customer service window are free for all businesses.
  • The pricing_analytics field is now available to all businesses.
  • Authentication-international eligibility is now counted using messages sent instead of conversations opened for all businesses.
  • Authentication-international rates now apply per-message (instead of per-conversation) for all businesses.
  • For Cloud API version 23.0 and lower, id will be set to a unique ID per-message, instead of per-conversation, in status messages webhooks, unless the webhook is for a free entry point conversation message.
  • For Cloud API version 24.0 and higher, the conversation object will only be included in status messages webhooks for messages that are part of a free entry point conversation.

Late October or early November, 2025

  • For Graph API version 25.0 (available late October or early November, 2025) or higher, conversation analytics requests, the conversation_analytics field will return an error.

Document changelog

April 18, 2025:

April 1, 2025:

  • Removed temporary rate cards that reflected lower authentication-international rates for Egypt, Nigeria, Pakistan and South Africa and updated text to link to main pricing rate, which now include these lower rates.

March 27, 2025:

  • Added information card announcing reduction in international-authentication rates for Egypt, Nigeria, Pakistan and South Africa.
  • Add April 1, 2025 to complete timeline, announcing reduction in international-authentication rates for Egypt, Nigeria, Pakistan and South Africa.

March 6, 2025:

  • Removed references to phased rollout for per-message pricing.
  • Added a new, single rollout date of July 1, 2025 for per-message pricing and updated the launch date for free utility messages within a customer service window from April 1, 2025 to July 1, 2025.
  • Changed pricing.type property in Cloud API and On-Premises API availability date to July 1, 2025.
  • Changed pricing_model new "PMP" value availability date to July 1, 2025.

February 25, 2025:

  • Changed date for Phase 1 group start date, as well as all dependent webhook, pricing analytics, and authentication-international eligibility and rates from April 1, 2025, to May 1, 2025.

December 20, 2024:

October 31, 2024:

October 28, 2024: