This page describes the data files that RCS for Business creates to assist US
carriers with billing and auditing under the US RBM Framework. To learn more
about the US RBM Framework, you may also refer to
[usrbm.org](https://usrbm.org/rbm-message-types-and-billing-paradigms/).

[Billing report](https://developers.google.com/business-communications/rcs-business-messaging/carriers/billing/us-billing-reports#billing-reports) is an aggregated report of billable events
between launched agents and users. Billable simply means that an event is
eligible for a charge. Carriers determine whether and how billable events are
charged. All US carriers who are actively operating RCS for Business have access
to billing reports.

> [!NOTE]
> **Note:** For details about the standard billing model and a summary of billing model differences, refer to the standard [Billing FAQ](https://developers.google.com/business-communications/rcs-business-messaging/guides/learn/rbm-billing-faq).

For details about US billing classifications model, refer to the
[US Billing FAQ](https://developers.google.com/business-communications/rcs-business-messaging/carriers/billing/us-billing-faq).

## File generation

For more information, see
[File generation](https://developers.google.com/business-communications/rcs-business-messaging/carriers/billing/reports#file_generation).

## File storage and access

For more information, see
[File storage and access](https://developers.google.com/business-communications/rcs-business-messaging/carriers/billing/reports#file_storage_and_access).

### File availability

For more information, see
[File availability](https://developers.google.com/business-communications/rcs-business-messaging/carriers/billing/reports#file_availability).

## Billing reports

Billing reports are records of [billable events](https://developers.google.com/business-communications/rcs-business-messaging/carriers/billing/us-billing-reports#billable-events), which are
calculated based on the agent's billing category and the type of messages it
sends. Billing reports are available to all carriers who are actively operating
RCS for Business.

Billing reports contain confidential information, but no user Personally
Identifiable Information (PII), such as MSISDN, hashed MSISDN, or any user
unique identifier.

> [!NOTE]
> **Note:** Partners also receive aggregated daily summary reports to help them manage traffic, providing them with valuable analytics and necessary visibility into their traffic data. For more information, see [Partner billing reports](https://developers.google.com/business-communications/rcs-business-messaging/guides/learn/partner-billing-reports).

### Billing categories versus billable events

The distinction between agent
[billing categories](https://developers.google.com/business-communications/rcs-business-messaging/carriers/billing/us-billing-faq#billing-categories)
and [billable events](https://developers.google.com/business-communications/rcs-business-messaging/carriers/billing/us-billing-reports#billable-events) is key to understanding how your agent
is billable.

- **Billing category** is a fixed classification you choose when creating your agent. It determines the *method* by which your agent is billable: per message (non-conversational agents) or per session (conversational agents).
- **Billable events** are interactions between an RCS for Business agent and a user that are tracked for billing purposes (for example, `rich_message`).

### US agent billing categories

When creating an agent, the owner sets its
[billing category](https://developers.google.com/business-communications/rcs-business-messaging/carriers/billing/us-billing-faq#billing-categories)
based on how the agent will interact with users. The billing category does not
restrict the number or type of messages an agent can send. But it does determine
how the agent will be billable for messages. The two main billing categories are
described in the following table.

| Billing category | Agent type | Example use cases | Billing method |
|---|---|---|---|
| **Non-conversational** | Agents that primarily send one-way messages. | - OTPs - Alerts - Promotional offers | Billable for each message delivered to the user. |
| **Conversational** | Agents that are designed for back-and-forth exchanges with users regardless of who starts the conversation. | - Finding the right product - Booking a ticket - Troubleshooting an issue | **Billable per session** : If the session criteria are met, all rich and rich media messages within the 24-hour session window are billable at a flat rate, regardless of length or segments. **Billable per message**: If session criteria are not met or a message falls outside the 24-hour session window, the message is billable individually at a per-message rate for rich or rich media according to the individual carrier's rate card. |

#### Conversational versus non-conversational agents

There are two agent billing categories: conversational and non-conversational.

- **Non-conversational** agents are billable for each message they deliver to
  the user.

  - This category is best for agents that don't expect frequent replies.
- **Conversational** agents are billable a flat rate for
  [session(s)](https://developers.google.com/business-communications/rcs-business-messaging/carriers/billing/us-billing-model#session-billing)
  provided a session is triggered and then it will include all messages
  exchanged within a 24-hour period, including the messages that triggered the
  session. Conversational agents can still have charges for messages that
  aren't part of a 24-hour session.

  - This category is best for agents that engage in multi-turn conversations with users.

#### Session billing logic

Under the US Billing model, a session is triggered by a sequence of **4 rich or
rich media messages (including at least 2 MO and at least 1 MT messages)**
exchanged within a 24-hour window from the first message in the trigger
sequence. Once this threshold is met, all messages within that 24-hour window
are billable as a **single session** . Any messages that fall outside or fail to
trigger a session are billable at the standard **per-message rate** for rich or
rich media according to the individual carrier's rate card.

The following diagram shows an example of an A2P billing session for
conversational agents.

- MT (Mobile Terminated) is a message sent by the business.
- MO (Mobile Originated) is a message or action initiated by the user.

![US billing - Session](https://developers.google.com/static/business-communications/rcs-business-messaging/carriers/images/us-billing-session.png "In the US Billing model, a session is triggered by a sequence of 4 messages, including 2 MO and 2 MT messages")

### Billable events

Messaging flows are categorized by their origin and direction. To describe the
direction of messaging traffic, US carriers typically use **MT/MO** terminology.
These terms correspond to the **A2P/P2A** terminology used throughout the RCS
for Business documentation. Here is a quick breakdown of how these terms align:

- **A2P (Application-to-Person) is MT (Mobile Terminated)**: A message sent by the business.
- **P2A (Person-to-Application) is MO (Mobile Originated)**: A message or action initiated by the user.

| Event | Description | Non-conversational agents | Conversational agents |
|---|---|---|---|
| `a2p_rich_message` | An agent-sent message containing only text, suggested replies, or specific suggested actions (Dial a number, Open URL in browser). | Always treated as an individual billable event. Billable per message based on segments (1 segment is equal to 160 UTF-8 bytes). | Treated as an individual billable event unless it becomes part of a session. |
| `p2a_rich_message` | A user-sent message containing only free-form text or text from tapping a suggested reply. | Always treated as an individual billable event. Billable per message based on segments. | Treated as an individual billable event unless it becomes part of a session. |
| `a2p_rich_media_message` | An agent-sent message containing media (image, video, audio), rich cards, carousels, or complex actions like "View location". | Always treated as an individual billable event. Billable as a single, flat-rate event regardless of size or content. | Treated as an individual billable event unless it becomes part of a session. |
| `p2a_rich_media_message` | A user-sent message containing an uploaded media file (image, video, audio). | Always treated as an individual billable event. Billable as a single, flat-rate event. | Treated as an individual billable event unless it becomes part of a session. |
| `p2a_suggested_action` | A user taps on any suggested action (e.g., "View location") that is not a suggested reply. | Always treated as an individual billable event. Generates one billable event per click. | Treated as an individual billable event and generates one billable event per click unless it becomes part of a session. |
| `a2p_session` | A 24-hour interaction window which starts when a session trigger is initiated and the first message is MT. For more information, see [What is a session and how it works](https://developers.google.com/business-communications/rcs-business-messaging/carriers/billing/us-billing-faq#session-billing). | N/A. Sessions don't apply to non-conversational agents. | Once triggered, all messages in the 24-hour window are covered by a single session fee. Any billable event in the 24-hour session will get assigned to the session's billable event ID. |
| `p2a_session` | A 24-hour interaction window which starts when a session trigger is initiated and the first message is MO. For more information, see [What is a session and how it works](https://developers.google.com/business-communications/rcs-business-messaging/carriers/billing/us-billing-faq#session-billing). | N/A. Sessions don't apply to non-conversational agents. | Once triggered, all messages in the 24-hour window are covered by a single session fee. Any billable event in the 24-hour session will get assigned to the session's billable event ID. |

### Billing report generation

Only agents with non-tester traffic generate billable events. Activity from test
phone numbers doesn't appear in billing reports.

These reports assume that events are billable when A2P messages are delivered,
not when messages are sent. An undelivered message or a message canceled before
delivery doesn't trigger a billable event.

### Billing report format

Billing reports use the filename format `rbm_billable_events_YYYY-MM-DD.csv`.
The date in the filename is the file generation date.

Each line in the report is a record representing a single billable event.
**A2P/P2A sessions** are represented by multiple rows---one for each message
exchanged. Every row associated with a session (sharing the same
`billing_event_id`) will report the total number of MT and MO messages for the
entire 24-hour session window in the `mt_messages` and `mo_messages` columns.

Files are UTF-8 encoded without a byte order mark and use line feeds for line
endings. The first line of each file is a header row with the field names.

Each record in the report contains the following information for each billable
event.

| Field | Format | Description | Example |
|---|---|---|---|
| `billing_event_id` | string | Generated ID that distinguishes the billable event. All messages that are part of a session will have the same `billing_event_id`. | `63ed6dc0454958763224ca43cf09388afe9bce5ad2f2b1d66236190074hd5g5e` |
| `type` | string | Type of event: - `a2p_rich_message` - `a2p_rich_media_message` - `p2a_rich_message` - `p2a_rich_media_message` - `p2a_suggested_action` | `p2a_rich_message` |
| `agent_id` | string | Unique identifier for the agent that participated in the event. | `acme_342h23_agent@rbm.goog` |
| `agent_owner` | string | Email address of the current owner of the partner account where the agent was created. | `marketing@xyzaggregator.com` |
| `billing_party` | string | Party who bills for events. | carrier |
| `max_duration_single_message` | number | Maximum time (in hours) allowed for a user to respond to an agent message before the conversation initiation window closes and the message is classified as a `single_message` event. Not applicable to the US model for individual rich messages. | 24 |
| `max_duration_a2p_conversation` | number | For the sessions pilot, this reflects the 24-hour session window measured from the first message in the trigger sequence. Duration is measured in hours. | 24 |
| `max_duration_p2a_conversation` | number | For the sessions pilot, this reflects the 24-hour session window measured from the first message in the trigger sequence. | 24 |
| `start_time` | YYYY-mm-ddTHH:00:00Z | The UTC date/time the event started (ISO 8601). For sessions, this is the timestamp of the first message in the trigger sequence. **A2P** - For non-session events, such as `a2p_rich_message` and `a2p_rich_media_message`, this is the time when the message is delivered to the user. - For the `a2p_session` event, this is the time when the first message in the conversation is delivered to the user. - **P2A** - For non-session events, such as `p2a_rich_message` and `p2a_rich_media_message`, this is the time when the message is sent by the user. - For the `p2a_session` event, this is the time when the first message in the conversation is sent by the user. | 2025-05-20T08:00:00Z |
| `duration` | number | Duration only pertains to sessions and is measured in minutes. When the event is a non-session event, the value is 0. | 45 |
| `mt_messages` | number | Number of mobile-terminated (A2P) messages in the event. For sessions, each row sharing the same `billing_event_id` shows the total number of MT messages in the entire session. | 5 |
| `mo_messages` | number | Number of mobile-originated (P2A) messages in the event. For sessions, each row sharing the same `billing_event_id` shows the total number of MO messages in the entire session. | 3 |
| `size_kilobytes` | number | Size of all files attached to messages in the event, rounded to the nearest kilobyte (1kB is equal to 1024 bytes). | 912 |
| `agent_name` | string | Name of the agent that participated in the event. | `ACME Brand` |
| `owner_name` | string | Name of the current owner of the partner account where the agent was created. | `XYZ Aggregator` |
| `segment_count` | number | The calculated segment count for `a2p_rich_message events` and `p2a_rich_message` events (1 segment is equal to 160 UTF-8 bytes). When the event is not one of the mentioned, the value is 0. | 5 |
| `session_type` | string | Type of session: - `a2p_session` - `p2a_session` Will be empty if the activity does not qualify as a session. | `a2p_session` |

### Sample billing report

Sample report is available for download:

- [Billing report for US billing model](https://developers.google.com/static/business-communications/rcs-business-messaging/carriers/files/us_rbm_billable_events_2023-05-26.csv)

### Typical file size

The size of a daily report from an active RCS for Business partner depends on
how much activity they've generated on the carrier's network.