Checking Usage & Statistics
Businesses using the WhatsApp Business Platform are being charged per conversation until 2025, which includes all messages delivered in a 24-hour session with a particular WhatsApp user. See Conversations documentation.
Through the Monthly usage data, you get to see the number of conversations the phone number had and when; it includes All, Free, and Paid Conversations.
This information is an estimate and can slightly differ from invoices. It can be checked in the 360dialog Hub (by Partners and Clients), via Partner API (by Partners only, which can be used to create personalized dashboards for their clients) and via Webhook notifications (which requires development of an additional counter).
Please note that final information about charges in only available in the invoices sent after the month has ended.
In the 360dialog Hub
Clients and Partners can see a specific WABA usage in the Funds dashboard. To access it, click in Show details in the specific WABA you wish to use and select Insights on the top menu.
Through the Monthly usage graphs, you get to see the number of conversations the phone number had and when; it includes All, Free, and Paid Conversations.

Here, you can also estimate costs for the future through the Approximate charges graph, which shows the estimation of the costs of charges.

If the client is registered under Direct Payment, you will also be able to see their balance settings in this same page.
In the Partner API
If your clients are registered with direct payment, you can use the check balance endpoint to get usage information.
Please see how to use this here.
Granularity
You can use the granularity parameter to retrieve metrics about the conversations associated with the WhatsApp Business Account (WABA).
Specifically, you can get the number of messages sent and delivered as well as conversation and cost information for a given period. This parameter works together with the /balance
endpoint in the Partner API. See below how to parse your request.
Get balance of Client Hub
Soft Deprecation Notice: Starting from July 1, 2025, the usage portion of this endpoint is soft deprecated. While it will continue to return aggregated usage data at the client level, we recommend using the new endpoint below to fetch usage metrics at the individual channel level:
GET https://hub.360dialog.io/api/v2/partners/{partner_id}/clients/{client_id}/channels/{channel_id}/info/usage
You can check the endpoint definition here in this section.
The current endpoint remains available for:
Fetching balance at the client or channel level (recommended use).
Aggregated usage metrics across all channels under a client (legacy support).
We advise partners to migrate to the new endpoint where possible to ensure accuracy, granularity, and long-term compatibility.
Current
GET
https://hub.360dialog.io/api/v2/partners/{partner_id}/clients/{client_id}/info/balance
Rate limit: 5 requests per 30 seconds.
Request example
curl --request GET
--url https://hub.360dialog.io/api/v2/partners/{partner_id}/clients/{client_id}/info/balance
?
start_date
=1664582400
&
end_date
=1667260799
&
granularity
=day
--header 'Authorization: '
--header 'Content-Type: application/json'
Path Parameters
client_id*
string
ID of the client
partner_id*
string
ID of the partner
Query Parameters
end_date
UNIX Timestamp
The end date in UNIX Timestamp (UTC). Returned data will be equal to or older than the specified date.
Example: 1672531200
start_date
UNIX Timestamp
The start date in UNIX Timestamp (UTC). Returned data will be equal to or newer than the specified date.
Example: 1672531200
granularity
string
The granularity by which you would like to retrieve the analytics.
Supported Options:
DAY
, MONTH
Defaults with MONTH
if no value is provided in the request.
The balance
field is only relevant for clients who are registered with direct payment.
usage
: The response contains an array called "usage" that provides a breakdown of the channel's usage in different categories. These categories may include authentication, marketing, service, utility. Each category within the array includes details such as paid quantity, price, and quantity. This allows you to analyze the usage patterns and associated costs for different aspects of the channel's messaging services.
{
"balance": 50.00,
"currency": "eur",
"last_renewal": {
"date": "2023-08-01T00:00:00Z,
"amount": 20.00
},
"bi_price_for_currency_and_client_country": 0.2,
"ui_price_for_currency_and_client_country": 0.02,
"estimated_template_cost": 0.03,
"granularity": "day",
"usage": [
{
"authentication_paid_quantity": 0,
"authentication_price": 0.0,
"authentication_quantity": 0,
"marketing_paid_quantity": 0,
"marketing_price": 0.0,
"marketing_quantity": 0,
"service_paid_quantity": 0,
"service_price": 0.0,
"service_quantity": 0,
"utility_paid_quantity": 0,
"utility_price": 0.0,
"utility_quantity": 0,
"business_initiated_paid_quantity": 5,
"business_initiated_price": 1.0,
"business_initiated_quantity": 5,
"free_entry_point": 0,
"free_quantity": 0,
"free_tier": 0,
"paid_quantity": 5,
"period_date": "2023-08-10T00:00:00Z",
"quantity": 5,
"total_price": 1.0,
"user_initiated_paid_quantity": 0,
"user_initiated_price": 0.00,
"user_initiated_quantity": 0
},
{
"authentication_paid_quantity": 0,
"authentication_price": 0.0,
"authentication_quantity": 0,
"marketing_paid_quantity": 0,
"marketing_price": 0.0,
"marketing_quantity": 0,
"service_paid_quantity": 0,
"service_price": 0.0,
"service_quantity": 0,
"utility_paid_quantity": 0,
"utility_price": 0.0,
"utility_quantity": 0,
"business_initiated_paid_quantity": 0,
"business_initiated_price": 0,
"business_initiated_quantity": 0,
"free_entry_point": 0,
"free_quantity": 0,
"free_tier": 0,
"paid_quantity": 5,
"period_date": "2023-08-11T00:00:00Z",
"quantity": 5,
"total_price": 0.05,
"user_initiated_paid_quantity": 5,
"user_initiated_price": 0.05,
"user_initiated_quantity": 5
}
]
}
Get Channel Balance
GET
https://hub.360dialog.io/api/v2/partners/{partner_id}/clients/{client_id}/channels/{channel_id}/info/balance
Request Example
curl --request GET
--url https://hub.360dialog.io/api/v2/partners/partner_id/clients/client_id/channels/channel_id/info/balance
--header 'Accept: application/json'
--header 'Authorization: '
Path Parameters
partner_id*
string
client_id*
string
channel_id*
string
Query Parameters
start_date
string
The start date in UNIX Timestamp (UTC). Returned data will be equal to or newer than the specified date.
Example: 1672531200
end_date
string
The end date in UNIX Timestamp (UTC). Returned data will be equal to or older than the specified date.
Example: 1672531200
granularity
string
The granularity by which you would like to retrieve the analytics.
Supported Options:
DAY
, MONTH
Defaults with MONTH
if no value is provided in the request.
app_ids
To get usage accumulated from selected app_ids (e.g. ?app_ids=100,200)
{
"balance": 123.5,
"bi_price_for_currency_and_client_country": 0.01,
"currency": "EUR",
"estimated_template_cost": 0.02,
"last_renewal": {
"amount": 100.5,
"date": "2019-08-24T14:15:22Z"
},
"ui_price_for_currency_and_client_country": 0.05,
"usage": [
{
"authentication_paid_quantity": 0,
"authentication_price": 0,
"authentication_quantity": 0,
"marketing_paid_quantity": 1300,
"marketing_price": 13,
"marketing_quantity": 1800,
"service_paid_quantity": 500,
"service_price": 2.5,
"service_quantity": 1000,
"utility_paid_quantity": 0,
"utility_price": 0,
"utility_quantity": 0,
"business_initiated_paid_quantity": 0,
"business_initiated_price": 0,
"business_initiated_quantity": 0,
"free_entry_point": 20,
"free_quantity": 1020,
"free_tier": 1000,
"paid_quantity": 1800,
"period_date": "2023-08-24T14:15:22Z",
"quantity": 2800,
"total_price": 12.5,
"user_initiated_paid_quantity": 0,
"user_initiated_price": 0,
"user_initiated_quantity": 0
}
]
}
Query Syntax
GET/info/balance
?
<FILTERING_PARAMETER>
/info/balance
?
<FILTERING_PARAMETER>
Example:
https://hub.360dialog.io/api/v2/partners/{partner_id}/clients/{client_id}/info/balance
?
start_date
=1664582400
&
end_date
=1667260799
&
granularity
=day
Query String Parameters
<FILTERING_PARAMATERS>
Required.
Metric filtering parameter. Append additional filtering parameters using dots.
For possible values, see:
start_date=1664582400&end_date=1667260799&granularity=day
When calling the GET request, you can attach the following{filtering-parameters}
to retrieve the cost and conversation information for a specific WABA.
Filtering Parameters
start_date
type: UNIX Timestamp
Required. The start date in UNIX Timestamp (UTC). Returned data will be equal to or newer than the specified date.
Example: 1672531200
end_date
type: UNIX Timestamp
Required.
The end date in UNIX Timestamp (UTC). Returned data will be equal to or older than the specified date.
Example: 1672531200
granularity
type: String
Required.
The granularity by which you would like to retrieve the analytics. Supported Options:
DAY
MONTH
Defaults with MONTH
if no value is provided in the request.
app_id
type: array
Available only for Get Client Balance endpoint.
An array of app_ids
for which you would like to retrieve usage. If not provided, all app ids
in the WABA are included.
Examples
With granularity parameters, you can filter and break down your results. See the code sample below for examples.
GET info/balance?start_date=1691629200&end_date=1691758799&granularity=day
A successful response returns the usage
object with the data you have requested.
{
"balance": 50.00,
"currency": "eur",
"last_renewal": {
"date": "2023-08-01T00:00:00Z,
"amount": 20.00
},
"bi_price_for_currency_and_client_country": 0.2,
"ui_price_for_currency_and_client_country": 0.02,
"estimated_template_cost": 0.03,
"granularity": "day",
"usage": [
{
"authentication_paid_quantity": 0,
"authentication_price": 0.0,
"authentication_quantity": 0,
"marketing_paid_quantity": 0,
"marketing_price": 0.0,
"marketing_quantity": 0,
"service_paid_quantity": 0,
"service_price": 0.0,
"service_quantity": 0,
"utility_paid_quantity": 0,
"utility_price": 0.0,
"utility_quantity": 0,
"business_initiated_paid_quantity": 5,
"business_initiated_price": 1.0,
"business_initiated_quantity": 5,
"free_entry_point": 0,
"free_quantity": 0,
"free_tier": 0,
"paid_quantity": 5,
"period_date": "2023-08-10T00:00:00Z",
"quantity": 5,
"total_price": 1.0,
"user_initiated_paid_quantity": 0,
"user_initiated_price": 0.00,
"user_initiated_quantity": 0
},
{
"authentication_paid_quantity": 0,
"authentication_price": 0.0,
"authentication_quantity": 0,
"marketing_paid_quantity": 0,
"marketing_price": 0.0,
"marketing_quantity": 0,
"service_paid_quantity": 0,
"service_price": 0.0,
"service_quantity": 0,
"utility_paid_quantity": 0,
"utility_price": 0.0,
"utility_quantity": 0,
"business_initiated_paid_quantity": 0,
"business_initiated_price": 0,
"business_initiated_quantity": 0,
"free_entry_point": 0,
"free_quantity": 0,
"free_tier": 0,
"paid_quantity": 5,
"period_date": "2023-08-11T00:00:00Z",
"quantity": 5,
"total_price": 0.05,
"user_initiated_paid_quantity": 5,
"user_initiated_price": 0.05,
"user_initiated_quantity": 5
}
]
}
Channel-Level Pricing Analytics Proxy Endpoint
To help partners better understand and track pricing under the new model, on July 1st we are introducing a channel-level pricing analytics proxy endpoint.
Overview:
Returns current pricing breakdowns for a specific phone number (channel) within a WABA for any messages delivered within a specified date range
Abstracts all Meta-specific complexity, so that partners don’t need to implement or maintain their own integration with Meta’s pricing services.
Allows partners to proactively monitor pricing without needing direct integration with Meta.
GET
https://hub.360dialog.io/api/v2/partners/{partner_id}/clients/{client_id}/channels/{channel_id}/info/usage
Query parameters
The endpoint supports the following optional input parameters to filter and shape the usage data:
start_date (required) - The start date in UNIX Timestamp (UTC). Returned data will be equal to or newer than the specified date.
end_date (required) - The end date in UNIX Timestamp (UTC). Returned data will be equal to or older than the specified date.
granularity (required) - The granularity by which you would like to retrieve the analytics. Supported options: ['daily', 'half_hour', 'monthly']
countries - The countries list for which you would like to retrieve analytics. Provide a 2 letter country codes for the countries you would like to include. If not provided, usage data will be returned for all countries you have communicated with.
pricing_types - Filter messages per pricing types list. Supported values: ['free_customer_service', 'free_entry_point', 'regular']
pricing_categories - Filter messages per pricing categories list. Supported values: ['authentication', 'authentication_international', 'marketing', 'service', 'utility']
metrics - Metric types you would like to receive. If not provided, we return results for all metric types. Supported options: ['cost', 'volume']
dimensions - Breakdowns you would like to apply to your metrics. If not provided, we return results without any breakdowns. Supported options: ['pricing_category', 'pricing_type', 'country', 'phone', 'tier']
Example Response
{
"id": "WABA_ID",
"currency": "USD",
"pricing_analytics": {
"data": [
{
"data_points": [
{
"start": 1749193200,
"end": 1749279600,
"country": "IN",
"pricing_type": "FREE_CUSTOMER_SERVICE",
"pricing_category": "SERVICE",
"volume": 2,
"cost": 0.00
},
{
"start": 1749106800,
"end": 1749193200,
"country": "IN",
"tier": "0:750000",
"pricing_type": "REGULAR",
"pricing_category": "AUTHENTICATION_INTERNATIONAL",
"volume": 2,
"cost": 4.60
}
]
}
]
}
}
Rate Limits:
10 requests/hour per phone number (channel)
200 requests/hour per WABA
Via Webhook
Every time a message is sent, you can see the conversation information in the webhook. You can build a counter to understand usage and statistics based on this objects.
Please see how this is presented in this specific documentation.
Last updated
Was this helpful?