## Overview

The **WhatsApp cost center** shows what messages sent through the WhatsApp API cost, message by
message. For every message sent by a **WhatsApp Cloud**, **Coexistence** or **360dialog** inbox,
Meta reports in its delivery update **whether** that message is billable and in which **category**
(marketing, utility, authentication or service). ConversaLabs records that fact and prices it with
**Meta's official rate card**, in the right market and currency.

In one place you can answer:

- how much the account spent this month, by inbox, category and campaign;
- how much of the estimated monthly allowance of **1,000 service messages** each number has used;
- how many messages were **free**, and why;
- how many are still **awaiting delivery** (Meta only bills what is delivered);
- how many were **not billed** because they failed;
- what a specific conversation cost.

> **Important:** Meta says **whether** a message is billable, but it generally **does not report the
> amount** in the delivery update. Every amount in this cost center comes from the **official rate
> card** (or your account's custom rate) and is a faithful estimate, not Meta's invoice. The exception
> is marketing sent with a **maximum price** through the Marketing Messages API: in that case Meta
> reports the estimated cost on the message itself, and the platform uses that amount, unless the account
> has a **custom rate** for that market and category: the account rate wins, and Meta's amount stays in
> the message detail as a reference. The only total Meta itself reports is shown in the **Reconciliation
> with Meta** block.

## Prerequisites

- The **WhatsApp cost center** feature enabled on your account. While it is off, nothing is recorded
  and no cost screen appears.
- At least one **WhatsApp Cloud**, **Coexistence** or **360dialog** inbox. **WhatsApp Web** inboxes are
  not billed by Meta.
- Permission:
  - **see amounts**: administrators and roles allowed to **manage inboxes** or to **manage the WhatsApp
    Hub**, always limited to the inboxes the role can reach;
  - **manage** (rate cards, custom rate, historical estimate and visibility in conversations):
    administrators only.

## Step by step

1. Open **Reports → WhatsApp costs** in the sidebar.
2. Pick the **period**, the **inbox** and the **display currency** in the filter bar. Filters live in
   the page address, so you can reload or share the link without losing the view.
3. Move through the tabs:
   - **Overview**: the period's four totals (Billable, Awaiting delivery, Free and Not billed), the
     **Service messages this month** card (billed, free under the estimated monthly allowance and how many of the
     1,000 were already used), the daily series by category, the grouping by inbox, category,
     campaign, sender or conversation, the reconciliation with Meta and the paginated message list;
   - **Usage**: the billing month, with the estimated service-message allowance, free messages by reason and
     billable ones by category (see the sections below);
   - **By inbox**: the cost of each number, with its currency, the partner badge and the last
     reconciliation date;
   - **Campaigns**: what each campaign cost and how much was not billed because of failures;
   - **Rate cards** (administrators only): the official rate cards in effect and the custom rate.
4. Use **Sync with Meta** to refresh the reconciliation now instead of waiting for the next automatic
   read.

## Settings & options

### Measured Maestro subtotal in a call

When a call shows Maestro usage, its US dollar amount can appear as **Measured subtotal** and
**At least**. This happens when a model request has no confirmed completion yet, even if other
responses in the call have already been measured. ConversaLabs preserves the known portion and
keeps the complete cost unconfirmed. The subtotal stays separate from WhatsApp's currency and costs.
For more about measurement, see
[Brain usage](/hc/ajuda/articles/maestro-brain-consumo-de-ia-por-conta-en).

### What changed on 2026-10-01

Since **2026-10-01** these Meta billing rules apply; the allowance mentioned below is a platform
estimate:

- **Service messages are billed.** Free-form text sent inside the 24-hour customer service window is
  now billed per **delivered** message, at the market's utility and authentication rate, with no
  volume tiers. Until 2026-09-30 it was free.
- **The platform estimates a monthly allowance** of **1,000 delivered service messages per number**
  (see the section below). The projection applies a cost after it; actual billing follows Meta's report.
  Estimated monthly allowance; Meta does not publish this limit in the documentation tracked here.
- **Utility inside the window is billed.** A utility message sent while the customer service window is
  open is now billed. Until 2026-09-30 it was free.
- **Reactions** are never billed and do not count toward the estimated allowance.
- The **ad's free window** (Click-to-WhatsApp) went from 72 hours to **up to 7 days**. Meta's rule: if
  the business responds within the 24-hour customer service window using **any type of message**, that
  reply is free and opens the free window, **starting from the time of the reply**; while it is open,
  **any message is free, templates included**. Only a reply sent through the **Cloud API** opens the
  window: a reply over WhatsApp Web does not. Meta Business Agent messages are still charged per token
  inside it.
- **New rate cards** took effect. In Brazil the amounts did not change (see **Rate cards**).
- The **24-hour customer service window did not change**: it still defines when you can reply with
  free-form text.

The **Usage** tab's timeline shows which rule applies to each period.

### Message states

| State | What it means | Counts as cost? |
|---|---|---|
| **Awaiting delivery** | Meta accepted the message but has not confirmed delivery yet. The amount shows as provisional. | Not yet |
| **Billable** | Delivered and marked billable by Meta. | Yes |
| **Free** | Delivered at no charge, with the reason (see the table below). | No |
| **Not billed** | Failed, or went 30 days without a delivery confirmation. | No |
| **New format, under review** | Meta sent a billing format we have not verified yet. It stays out of every total until it is checked. | No |

### Free reasons

| Reason | When it shows |
|---|---|
| **Monthly service-message allowance** | Since 2026-10-01: a service message treated as inside the number's estimated monthly allowance of 1,000; the limit does not prove it is free at Meta. |
| **24-hour customer service window** | Until 2026-09-30: a message sent while the customer service window was open, before service charging started. |
| **Ad free window (up to 7 days)** | A message sent inside the window opened by a Click-to-WhatsApp ad. Inside it, every message is free. |
| **WhatsApp Web** | A message sent from the WhatsApp Web inbox, which Meta does not charge for. |
| **WhatsApp Business app** | A message sent from the app on a **Coexistence** inbox. |

The platform follows what Meta reports on each message: if Meta sends a message as free, it shows as
free.

### Monthly service-message allowance

The platform uses an **estimated monthly allowance of 1,000 delivered service messages per number**.
Estimated monthly allowance; Meta does not publish this limit in the documentation tracked here. The quantity, message types and reset below are local assumptions:

- in the estimate, **1:1 and group** service messages **share the same allowance**; in a group, each
  recipient the message is delivered to uses one estimated unit;
- the estimate **does not roll over**: the balance does not carry into the next month, and the count
  starts over every month;
- the documentation tracked here does not confirm the reset or its time zone. The platform uses the
  WhatsApp account's time zone, the same one as the **Usage** tab's billing month, and says so on
  screen;
- **reactions** do not count in the estimate;
- after the 1,000 in the estimate, a cost is projected at the recipient market's official service rate;
  actual billing depends on Meta's report.

The estimated allowance shows **by default** in three places: the **Usage** tab, the **Service messages this
month** card on the **Overview**, and the **Cost of this conversation** block. Each one shows how many
messages were **used**, how many **remain**, the **date the allowance ran out** in the estimate (when
it did) and the **price of each message after it**, projected from the rate in force. Since October 2026, the **Service messages this month** card says
how many messages were **billed** and how many are presented as **free under the monthly allowance**
in the estimate, without confirming that limit as a Meta rule.

The estimated count uses what Meta reports on each **delivered** message; those reports do not
confirm the allowance, its types or its reset. Messages with no delivery confirmation yet are left
out until the confirmation arrives.

To hide the allowance, an administrator turns off **Show the 1,000 service-message allowance** in
**Settings → Account Settings → Costs in conversations**. Hiding it does not change any amount.

**Government and non-profit organizations.** Until **2027-12-31**, service messages stay free above
the estimated allowance for governments and non-profits that Meta considers eligible. Meta decides eligibility,
and there is no programmatic way yet to know whether an account is eligible. The platform follows what
Meta reports on each message: if it arrives as free, it shows as free.

**Payment method.** If Meta's messaging account **has no payment method on file**, verify that
setting before relying on billable messages. The estimated allowance does not confirm how far Meta
will deliver or a block after it. Add a payment method at Meta; on an account **billed by a partner**,
the payment method is the partner's.

### Usage tab

The **Usage** tab shows the billing month in the WABA time zone and the reset date used by the
platform's estimate, without confirmation of the allowance reset by Meta. It includes:

- each number's estimated **service-message allowance**: estimated usage and remaining allowance, the
  date it ran out in the estimate and the projected price after it;
- **Free by reason**: estimated monthly service-message allowance, 24-hour customer service window (until
  2026-09-30), ad free window (up to 7 days), WhatsApp Web and WhatsApp Business app (Coexistence);
- **Billable by category**: quantity, unit rate, amount and origin;
- **Awaiting delivery** and **Not billed**.

### Where the amount comes from

Every amount states its origin: **Official list rate**, **Estimated volume tier** or **Account custom
rate**. For marketing sent with a **maximum price** through the Marketing Messages API, the amount is
the estimated cost Meta reports on the message, with the origin **Cost reported by Meta**; without a
maximum price, that marketing uses the rate card's marketing rate. If the account has a custom rate for
the market and category, it wins over the cost reported by Meta, which shows in the entry detail as
**Value reported by Meta**.

When the account is **billed by a partner** (a BSP), the label adds "· billed by a partner": in that
case Meta does not report the cost through the API, only the volume, the amount comes from the rate
card and the partner may charge a different amount.

### Currency

The currency is the **WhatsApp Business account (WABA)** currency, read directly from Meta. Meta bills
in 16 currencies, and the platform loads the official rate cards in USD, in BRL and in the currencies
of the connected accounts. Conversion to the display currency is for reading only and always shows the
exchange rate and date used. Until the WABA currency has been read, amounts are marked **Unknown
currency**, and different currencies are never added together.

Businesses billed by Meta in Brazil (Sold-To Brazil) must migrate their messaging account to **BRL by
2027-06-30**. The migration is done with Meta.

### Market

The price depends on the destination number's **market** (for example Brazil, North America or Rest
of Latin America), following Meta's official map, which the platform loads on its own. A number whose
market is not recognized stays **New format, under review**, with no amount: the platform never assumes
Brazil.

Since 2026-10-01 nine markets have their own rates: Bangladesh, Iraq, Kazakhstan, Kuwait, Morocco,
Nepal, Oman, Sri Lanka and Ukraine. The platform recognizes the eight that have their own country code.
Kazakhstan shares the +7 code with Russia and Meta has not yet published how to tell them apart, so
Kazakhstan has no market of its own on the platform until Meta publishes that split.

### Meta Business Agent

If the account uses the **Meta Business Agent** (Meta's AI agent that replies on WhatsApp), the Overview shows
**administrators** its own block with the period's **billable messages**, **billed tokens** and **amount charged**, read from Meta.
Since 2026-08-01 Meta charges these messages per token, in a single charge that includes delivery, and they
are still charged inside an ad's free window.

- The block is for administrators only: the amount belongs to the agent's billable account and cannot be
  split by inbox.
- The block shows up when the agent account is configured or when Meta used Conversation Routing on a Cloud
  API number of this account.
- Under **Rate cards**, the **Meta Business Agent** section is always visible to administrators, even before
  there is any usage. There they enter the **Meta Business Agent billable account ID** (in Billing Hub, under
  Accounts › Meta Business Agent accounts) and **that account's currency**. Saving does not query Meta. Meta
  does not report the currency through the API, so the amount shows in that currency, with no conversion. The
  block's **Configure the agent account** button takes you to that section.
- The request uses the WhatsApp token the account already has. It needs the **business_management**
  permission: on a direct connection, grant it to the system user when you generate the token; through a
  Solution Provider, it requires Advanced access in App Review, the permission in the Embedded Signup
  configuration and the client completing Embedded Signup again. Without it, the block shows **Permission
  required**.
- With no usage in the period, the block shows **No Meta Business Agent usage**. Days follow the agent
  account's timezone, and the amount is not an invoice.
- An answer from Meta is kept for 15 minutes, and an error for 5 minutes. **Try again** asks Meta again right
  away, for example after you grant the permission.

### Costs in conversations

In **Settings → Account Settings → Costs in conversations**, the administrator chooses what the team
sees inside a conversation:

| Option | What the team sees |
|---|---|
| **Hidden** | No cost in the conversation. The cost center stays available to whoever has permission. |
| **Indicator only** (default) | Whether the message is free or billable, and why, with no amounts. Not even administrators see amounts in the conversation: the full number lives in the cost center. |
| **Indicator and amounts for people who can see costs** | Administrators and roles with inbox or Hub permission see the amounts; everyone else sees only the indicator. |
| **Indicator and amounts for every agent** | Every agent who opens the conversation sees the amount of each message. |

The same section holds the **Show the 1,000 service-message allowance** preference, on by default.

In conversations this shows up in three places, and **none of it blocks sending**:

- a **notice above the reply box**, saying whether the reply will be free or billed and until when the
  customer service window stays open:
  - while the estimate shows a remaining balance, it presents the reply as **free under the monthly allowance**,
    with how many of the 1,000 were already used (for example, "820 of 1,000 used");
  - after the estimated allowance, it presents the reply as **will be billed**, with the projected
    amount for people who can see it. Those notices are estimates; actual billing depends on Meta's report;
  - inside an ad's free window, it shows the reply is **free because of the ad**; this also applies to the
    first Cloud reply within the 24 hours, which is the one that opens the window;
  - a **utility** template sent while the window is open shows as billed since 2026-10-01;
  - in a hybrid inbox, switching the send to WhatsApp Web turns the notice into "Meta does not charge
    for it";
- a **discreet marker on each sent message** (Free, Billable, Awaiting or Not billed);
- the **Cost of this conversation** block in the side panel, with the window, the month's totals, the
  number's estimated service-message allowance and a link to the cost center.

Each inbox can **inherit** the account setting or **override** it in the inbox's **Costs** tab, with
a **Restore the account default** button to go back.

### Inbox Costs tab

In **Settings → Inboxes → (inbox) → Costs** you see the WABA billing currency, the partner badge,
the month's totals, the reconciliation with Meta and that inbox's visibility. On **Coexistence**
inboxes, a notice reminds you that messages sent from the **WhatsApp Business app** are not billed
and do not open or extend the API window. On a **WhatsApp Web** inbox the tab says Meta does not
charge for it. On a **360dialog** inbox there is no reconciliation, because Meta does not deliver
that WABA's analytics.

### Campaign cost

The detail of a WhatsApp Cloud campaign shows four cards: **Billable**, **Awaiting delivery**, **Not
billed** and **Estimate at dispatch** (the price frozen when the campaign was sent). The **Cost**
column of the recipient list shows the state and what each recipient actually cost. A retry adds to
that recipient's cost. Campaigns sent over WhatsApp Web show no cost.

### Rate cards (administrators)

The platform loads Meta's official rate cards **on its own**, including the **2026-10-01** ones, in
USD, in BRL and in the currencies of the connected accounts, plus the market map. There is no manual
step. The **Rate cards** tab lists those cards by effective date and currency, with the source and the
file's verification code. The **service** column of the 2026-10-01 card is the **official** one
published by Meta.

Per-message rate in **Brazil** from 2026-10-01 (same as the previous card):

| Category | USD | BRL |
|---|---|---|
| Marketing | 0.0625 | 0.3217 |
| Utility | 0.0068 | 0.0350 |
| Authentication | 0.0068 | 0.0350 |
| Service (after the estimated allowance) | 0.0068 | 0.0350 |

Other markets did change, such as Mexico, Saudi Arabia, the United Arab Emirates, Pakistan, Peru,
South Africa and the Rest of Asia Pacific and Rest of Middle East regions.

This tab also holds:

- **Sync official rate card**, which forces a read now and shows the **real result**, including when
  the read fails;
- the **custom rate** per market, category and currency, with **Restore default** per line;
- **Estimate history**, which prices messages sent before the feature was enabled. Those amounts are
  always marked as estimates and never pass for a confirmed charge.

## Use cases

- **Close the month**: open **Usage**, check billable messages by category and compare with Meta's
  reconciliation.
- **Track the service allowance**: see estimated usage of each number's 1,000 service messages,
  the exhaustion date in the estimate and the projected cost of each reply after it.
- **Find the most expensive campaign**: in the **Campaigns** tab, sort by billable amount and open the
  detail.
- **Guide the team**: turn on **Indicator only** to show a reply's projected cost, outside the
  window or after the estimated allowance, without exposing amounts.

## Tips, limits & best practices

- The amount comes from the **rate card**, not the invoice. On an account **billed by a partner**, Meta
  does not report the cost through the API and the partner may charge differently from the rate card:
  check the price agreed with them and record it as a **custom rate**.
- **WhatsApp Web is not billed** by Meta, and neither are messages from the **WhatsApp Business app**
  (Coexistence). In the platform's estimate, neither counts toward the allowance; that does not confirm
  the types included in an official Meta allowance.
- **Reactions** are never billed and do not count toward the estimated allowance.
- A message only becomes **Billable** when Meta confirms delivery. If it goes **30 days** without that
  confirmation, it becomes **Not billed**.
- If the messaging account is yours (not billed by a partner), check that it has a **payment method**
  on file at Meta before relying on billable messages; do not use the estimated allowance as a delivery
  guarantee.
- The campaign cost refreshes about 10 seconds after each state change.
- Messages are kept for **24 months**. Daily totals are kept permanently.

## Troubleshooting

- **Meta Business Agent: Permission required**: the account's WhatsApp token lacks the
  business_management permission; grant it as described in **Meta Business Agent**.
- **"WhatsApp costs" does not appear under Reports**: the feature is not enabled on the account, or
  your role is not allowed to see costs.
- **I see "Billable" but no amount**: visibility is set to **Indicator only**, or your role cannot see
  amounts. Check **Settings → Account Settings → Costs in conversations**.
- **I do not see the allowance**: the **Show the 1,000 service-message allowance** preference was
  turned off. An administrator can turn it back on in **Settings → Account Settings → Costs in
  conversations**. It only appears for WhatsApp Cloud numbers.
- **The allowance shows fewer messages than the team sent**: in the estimate, only service messages
  Meta confirmed as delivered count. The ones still awaiting delivery come in when the confirmation
  arrives, and reactions do not count in the estimate; that does not confirm the types of an official allowance.
- **A service message went out free after the estimated allowance**: the platform follows what Meta reports on
  each message. That is the case, for example, for governments and non-profits Meta considers eligible,
  until 2027-12-31.
- **Support messages stopped being delivered after the month's 1,000 in the estimate**: verify the
  payment method at Meta and the provider's report; the estimated limit does not confirm the cause of
  the interruption. If a payment method is missing, add one at Meta; on an account billed by a partner,
  talk to the partner.
- **The notice above the reply box does not appear**: the platform does not have trustworthy data for
  that conversation yet. It prefers to show nothing rather than a wrong "free".
- **"Unknown currency"**: the WABA currency has not been read from Meta yet. Amounts are still recorded
  and stay marked until it is read.
- **"New format, under review"**: Meta sent a new category or type, or the number's market was not
  recognized. The message stays out of the totals until it is verified.
- **The reconciliation shows volume only**: the account is billed by a partner, and Meta does not
  report cost through the API in that case.
- **The sync with Meta failed**: Meta did not answer the reconciliation read. Rate card amounts stay
  valid; try again later.
- **"Sync official rate card" showed a failure**: reading the official rate cards did not work this
  time. The rate cards already loaded stay in force; try again later.

## See also

- [WhatsApp dispatch cost calculator](/hc/ajuda/articles/campaigns-whatsapp-dispatch-cost-en)
- [WhatsApp campaign results](/hc/ajuda/articles/campaigns-whatsapp-campaign-results-en)
- [WhatsApp hybrid inbox](/hc/ajuda/articles/inboxes-channels-whatsapp-hybrid-inbox-en)
- [WhatsApp sending optimization](/hc/ajuda/articles/inboxes-channels-whatsapp-outbound-optimization-en)
- [The ad's free window, insights and ad automation](/hc/ajuda/articles/growth-marketing-ads-manager-window-insights-en)
- [WhatsApp Coexistence](/hc/ajuda/articles/inboxes-channels-whatsapp-coexistence-en)
- [Reports overview](/hc/ajuda/articles/reports-overview-en)