RCS billing depends on three primary factors: message classification (Basic RCS or Single RCS), message direction (outbound or inbound), and country (determined from the end user's phone number based on message direction).
The billing behavior also differs between the United States and Non-US countries.
A segment is 160 UTF-8 bytes of the message body, rounded up. It is byte length, not character count, so emoji and non-Latin text use more bytes per character. Segments are always recalculated from the body — Twilio's own segment count is ignored because it is not reliable for RCS. An empty body still counts as 1 segment.
RCS Message Types
RCS messages are classified as either Basic RCS or Single RCS.
The classification matters because it determines whether the message is billed per segment or per message, as well as which RCS rate applies.
A text-only RCS message can be classified as Basic. The exact classification depends on the country.
United States: A text-only RCS message is always Basic, regardless of length. If it exceeds 160 UTF-8 bytes, it stays Basic — the extra length only increases the number of billable segments.
Non-US: A text-only message is Basic when the body is 160 UTF-8 bytes or fewer. If it exceeds 160 UTF-8 bytes, it is classified and billed as Single RCS instead — there is no segmentation for billing, so longer messages are treated as a single message, not multiple segments.
| Region | Basic RCS Definition | Segmentation / Billing |
|---|---|---|
| US | Text-only, ≤ 160 UTF-8 bytes | Segmented & billed per 160 bytes |
| Non-US | Text-only, ≤ 160 UTF-8 bytes | No segmentation; > 160 bytes = Single RCS |
A message is classified as Single RCS when either of the following applies:
- The message contains an attachment or card media.
- For Non-US traffic, a text-only message exceeds 160 UTF-8 bytes.
Any attachment or card media makes the message Single, regardless of the message's country or text length.
A US text-only message does not become Single because of its length. It remains Basic and is billed based on its number of segments.
What Is an RCS Segment?
An RCS segment refers to a portion of a text message that is split due to length limitations, specifically for RCS (Rich Communication Services) messaging. For US Basic RCS messages, billing is calculated using segments.
One segment represents 160 UTF-8 bytes of the message body. The segment count is calculated by taking the UTF-8 byte length of the body, dividing it by 160, and rounding up.
| Message Body | Billable Segments |
|---|---|
| Empty body | 1 |
| 1–160 UTF-8 bytes | 1 |
| 161–320 UTF-8 bytes | 2 |
| 321–480 UTF-8 bytes | 3 |
| 481–640 UTF-8 bytes | 4 |
Message: "Hello, this is a test." (22 characters, all 1 byte each). Total bytes: 22 → Segments: 1
Message: 200 English characters (200 bytes). Segments: ceil(200 / 160) = 2
Message: 80 emojis (each emoji is 4 bytes, so 320 bytes). Segments: ceil(320 / 160) = 2
Segment calculation is based on UTF-8 bytes, not character count. This matters because some characters require more than one UTF-8 byte:
- Many standard English characters use 1 byte.
- Many non-Latin characters use multiple bytes.
- Emoji commonly use multiple bytes.
As a result, two messages containing the same number of visible characters may have different segment counts.
The platform recalculates the segment count directly from the message body. Twilio's reported segment count is not used for RCS segment billing because it may not reliably represent the RCS billing segment count. An empty message body still counts as one segment.
Determining the Country for Billing
The country used for RCS pricing depends on the direction of the message.
Example: Platform → Customer in the UK. The applicable RCS pricing is the UK rate.
Example: Customer in the US → Platform. The applicable RCS pricing is the US rate.
This country determination happens before applying the corresponding Basic or Single billing rules.
United States RCS Billing
US RCS pricing works differently from Non-US pricing. For US traffic:
- Basic Outbound → Per segment
- Basic Inbound → Per segment
- Single / Rich Outbound → Per message
- Single / Rich Inbound → Per message
The platform's current US pricing likewise describes RCS Rich text as charged per segment and RCS Rich Media as charged per message.
| Region | Message Type | Direction | Billing Unit | Price (USD $) |
|---|---|---|---|---|
| US | Basic RCS Text | Outbound | Per segment (160 UTF-8 bytes) | $0.0083 |
| US | Basic RCS Text | Inbound | Per segment (160 UTF-8 bytes) | $0.0083 |
| US | Rich / Single RCS | Inbound | Per message | $0.0165 |
| US | Rich / Single RCS | Outbound | Per message | $0.0220 |
US Basic RCS is billed per segment for both inbound and outbound messages.
An outbound US RCS message contains 120 UTF-8 bytes and no media. It is text-only, US, Basic RCS, 1 segment. Charge: 1 × $0.0083 = $0.0083
An outbound US message contains 350 UTF-8 bytes and no media. Because it is US text-only traffic, it remains Basic RCS, regardless of length. Segment calculation: ceil(350 ÷ 160) = 3 segments. Charge: 3 × $0.0083 = $0.0249. The message does not become Single simply because it exceeds 160 bytes.
An outbound US RCS message contains text plus an image. Because it contains media, it is classified as Single / Rich RCS and billed once per message. Charge: $0.0220. The text length does not cause additional RCS segments to be billed for this Single message.
Non-US RCS Billing
Non-US RCS follows a different classification model. For Non-US traffic:
- Basic → Per segment, if 160 UTF-8 bytes or fewer
- Single → Per message
- Inbound → Per message
The applicable static rate depends on the country. The platform's country-specific pricing pages similarly separate Non-US outbound RCS into Basic and Single pricing.
160 UTF-8 bytes or fewer → Basic. More than 160 UTF-8 bytes → Single. This means message length can result in a real pricing difference outside the US.
Any attachment or card media results in the message being classified as Single, regardless of its text length.
A Non-US outbound message contains 100 UTF-8 bytes with no attachment or card media. The message is Basic RCS → billed once at the country's Basic rate.
A Non-US outbound message contains 250 UTF-8 bytes. Even though there is no attachment or media, it exceeds the 160-byte Basic limit. The message is therefore Single RCS → billed once at the country's Single rate. It is not billed as two Basic segments.
A Non-US outbound message contains only 50 UTF-8 bytes of text but also contains an image. The presence of media makes the message Single RCS → billed once at the country's Single rate.
US vs. Non-US Classification at a Glance
| Scenario | US | Non-US |
|---|---|---|
| Text-only ≤ 160 UTF-8 bytes | Basic | Basic |
| Text-only > 160 UTF-8 bytes | Basic — multiple segments | Single |
| Attachment present | Single | Single |
| Card media present | Single | Single |
| Basic billing unit | Per segment | Per message |
| Single billing unit | Per message | Per message |
US text-only messages remain Basic regardless of length. Non-US text-only messages become Single when they exceed 160 UTF-8 bytes.
RCS Carrier Fees
Carrier fees may apply in addition to the base RCS message charge. Twilio publishes carrier-specific RCS fees, and those fees can differ by carrier, message type, and direction.
Within the platform, carrier fees are billed as follows:
| Account / Usage Category | Carrier Fee Billing |
|---|---|
| Usage Category | Billed directly by Twilio |
| Agency Accounts | Same pricing as Twilio |
| Location Accounts | Twilio pricing + 5% markup |
Carrier fees should be considered separately from the base RCS message charge.
RCS Billing Decision Flow
Use the following logic to determine how an RCS message will be billed.
For outbound messages, use the destination number's country. For inbound messages, use the sender / handset's country.
Does the message contain an attachment or card media? Yes → Single RCS; bill once using the applicable country's Single / Rich rate. No → continue to Step 3.
If US: text-only messages are Basic RCS, regardless of length. Calculate Segments = max(1, ceil(UTF-8 byte length ÷ 160)), then RCS charge = Number of segments × Basic US rate.
If Non-US: check the UTF-8 byte length. ≤ 160 bytes → Basic RCS, billed once at the country's Basic rate. > 160 bytes → Single RCS, billed once at the country's Single rate.
Apply the applicable Twilio carrier fee and platform markup rules.
Quick Reference
| Question | Billing Rule |
|---|---|
| How is the applicable country determined for outbound? | Destination number's country |
| How is it determined for inbound? | Sender / handset's country |
| What is one segment? | 160 UTF-8 bytes |
| Is segment size based on characters? | No, it is based on UTF-8 bytes |
| Does an empty body have zero segments? | No, minimum is 1 segment |
| Is Twilio's RCS segment count used? | No, segments are recalculated from the body |
| Is US Basic outbound per segment? | Yes |
| Is US Basic inbound per segment? | Yes |
| Does long US text become Single? | No |
| Does Non-US text > 160 UTF-8 bytes become Single? | Yes |
| Does an attachment make a message Single? | Yes |
| Does card media make a message Single? | Yes |
| Are Single messages billed per segment? | No, they are billed per message |
| Do carrier fees apply separately? | Yes |
- RCS pricing varies by country and may change over time.
- Carrier fees may apply in addition to the base RCS charge.
- Twilio states that its messaging prices and carrier fees can change, so current country-specific pricing should be checked when exact rates are required.
- The platform's 5% Location Account markup applies to the applicable Twilio carrier pricing as described above.
- Always determine the message's country and classification before calculating the final charge.
RCS Pricing by Country
Pick your country from the dropdown to see its outbound Basic, outbound Single, and inbound RCS rates. All values are list prices in USD. The full table below lists every country as well.
United States *
Austria
Belgium
Brazil
Canada
Czech Republic
Denmark
Finland
France
Germany
Ireland
Italy
Mexico
Netherlands
Norway
Poland
Portugal
Romania
Singapore
Slovakia
Spain
Sweden
United Kingdom
* United States Basic RCS is billed per segment (160 UTF-8 bytes). All other outbound Basic rates, and every Single rate, are billed per message. US Inbound Rich Media is $0.0165. Rates vary by country and may change over time; carrier fees may apply separately, and a 5% markup applies to Location Accounts.
Frequently Asked Questions
Was this article helpful?
That’s Great!
Thank you for your feedback
Sorry! We couldn't be helpful
Thank you for your feedback
Feedback sent
We appreciate your effort and will try to fix the article