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 two additional values that map to the US billing types defined above:
| trafficType value | Billing type |
|---|---|
RICH | Rich message |
RICH_MEDIA | Rich media message |
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) | 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) | 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 | INTERACTIVE_SESSION (charged, in real time) | N/A |