US billing types
In the United States, RCS messages are billed as one of two types:
- Rich messages
- Rich media messages
Message classification depends on whether the content is text-only with basic actions or contains media and advanced suggested actions.
Type | Description |
|---|---|
| Rich message | An application-to-person (A2P) or person-to-application (P2A) message that:
A rich card that only contains a title and/or description is not considered a text-only rich message. NOTE Text-only P2A messages are charged in 160-byte segments. |
| Rich media message | An application-to-person (A2P) or person-to-application (P2A) message that:
A rich media message can include suggested replies and suggested actions, such as Dial phone and Open URL (Browser). If the message contains any multimedia content, it is automatically classified as a rich media message. NOTE P2A billing: If a P2A message contains a file, it is billed as a rich media MO message. |
Some carriers charge for P2A messages. Text-only P2A messages are billed in segments, following the same segmentation rules applied to A2P messages.
The following message types are billed as P2A:
- Real MO messages: Sent when an end user manually sends a message directly to an agent.
- Quick reply MO messages: Sent when an end user selects a Reply suggestion button.
- Request location MO messages: Sent when an end user shares their location after selecting a Request location suggestion button.
If a P2A message contains a file, it is billed as a rich media MO message.
Track US billing with webhooks
For messages in the United States, the trafficType field returns values that map to the US billing types:
| trafficType value | Billing type |
|---|---|
RICH | Rich message |
RICH_MEDIA | Rich media message |
P2A_INTERACTIVE_SESSION | Interactive Session (conversational agents only) |
Segment counts for rich messages: Rich messages in the US bill in 160-byte segments, and delivery reports and inbound webhooks report how many segments each message used.
| Field | Webhook | Description |
|---|---|---|
messageCount | Receive RCS delivery reports | Number of 160-byte segments the outbound Rich MT message used. Found at results[].messageCount in the delivery report payload. |
rcsCount | Receive RCS inbound message | Number of segments an inbound Rich MO message contains. Found at results[].rcsCount. Can be greater than 1 for Rich messages in the US. |
US Interactive Session
US Interactive Session is a session-based billing model for conversational RCS agents in the United States. It uses different criteria than global A2P and P2A conversation billing.
MO message qualifications
Only specific person-to-application (P2A) actions count toward the Interactive Session trigger:
- The end user sends a free-text or file reply.
- The end user taps a suggested reply.
- The end user shares their location.
The following actions do not count toward the trigger:
- Clicking an Open URL, Add to calendar, or similar suggested action button.
- Tapping Request location without completing the location share.
- Typing notifications.
- Delivery receipts.
- Seen receipts.
- Read receipts.
An interactive session starts when all of the following criteria are met:
- 4 qualifying messages are exchanged within a 24-hour period
- At least 2 person-to-application (P2A) messages
- At least 1 application-to-person (A2P) message
- Messages can occur in any order
When these criteria are met, a 24-hour free messaging window opens, anchored to the first of those 4 messages. All messages within this window are part of the interactive session and are not charged individually.
If the session criteria are not met, each message is charged individually as a Rich message or Rich media message based on its content. For example, if no end user reply follows an A2P message, no session starts.
Key differences from global billing:
| Global model | US Interactive Session |
|---|---|
| Directional (A2P or P2A conversation) | Non-directional (criteria-based: 4 messages with 2 P2A + 1 A2P) |
| Session starts from reply message | Session starts from the first message in the 4-message sequence |
| Available for conversational agents globally | Available only for conversational agents in the United States |
Interactive sessions apply only to conversational agents. Non-conversational agents use message-based billing (Rich message or Rich media message) regardless of message volume or timing.
Interactive Session scenarios
Session triggered
The sender and end user exchange 4 qualifying messages within a 24-hour window (2 A2P + 2 P2A). MO 2, the 4th qualifying message, completes the trigger.
The session retroactively anchors to MT 1, the earliest message in the sequence. MT 1 is the charged message, and its cost is recalculated to Interactive Session. MO 2 receives its billing classification in real time.
The remaining 3 messages (MT 1, MO 1, and MT 2) each receive a retroactive Conversation Started event (3 CONVERSATION_STARTED events total). All messages within the 24-hour session window are part of the interactive session and are not charged individually.
| Message | Direction | Qualifying | canInitiate | Original trafficType | Updated trafficType |
|---|---|---|---|---|---|
| MT 1 | Sender to end user | Yes (1/4) | true | RICH / RICH_MEDIA (charged) | P2A_INTERACTIVE_SESSION (charged) |
| MO 1 | End user to sender | Yes (2/4) | true | RICH / RICH_MEDIA (charged) | null (not charged) |
| MT 2 | Sender to end user | Yes (3/4) | true | RICH / RICH_MEDIA (charged) | null (not charged) |
| MO 2 | End user to sender | Yes (4/4), completes the trigger | false | null (not charged) | N/A |
The 24-hour session window starts from MT 1, not from MO 2. All messages exchanged within that window, including MT 1 itself, are part of the session.
Insufficient messages
Fewer than 4 qualifying messages are exchanged within a 24-hour period. The trigger condition is not met, and each message is billed individually as a Rich message or Rich media message.
| Message | Direction | Qualifying | canInitiate | Original trafficType |
|---|---|---|---|---|
| MT 1 | Sender to end user | Yes (1/4) | true | RICH / RICH_MEDIA (charged) |
| MO 1 | End user to sender | Yes (2/4) | true | RICH / RICH_MEDIA (charged) |
| MT 2 | Sender to end user | Yes (3/4) | true | RICH / RICH_MEDIA (charged) |
Only 3 qualifying messages occur within 24 hours. The trigger requires 4, so no session starts.
Window expired
Messages are exchanged, but a gap of more than 24 hours separates early messages from later ones. By the time the 4th message arrives, earlier messages have expired from the rolling 24-hour window. Fewer than 4 qualifying messages remain in scope, so no session starts.
| Message | Time | canInitiate | In 24h window at MO 2? | Original trafficType |
|---|---|---|---|---|
| MT 1 | T+0h | true | No, expired | RICH / RICH_MEDIA (charged) |
| MO 1 | T+25h | true | Yes | RICH / RICH_MEDIA (charged) |
| MT 2 | T+26h | true | Yes | RICH / RICH_MEDIA (charged) |
| MO 2 | T+27h | true | Yes | RICH / RICH_MEDIA (charged) |
At MO 2, the 24-hour look-back window contains only MO 1, MT 2, and MO 2 (3 qualifying messages). MT 1 has expired, so the trigger is not met.
Non-qualifying actions
Actions such as clicking Open URL or Add to calendar buttons do not count as qualifying messages toward the 4-message session trigger.
| Message | Direction | Qualifying | canInitiate | Billing |
|---|---|---|---|---|
| MT 1 | Sender to end user | Yes (1/4) | true | RICH / RICH_MEDIA (charged) |
| MT 2 | Sender to end user | Yes (2/4) | true | RICH / RICH_MEDIA (charged) |
| URL click (end user) | End user to sender | No, not qualifying | false | trafficType = null (not charged) |
| MO 1 | End user to sender | Yes (3/4) | true | RICH / RICH_MEDIA (charged) |
Qualifying messages total 3 (2 A2P + 1 P2A). The trigger requires at least 2 P2A messages, so it is not met.
Multiple outbound messages
The sender sends MT 1. The end user responds with MO 1. The sender then sends 4 additional MT messages (MT 2 through MT 5) while waiting for another end user response. The end user responds with MO 2, completing the session trigger. All 7 messages occur within a 20-hour window. This means 4 hours of the 24-hour session window remain available for additional messages.
MO 2 receives its billing data in real time. The remaining 6 messages each receive a retroactive Conversation Started event. MT 3, MT 4, and MT 5 do not advance the trigger progress. The composition requirement mandates at least 2 MO messages among the 4 qualifying messages, and only 1 MO had been received before MO 2.
| Message | Direction | Qualifying | canInitiate | Original trafficType | Updated trafficType |
|---|---|---|---|---|---|
| MT 1 | Sender to end user | Yes (1/4) | true | RICH / RICH_MEDIA (charged) | P2A_INTERACTIVE_SESSION (charged) |
| MO 1 | End user to sender | Yes (2/4) | true | RICH / RICH_MEDIA (charged) | null (not charged) |
| MT 2 | Sender to end user | Yes (3/4) | true | RICH / RICH_MEDIA (charged) | null (not charged) |
| MT 3 | Sender to end user | No (3/4) | true | RICH / RICH_MEDIA (charged) | null (not charged) |
| MT 4 | Sender to end user | No (3/4) | true | RICH / RICH_MEDIA (charged) | null (not charged) |
| MT 5 | Sender to end user | No (3/4) | true | RICH / RICH_MEDIA (charged) | null (not charged) |
| MO 2 | End user to sender | Yes (4/4), completes the trigger | false | null (not charged) | N/A |
MO 2 receives its billing data in real time. The remaining 6 messages (MT 1 through MT 5 and MO 1) each receive a retroactive Conversation Started event (6 CONVERSATION_STARTED events total).
End user initiates
The end user sends 3 MO messages before the sender responds with MT 1. MT 1 is the 4th qualifying message and completes the trigger. Because MT 1 completes the trigger, it receives its billing classification and conversation.id in real time, so no Conversation Started event is sent for it. Each of the 3 MO messages receives a retroactive Conversation Started event with trafficType set to null (3 CONVERSATION_STARTED events total). The 24-hour session window starts from MO 1, not from MT 1.
| Message | Direction | Qualifying | canInitiate | Original trafficType | Updated trafficType |
|---|---|---|---|---|---|
| MO 1 | End user to sender | Yes (1/4) | true | RICH / RICH_MEDIA (charged) | null (not charged) |
| MO 2 | End user to sender | Yes (2/4) | true | RICH / RICH_MEDIA (charged) | null (not charged) |
| MO 3 | End user to sender | Yes (3/4) | true | RICH / RICH_MEDIA (charged) | null (not charged) |
| MT 1 | Sender to end user | Yes (4/4), completes the trigger | false | P2A_INTERACTIVE_SESSION (charged, in real time) | N/A |
Was this page helpful?