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.
Billing report 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.
For details about US billing classifications model, refer to the US Billing FAQ.
File generation
For more information, see File generation.
File storage and access
For more information, see File storage and access.
File availability
For more information, see File availability.
Billing reports
Billing reports are records of 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 Personal Identifiable Information (PII), such as MSISDN, hashed MSISDN, or any user unique identifier.
Billing categories versus billable events
The distinction between agent billing categories and 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 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. |
|
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. |
|
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) 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.

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. | 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. | 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.
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 |
63ed6dc0454958763224ca43cf09388afe9bce5ad2f2b1d66236190074hd5g5e |
type |
string | Type of event:a2p_rich_messagea2p_rich_media_messagep2a_rich_messagep2a_rich_media_messagep2a_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 a2p_rich_message and a2p_rich_media_message, this is the time when the message is delivered to the user.a2p_session event, this is the time when the first message in the conversation is delivered to the user.P2A p2a_rich_message and p2a_rich_media_message, this is the time when the message is sent by the user.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_sessionp2a_session |
a2p_session |
Sample billing report
Sample report is available for download:
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.