How does Meta handle billing for conversations?
Meta bills WhatsApp Business Accounts (WABA) based on conversation categories. There are four categories:
- Marketing → Paid
- Utility → Paid
- Authentication → Paid
- Service → Free (if customer-initiated)
Each conversation type runs on a 24-hour billing window per category per customer.
📊 WhatsApp Conversation Categories & Billing Rules
Category | Who Starts It | Message Type | Billed? | Description |
|---|---|---|---|---|
Marketing | Business | Template (Promos, Offers) | ✅ Paid | Promotions, upsells, re-engagement |
Utility | Business | Template (Updates) | ✅ Paid | Order status, shipping, reminders |
Authentication | Business | Template (OTP, Login) | ✅ Paid | Verifying identity via OTP or login links |
Service | Customer | Free-form (24h) | ❌ Free | Customer-initiated chats (support, queries) |
🖼️ Billing Flow Diagram
✉️ Template-Driven Conversations (Paid)
- Business-initiated messages must use pre-approved templates.
- Each template triggers a new 24-hour billing window if no same-category window is active.
- Multiple categories can overlap (e.g., 1 Marketing + 1 Utility window active simultaneously).
💬 Service Conversations (Free)
- Triggered only when a customer sends the first message.
- Business can respond using free-form messages for 24 hours.
- No billing applies during this window.
⚠️ Key Billing Notes
- Charges apply per 24-hour window, per category, per customer.
- Service (customer-initiated) is always free, unless a template triggers a parallel paid window.
- Multiple billing windows can overlap (Service + Marketing + Utility simultaneously).
- Conversation pricing varies by region — refer to Meta’s official rate card.
- Templates must be correctly categorized or may be rejected by Meta.
🔌 API Example & Schema
Sample API Response
{
"conversation": {
"id": "conv123",
"category": "utility",
"origin": "business_initiated",
"window": "24h",
"charge": "applied"
},
"message": {
"type": "template",
"template_name": "shipping_update"
}
}
Schema Reference
{
"conversation_id": "string",
"category": "marketing | utility | authentication | service",
"origin": "business_initiated | customer_initiated",
"window": "24h",
"charge": "applied | free"
}
📚 Related FAQs
- What qualifies as a Marketing vs. Utility message?
- How are free Service conversations tracked?
- Why was I charged multiple times for one customer?
Updated on: 21/09/2025