How to check Usage & Statistics
Track WhatsApp usage and costs for each client and phone number (channel) through the 360dialog Hub, the Partner API, or webhooks. Usage can be checked regardless of whether the account is on Direct Payment or Partner Payment. Final charges always come from Meta’s monthly invoice.
There are multiple ways to check it:
Pricing is message-based. All in-month usage data is an estimate and may slightly differ from the final invoice issued by Meta.
View usage visually 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.
In the Monthly usage graphs, you can 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.

Get usage programmatically per channel via API
Check the status and analysis of message usage separately using the following methods:
Get Channel Usage
Retrieve channel-level pricing analytics for messages delivered within a specific date range. This endpoint is aligned with Meta’s pricing structure and provides granular breakdowns.
 GET https://hub.360dialog.io/api/v2/partners/{partner_id}/clients/{client_id}/channels/{channel_id}/info/usage
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 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.
Includes MM Lite messaging pricing and statistics
Query parameters
Use the following input parameters to filter and shape the usage data:
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
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
granularity*
string
The granularity by which you would like to retrieve the analytics. One of DAILY, HALF_HOUR, MONTHLY. 
countries
list of ISO codes
The countries list for which you would like to retrieve analytics. If not provided, usage data will be returned for all countries you have communicated with.
Example: US, IN, BR
pricing_types
list
Filter by pricing type. Supported values: FREE_CUSTOMER_SERVICE, FREE_ENTRY_POINT, REGULAR.
pricing_categories
list
Filter by pricing type. Supported values: AUTHENTICATION, AUTHENTICATION_INTERNATIONAL, MARKETING, SERVICE, UTILITY, MARKETING_LITE.
metrics
list
Which metrics to include. Defaults to all.
Options: COST, VOLUME. 
dimensions
list
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, DIRECTION.
Dimensions explained
pricing_category– Message category (e.g., authentication, marketing, utility, MM lite).pricing_type– Message type:regular,free_entry_point(when the conversation is started by the user using CTAs like “Click-to-WhatsApp” or “Facebook WhatsApp CTA”) , orfree_customer_service(when the conversation was opened by the user by directly messaging you).country– Destination country of the user.tier- Applicable monthly pricing tier (e.g., 0:750000). More about pricing tiers
Request example
curl --request GET
--url https://hub.360dialog.io/api/v2/partners/{partner_id}/clients/{client_id}/channels/{channel_id}/info/usage?start_date=1704067200&end_date=1752105600&granularity=daily&dimensions=pricing_type&dimensions=pricing_category&dimensions=country&dimensions=tier&dimensions=phone
--header 'Authorization: '
--header 'Content-Type: application/json'Response example
{
  "id": "WABA_ID",
  "currency": "EUR",
  "pricing_analytics": {
    "data": [
      {
        "data_points": [
          {
            "start": 1749106800,
            "end": 1749193200,
            "country": "IN",
            "tier": "0:750000",
            "pricing_type": "REGULAR",
            "pricing_category": "AUTHENTICATION_INTERNATIONAL",
            "volume": 2,
            "cost": 4.6,
            "phone_number": "15550783881"
          },
          {
            "start": 1748934000,
            "end": 1749020400,
            "country": "US",
            "tier": "0:MAX",
            "pricing_type": "REGULAR",
            "pricing_category": "MARKETING",
            "volume": 1,
            "cost": 10,
            "phone_number": "15550783881"
          },
          {
            "start": 1748934000,
            "end": 1749020400,
            "country": "US",
            "tier": "0:MAX",
            "pricing_type": "REGULAR",
            "pricing_category": "MARKETING_LITE",
            "volume": 1,
            "cost": 10,
            "phone_number": "15550783881"
          },
          {
            "start": 1748847600,
            "end": 1748934000,
            "country": "US",
            "pricing_type": "FREE_ENTRY_POINT",
            "pricing_category": "SERVICE",
            "volume": 6,
            "cost": 0,
            "phone_number": "15550783881"
          }
        ]
      }
    ]
  },
  "call_analytics": {
    "data": [
      {
        "data_points": [
          {
            "start": 1749106800,
            "end": 1749193200,
            "country": "IN",
            "count": 2,
            "cost": 4,
            "phone_number": "15550783881",
            "direction": "BUSINESS_INITIATED"
          }
        ]
      }
    ]
  }
}Rate Limits:
10 requests/hour per phone number (channel)
200 requests/hour per WABA
Get Channel Balance
Use this endpoint to retrieve balance information only for a specific channel. Usage metrics returned by this endpoint are deprecated and will no longer be returned.
GET https://hub.360dialog.io/api/v2/partners/{partner_id}/clients/{client_id}/channels/{channel_id}/info/balance
Path Parameters
partner_id*
string
ID of the partner
client_id*
string
ID of the client
channel_id*
string
ID of the channel
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)
Request example
curl --request GET
--url https://hub.360dialog.io/api/v2/partners/{partner_id}/clients/{client_id}/channels/{channel_id}/info/balance?start_date=1691629200&end_date=1691758799&granularity=day
--header 'Authorization: '
--header 'Content-Type: application/json'Response example
   {
        "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 Client Balance
Soft Deprecation Notice: Starting from July 1, 2025, the usage portion of this endpoint is soft-deprecated.
It previously returned client-level balance and usage data, but is now replaced by Get Channel Balance and Get Channel Usage.
GET https://hub.360dialog.io/api/v2/partners/{partner_id}/clients/{client_id}/info/balance
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.
Request example
curl --request GET
--url https://hub.360dialog.io/api/v2/partners/{partner_id}/clients/{client_id}/info/balance
--header 'Authorization: '
--header 'Content-Type: application/json'Response example
{
        "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
          }
        ]
      }      Rate Limits:
5 requests per 30 seconds.
Via Webhook
Webhook events include message-delivery information and conversation context. You can build counters to estimate usage in real time based on those objects.
FAQ
1. Why are usage numbers different from my invoice?
Usage data in the Hub and API is based on near-real-time processing. Meta’s invoices are finalized monthly and may include adjustments. Minor differences are expected.
2. Does usage tracking work for both Partner and Direct payment accounts?
Yes. Usage tracking is available regardless of payment method. The only difference is who receives the invoice.
3. What happened to the Get client balance endpoint?
It has been deprecated and will no longer return data after July 1, 2025. Use Get channel balance for balance data and Get channel usage for usage analytics.
4. Can I still see usage per WABA or client?
Yes, but you’ll need to aggregate channel-level results from the Get channel usage endpoint across all channels within the WABA or client.
5. What is the best endpoint to use for billing dashboards?
Always use Get channel usage for accurate and detailed analytics. Combine it with Get channel balance for funds tracking.
6. Why are there different granularity options?
Granularity controls how data is grouped in time: use half_hour for high-resolution analysis, daily for regular monitoring, and monthly for summaries.
7. Are webhooks sufficient to calculate costs?
You can estimate usage from webhooks, but they are not authoritative. Always reconcile against Meta’s monthly invoice for final billing.
Last updated
Was this helpful?