Under the last few decades, text messages have been the the unparalleled backbone of digital communication. Its simplicity and near 100-percent range has always been its strength. But as users'expectations change, plain text is not always enough. Here comes RCS (Rich Communication Services) in the picture – an upgrade that transforms messaging app to an interactive platform.
But how does it work technically, and how can I ensure my message reaches markets that haven't fully rolled out RCS support yet? We'll clarify the concepts.
What is RCS and Universal Profile?
RCS (Rich Communication Services) often described as ”SMS 2.0”, but it is actually a completely new IP-based protocol architecture that replaces the old SS7-based mobile network protocol for SMS and MMS. Instead of sending data over the operators' signaling channels, RCS is sent as data traffic over the internet (4G, 5G, and Wi-Fi).
To guarantee that the technology works the same worldwide, the industry association GSMA brought forth Universal Profile (UP).
Universal Profile (UP)
This is the globally agreed-upon standard (specification) that all operators and manufacturers must follow. Without Universal Profile, a Telia user would not be able to send interactive messages to a Tele2 user.
- UP 1.0–2.0: Lay the groundwork for consumer features (P2P) like read receipts, chat indicators (”typing…”), and high-resolution images (up to 100MB instead of MMS’s limit of about 0.3MB).
- UP 2.4+ (and later versions): Introduced MaaP (Messaging as a Platform), which is the backbone of modern business communication via RCS
SMS vs RCS Comparison
| Function | SMS/MMS | RCS (Universal Profile) |
|---|---|---|
| Network Engineering | Signaling System No. 7 (SS7) | IP networks (Mobile data / Wi-Fi) |
| Medium size | Max ~300 KB (MMS) | Up to 105 MB (video/image) |
| Interactivity | Text and static links | Carousels, buttons, calendar bookings, and maps |
| Security | Encrypted | Encrypted (TLS) and verified senders |
| Status reports | Delivery status | "Delivered, Read, and typing indicator |
A2P and MaaP: When Businesses Communicate with Customers
In telecommunications, we differentiate between P2P (Person-to-Person) and A2P (Application-to-Person). When a company sends automatic system messages, marketing, or customer service chats, it's about A2P.
For RCS, the term is used Messaging as a Platform. MaaP transforms the messaging app from a passive inbox into an interactive platform (like an app within an app), where companies can build advanced customer journeys via APIs without the customer needing to download anything extra.
Rika Payloads (Rich Payloads)
Instead of just sending a raw text string and a short link, the company's system communicates with the operators' RCS servers via complex JSON structures. This data is interpreted and rendered visually directly in the phone's messaging app:
Carousels The user can swipe horizontally between different products, hotel rooms, or delivery options. Each ”card” in the carousel has its own image, description, and button.
Suggested Actions Buttons that allow the customer to open a map, call customer service, add an event to their calendar, or make a secure payment directly in the chat.
Status 2026: The Market in Sweden
The landscape for RCS is still divided in Sweden. Although the technology has matured and the global blocking between platforms has been partially resolved, the Swedish breakthrough is still pending:
Android Has full built-in RCS support for many years, primarily via Google Messages. Both advanced private chat (P2P) and business communication (A2P) work fully here.
Apple (iOS): Apple officially implemented RCS support with iOS 18, but for it to work, carriers need to adapt and enable the feature in their networks. In Sweden, the major operators (Telia, Tele2, Telenor, and Tre) not yet activated this support for iPhone. Apple's official lists of European operators still lack RCS functionality for Swedish companies.
The transition phase today: Since carrier support for the iPhone is lagging in Sweden, ”seamless” communication remains a vision. When a company sends interactive RCS messages (A2P) or when an Android user sends a high-resolution image (P2P) to an iPhone in Sweden, RCS connectivity is missing.
Can I use RCS today?
Yes, absolutely! Technical advancements continue with more and more operators adding support for RCS worldwide. When it comes to Swedish operators, there is already full support for RCS for Android devices today.
With the launch of end-to-end encryption between Android and iOS devices in iOS version 26.5 for individuals, there are also clear signs that the world is ripe for a new modern messaging standard.
How do I reach a recipient whose phone does not support RCS?
When you send a message via our APIs, you can use the capability check endpoint, which in turn responds with a status indicating whether the device you want to send to supports RCS or not. With the help of this status, you can later implement a fallback that sends SMS to devices that do not yet support RCS technology.
- Capability Check: The system makes a quick request to see if the recipient's phone and carrier have an active RCS connection.
- Smart Routing: If the recipient has an active RCS profile (e.g., an Android user on a supported network), the interactive message with images and buttons will be delivered.
- Fallback to SMS: If the recipient cannot receive RCS (e.g., an iPhone user in Sweden or someone with temporarily poor data coverage), the message will be rerouted to our SMS API and sent as a regular text message. This ensures the communication chain is never broken.
Code Example: Send RCS with SMS Fallback
using System.Net.Http.Json;
var apiKey = "YOUR_API_KEY";
var rcsUrl = "https://api.ip1.net/v3";
var smsUrl = "https://api.ip1sms.com/v2";
using var client = new HttpClient();
client.DefaultRequestHeaders.Add("Authorization", "Bearer {apiKey}");
async Task SendTransactionalMessage(string number, string text)
{
var recipients = new[] { number };
try
{
// 1. Capability Check for the specific number
var cap = await client.GetFromJsonAsync("{rcsUrl}/phones/{number}/capabilities");
if (cap?.capable == true)
{
// 2. Send transactional RCS
var response = await client.PostAsJsonAsync($"{rcsUrl}/bundles", new
{
brand = "my-store-inc",
agent = "YOUR_AGENT_ID",
content = text,
recipients = recipients
});
if (response.IsSuccessStatusCode) return;
}
}
catch
{
// Log the error internally but proceed to SMS fallback
}
// 3. Fallback to SMS
await client.PostAsJsonAsync($"{smsUrl}/messages", new
{
sender = "Verify",
body = text,
recipients = recipients
});
}
public record CapResponse(bool capable);
// Example call:
await SendTransactionalMessage("46700123456", "Your code is: 123456. Valid for 10 minutes.");;
using System.Net.Http.Json;
var apiKey = "YOUR_API_KEY";
var rcsUrl = "https://api.ip1.net/v3";
var smsUrl = "https://api.ip1sms.com/v2";
using var client = new HttpClient();
client.DefaultRequestHeaders.Add("Authorization", "Bearer {apiKey}");
async Task SendSmartMessages(string[] recipients, string text)
{
var rcsRecipients = new List();
var smsRecipients = new List();
// 1. Loop through and sort recipients based on capability
foreach (var number in recipients)
{
try
{
var cap = await client.GetFromJsonAsync("{rcsUrl}/phones/{number}/capabilities");
if (cap?.capable == true)
rcsRecipients.Add(number);
else
smsRecipients.Add(number);
}
catch
{
smsRecipients.Add(number);
}
}
// 2. Send RCS to everyone who can receive it
if (rcsRecipients.Any())
{
var rcsResponse = await client.PostAsJsonAsync($"{rcsUrl}/bundles", new
{
brand = "my-store-inc",
agent = "YOUR_AGENT_ID",
content = text,
recipients = rcsRecipients.ToArray()
});
}
// 3. Send SMS to the rest
if (smsRecipients.Any())
{
var smsResponse = await client.PostAsJsonAsync($"{smsUrl}/messages", new
{
sender = "MyCompany",
body = text,
recipients = smsRecipients.ToArray()
});
}
public record CapResponse(bool capable);
var myNumbers = new[] { "46700123456", "46700987654", "456189040623" };
await SendSmartMessages(myNumbers, "Hello! This is a smart message.");;
Summary
Future-proofing your communication means preparing for the interactive future without losing today's reach.
By understanding the interplay between the capabilities of RCS technology and utilizing the reach of the SMS protocol until full market support is available, companies can build a stable and modern customer dialogue that works for everyone – regardless of which phone they have in their pocket.
Do you want to learn more about how your business can benefit from the MaaP architecture? By starting to build with RCS support today, you'll be ready when the market reaches full maturity, while a fallback logic ensures your messages always get through now.