How is pricing information included in webhooks?
When a message is sent through the WhatsApp Business Platform, pricing information is only provided in the message status webhook (not in the initial send response). This webhook is the source of truth for tracking billable usage across both the Cloud API and On-Premises API.
✅ WHERE TO FIND PRICING
Pricing details are embedded in the statuses array of the webhook payload. They appear after delivery, which means the amount shown is final and billable.
Example Payload (Cloud API):
{
"statuses": [
{
"id": "wamid.HBgMNT...",
"status": "delivered",
"timestamp": "1693490986",
"pricing": {
"billable": true,
"pricing_model": "CBP",
"category": "utility",
"currency": "USD",
"price": 0.0075
}
}
]
}
🛠️ HOW TO USE PRICING DATA
You can use the pricing object to:
- Track costs in analytics dashboards or CRMs
- Classify spend by category (e.g., utility vs. marketing)
- Reconcile invoices against usage logs
- Trigger alerts when spend exceeds thresholds
⚖️ DO / DON’T FOR PRICING DATA
Do | Don’t |
|---|---|
Use delivered webhooks as the final cost reference | Assume the send API response contains pricing |
Store webhook logs for monthly invoice reconciliation | Trust local counters without invoice cross-check |
Rely on the category field to allocate usage by type | Manually tag messages with guessed categories |
Configure dashboards to track currency from WABA billing | Hard-code "USD" if your account bills in another currency |
🔍 CLOUD API VS. ON-PREMISES DIFFERENCES
Field | Cloud API | On-Premises API |
|---|---|---|
pricing_model | Always "CBP" | May vary or be omitted on older versions |
currency | Defaults to USD (or your WABA billing setup) | Mirrors configured local currency |
category | Always provided (utility, marketing, authentication, service) | Same, but legacy setups may omit |
📌 IMPORTANT NOTES
- Conversation vs. Message: WhatsApp charges per conversation window, not per individual message. The webhook’s price reflects the applicable conversation category charge.
- Retries don’t cost extra: If a message is retried or re-delivered within the same conversation window, you’re not billed again.
- Currency alignment: The currency shown in the webhook matches your WABA billing settings (e.g., INR, EUR, GBP).
💡 PRO TIP
Maintain a dedicated billing log that stores every webhook with pricing data. This ensures:
- Accurate month-end reconciliation with Meta invoices
- Visibility into spend by conversation type
- Faster resolution in case of billing disputes
✅ SUMMARY
- Pricing is included in message status webhooks after delivery.
- The pricing object shows billability, category, currency, and price.
- Always reconcile webhook data with invoices to ensure accurate billing.
Need help interpreting pricing fields or setting up reconciliation? Contact WhatsApp Business Support.
Updated on: 23/09/2025