What is SMS? Learn what SMS stands for, how a text travels from your phone to the SMSC, why 160 characters can become 70, and what sending one costs.

Takeaways
What is SMS? It is the Short Message Service: a text message of up to 160 characters carried on the cellular network's signaling channels, so it reaches any phone you can dial with no app, data plan or Wi-Fi.

SMS is the Short Message Service, a plain text message that travels over the cellular network's signaling channels, which is why it reaches every phone you can dial without an app, a data plan or Wi-Fi. Each word in the acronym does a job. Short means a character limit fixed in the 1980s that is still the unit your bill is counted in. Message means text only, with no image, audio or file, which is what separates it from MMS. Service means it is a function of the carrier network itself, like a voice call, rather than an app a company runs on top of the internet. That is why SMS works on a 2004 flip phone and a 2026 iPhone alike, and why a bank or a hospital falls back to it when nothing else is certain to reach you.
When your phone labels a bubble "SMS" or "Sent as SMS", the message went over the carrier network instead of iMessage, WhatsApp or RCS. Your phone chose SMS because the other device or its connection could not take anything richer: an Android phone receiving from an iPhone with RCS switched off, a phone with mobile data turned off, or a business line that only accepts plain text. Green bubbles on an iPhone mean the same thing. The text arrived, but with the plain-text limits: a capped length, no read receipts and no typing indicator.
SMS was invented as a concept in 1984, when Friedhelm Hillebrand and Bernard Ghillebaert proposed it inside the GSM cooperation, and the character limit you still write to came from Hillebrand counting the characters on postcards and Telex messages. The first text message, "Merry Christmas", was sent on 3 December 1992 by Neil Papworth over Vodafone UK, and the first commercial service, the same carrier service your codes and alerts ride today, followed in 1993.
The standard behind the service is GSM 03.40, maintained today by 3GPP as 3GPP TS 23.040. It defines a point-to-point message with a 140-byte payload carried over the SS7 MAP signaling protocol, the same protocol that sets up your voice calls and tells the network which cell your phone is in. That 140-byte figure matters more than the history. Every character limit you meet as a sender, 160, 70 or 67, comes from how many bytes one character of your text takes inside those 140.
Send one yourself in minutes
The Telnyx Messaging API sends and receives SMS and MMS in 130+ countries from one API call, with delivery reports on every send.

An SMS message is stored and forwarded twice before it reaches a handset: first by your carrier's SMSC, which accepts it and finds the destination network, then by the recipient's SMSC, which holds it until the phone is reachable. That is why a text sent to a switched-off phone still arrives hours later, and why "sent" in your logs only means the first SMSC took it. The delivery receipt on the dashed line is the only sign the handset actually got it, so the delivery report, not the API response, is the number to watch.
Your message makes five hops, on today's 4G and 5G networks as on the first GSM ones. When the sender is your application, the first hop is an API call to an SMS gateway that hands it to the carrier network.
If the handset is off, out of coverage or out of memory, the recipient's SMSC queues your message and retries when the network reports the phone back, the store-and-forward design the standard was built around. When it finally lands it carries the original send time, so your text can appear with a timestamp from three hours earlier. It also carries a validity period, and once that runs out the SMSC discards it, so a code you sent to a phone that stayed off for a day never arrives.
Delivery is best effort. Vendors tell you SMS arrives within seconds and holds up under congestion, and both are usually true, but SMS runs at lower priority than voice on the signaling network and studies put loss at 1% to 5% in normal operation.
Your API returns success and the handset never gets the text: accepted means your provider took the message, delivered means the handset acknowledged it, and only the delivery report tells you which happened. Your appointment or paging texts from an unregistered local number land on one carrier and are flagged as spam on another, because US carriers filter application traffic that is not registered through 10DLC, so register before you scale. Your toll-free sender's messages drop at peak volume because the number was never verified for the throughput it is pushing, and the delivery report shows the drop. A text to a landline can never arrive and still bills, so check whether a number is mobile with Number Lookup before you send.
If you send from an alphanumeric sender ID into a country that requires pre-registration, the carrier drops your message before a handset is paged, and some of your international routes return no delivery receipt at all, so an unknown status on those routes does not mean your message failed. Telnyx returns detailed delivery reports and a debugging tool for your sends that do not land.
The SMS character limit is arithmetic, and once you can do the sum you can predict what any template of yours bills as before you send it. It is also why a "single" text so often shows up as two or three lines on your invoice.

Each SMS you send carries 140 bytes of text. GSM-7 packs each of your characters into 7 bits, so 160 characters fit in one message, and it covers plain Latin letters, digits, spaces and common punctuation. 8-bit data gives you 140 characters and is used for binary content rather than text. UCS-2 spends 16 bits on each character to cover everything outside the GSM-7 set, from accented letters to Chinese script to emoji, so one of your messages holds 70 characters.
The rule that catches senders is that the encoding applies to the whole message. One emoji, one curly quote pasted from a word processor or one accented letter outside GSM-7 switches your entire text to UCS-2 and cuts it from 160 to 70 characters.
Take a 170-character appointment reminder with a single emoji: it bills as three UCS-2 segments, while the same text with the emoji removed bills as two GSM-7 segments. One character costs you a third segment on every send, whether it is an emoji or an accented letter outside the GSM-7 set, and each segment is billed as a message, so the characters in your template set the price before any provider quotes you a rate.
| Encoding | Single message | Per segment when concatenated |
|---|---|---|
| GSM-7 | 160 | 153 |
| 8-bit data | 140 | 134 |
| UCS-2 | 70 | 67 |
When your text runs past one message, your provider splits it into segments and the handset stitches them back into one bubble. Each segment gives up bytes to a User Data Header (UDH) that tells the handset which message the piece belongs to and where it sits in the sequence, so the capacity per segment drops to 153 characters in GSM-7, 134 in 8-bit and 67 in UCS-2. The recipient sees one message. Your carrier counts each segment, and so does your bill.
At volume this is the gap between a budget and an invoice. If you budget per message and are billed per segment, every long template and every emoji grows the bill, and a provider quoting a lower rate per segment can still cost you more if it encodes carelessly. Count segments rather than messages when you compare quotes, and test each template with the characters it will carry in production.
SMS is the carrier text service you send today, limited to plain text in short segments and carried on the signaling network. RCS (Rich Communication Services) is its IP-based successor, defined by the GSMA as the RCS Universal Profile, and it lets you add images and video, read receipts, typing indicators, a verified branded sender name and tappable buttons. In return you need your recipient on a data connection, on a carrier that has switched RCS on and on a handset that supports it.
MMS (Multimedia Messaging Service) carries images, audio, video and longer text, and it travels over the data bearer rather than the signaling channel. It is often billed separately from an unlimited SMS plan, and it costs you more per message as a business sender. It is slower to deliver, because the handset has to fetch the media from a server after it is notified. SMS vs MMS walks through the full comparison, including size limits and when a picture is worth the higher rate.
SMS needs only a phone number, while RCS needs a data connection, a supporting handset and a supporting carrier, and gives you media, read receipts and a verified brand name in return.
| What you compare | SMS | RCS |
|---|---|---|
| Needs internet | No | Yes |
| Character limit | 160 per segment | Effectively none |
| Media | None, MMS separate | Images, video, cards |
| Read receipts and typing | No | Yes |
| Reach | Every phone | Supporting handsets and carriers |
| Sender identity | Number or sender ID | Verified brand name |
The rows that decide it for a business are reach and sender identity. RCS reaches only phones that support it, so you send RCS where the handset can take it and fall back to SMS where it cannot, and SMS stays the universal floor under every campaign. RCS is also priced on a different model from the per-segment SMS rate, which RCS messaging pricing sets out.
Pick by message rather than by channel:
Business SMS leaves from a registered sender, is filtered by carriers, carries consent and opt-out obligations, and is billed per segment plus carrier fees.
Which sender type do you need?
P2P (person-to-person) is a text between two handsets: you replying to a friend, or a technician texting a customer from their own phone. A2P (application-to-person) is traffic that software sends from a registered sender: your platform calling a messaging API to send a reminder, a code or an alert. The line is drawn by how the message leaves, not by how personal it sounds, so an agent typing replies inside your app is still sending A2P traffic. US carriers filter, throttle or block A2P traffic that is not registered, which is why a template that worked from a test phone can stop arriving once it moves to your API. Register your brand and campaign for 10DLC, or verify your toll-free number, through the Telnyx portal or API before your first send, so carriers can see who is texting and why.
An SMS code is a one-time passcode (OTP), usually 4 to 8 digits, that a service texts you so you can prove you control the phone number on the account. It is also called a verification code or a 2FA code.
Your application calls a messaging API, the message leaves from your registered sender (in the US a short code, a toll-free number or a 10DLC number), passes through the SMSC like any other SMS, and the code expires after a few minutes. Codes arrive from different numbers because you send from a pool, and they can be delayed because sender registration and carrier filtering apply to A2P traffic. A code that never arrives on an international number is usually a route or sender-registration problem in that country rather than the user's phone.
SMS codes have two known weaknesses: a SIM swap, where an attacker moves your user's number to their own SIM and receives the codes, and SS7 interception, which reads messages off the signaling network. GSM air encryption between phone and tower (A5/1, A5/2) is optional and weak. An SMS code is still a reasonable second factor for most consumer accounts, and you should offer voice or WhatsApp OTP as alternatives. The Telnyx Verify API sends all three through one API.
SMS pumping, also called artificially inflated traffic, is the risk on your side of the bill: bots request codes to premium-rate or fraudulent numbers and you pay for thousands of codes no person asked for, a sudden spike on your bill. Rate limits on code requests per number and per IP address are the first fix, and the Verify API gives you one place to apply them.
An SMS notification is an automated text your app sends when something happens on a customer's account: an appointment reminder, a delivery update, a payment receipt, a security alert. It is usually one way and always from a registered sender. Consent splits your notifications into two kinds.
| Kind | Trigger | What you need |
|---|---|---|
| Transactional | Something the recipient did, such as an order or a booking | The recipient's number and a lawful basis |
| Promotional | A sale or an early access code | Express written consent plus an opt-out, under the TCPA in the US |
The split matters when a carrier or a customer asks for proof. For a transactional text you show that the customer gave you the number when they ordered or booked; for a promotional one you need the written opt-in itself, with the date, the wording they agreed to and the number it covers. SMS marketing platforms keep that consent trail for you when your volume is promotional. Whichever kind you send, the message has to earn its segment: each example below names the sender, states the event, asks for at most one action and fits in one GSM-7 segment, so it bills once.
| Notification type | Example message | Why SMS fits |
|---|---|---|
| Appointment reminder | Riverside Clinic: your appointment is Tue 14 May at 9:30am. Reply C to confirm or call 555-0100 to reschedule. | Every patient's phone, and healthcare messaging favours plain text |
| Delivery update | Harbor Goods: your order 48213 is out for delivery today between 2pm and 6pm. Track it at hgoods.co/t/48213 | Read within minutes, which retail and ecommerce senders need |
| Payment or account alert | First Bank: a $249.00 payment to Acme Utilities was made from your account ending 4471. If this was not you, call 555-0199. | Arrives with no data connection and no app installed |
| Promotion or early access | Harbor Goods: early access to our spring sale starts now, 20% off until Sunday with code SPRING20. Reply STOP to opt out. | Carries the required opt-out |
Bad: 172 characters, 3 UCS-2 segments
Hey!! 🎉 Your appointment is coming up tomorrow afternoon, please make sure you arrive a few minutes early and bring your insurance card and your ID with you. See you then!!
Good: 134 characters, 1 GSM-7 segment
Northside Dental: your appointment is tomorrow at 2pm. Please arrive 10 minutes early with your insurance card. Reply STOP to opt out.
One emoji makes the bad message bill as three UCS-2 segments, and it names no sender and offers no way out, the pattern carriers flag. The good one names you first, asks for one action and ends with "Reply STOP to opt out". A Telnyx messaging profile unsubscribes anyone who replies STOP automatically.
Your sender type decides your registration work, throughput and carrier fees. 10DLC is a standard 10-digit local number, registered through a brand and a campaign since 2021. Toll-free is an 8XX number, verified rather than campaign-registered. A short code is 5 or 6 digits, with the highest throughput and the longest approval. An alphanumeric sender ID is a brand name, one way only, used outside the US. SMS number traffic types covers the trade-offs.
| Sender type | Best for | Registration needed |
|---|---|---|
| 10DLC | Most US business traffic | Brand and campaign registration |
| Toll-free | Nationwide alerts and support | Toll-free verification |
| Short code | High-volume alerts and promotions, including short codes for retail | Carrier approval |
| Alphanumeric Sender ID | One-way branded messages outside the US | Pre-registration in some countries |
The Telephone Consumer Protection Act (TCPA) requires prior express consent before marketing texts, and the FCC publishes the TCPA consent rules. The CTIA Messaging Principles require you to honour STOP and answer HELP on every sender. Keep a record of consent and opt-outs, because in a complaint the burden of proof sits with you. Telnyx builds STOP and HELP handling into its 10DLC, toll-free and short code channels.
Inbound messages reach your application through the receive-message flow: Telnyx delivers each text to your application and your code decides the reply. Keyword replies drive three conversations:
If you text on behalf of several clients, keep each client's opt-outs separate, so a STOP to one brand does not silence the others. Ask any provider how it scopes a STOP before you move volume.
The chatbot below, from the Telnyx code examples, appends each inbound text to the conversation you keep for that number, asks a model for a reply with the earlier messages as context, and sends the reply back over SMS. These lines do that work (the full example also verifies the webhook signature and summarises long threads):
You pay per segment rather than per message, and the rate is not the whole bill. Carriers add pass-through fees on 10DLC, toll-free and short code traffic that vary by sender type and destination, and registration carries one-off and monthly fees. Telnyx pricing starts at $0.004 per message, is usage based with no hidden fees and no upfront investment, and customers typically save 30% versus other CPaaS providers. Compare quotes on the rate plus carrier fees per segment for the templates you will send.

Sending an SMS message through the Telnyx API is four steps, and the same four cover one country or nine, because the number inventory, the API call and the queuing do not change with volume or destination. You get a number, register it as a sender, send your first message with one API call, then read the delivery reports to confirm what landed and scale from there.
Every SMS needs a sender, so start with the number. Buy a number with SMS capability from Phone Numbers, which has inventory in 130+ countries, when you are starting fresh or need local numbers in a new market. Port a number you already own when your customers know it and you want calls and texts on one provider. Keep a well-known number where it is and send from it with Hosted SMS when your voice provider has to stay, since Hosted SMS lets you send and receive SMS and MMS on that number without moving it. Whichever you pick, a US number still needs the registration in the next step before it carries business traffic.
Create a messaging profile and complete the registration your sender type needs: 10DLC brand and campaign setup for a local US number, verification for a toll-free number, carrier approval for a short code. You can do all of it from the Mission Control portal or the API. Start this step first, because a registration review takes days while the other three steps take minutes, and attach your number to the profile with automatic opt-outs switched on before you send a single test.
The call below creates a Telnyx client with your API key, sends one text from your number to one recipient, and prints what the API returned, which includes the message ID you will match against the delivery report. It is the same request the send a message doc describes.
To reach several recipients, loop over them with the same call. This excerpt from the Telnyx bulk SMS example checks each number is in E.164 format, sends, records the message ID and status, and pauses between sends to stay inside your rate limit:
Read the delivery report for every send, because accepted and delivered are different events, and Telnyx gives you detailed, transparent delivery reports and a debugging tool for the ones that fail. Set up inbound handling so replies, STOP and HELP reach your application, following receive inbound messages. Then scale: automated message queuing is set to your account limits and the latest carrier standards, so growing from tens to millions of messages means raising an account limit rather than signing a new contract. You get REST APIs with SDKs in 5 languages and 24/7 support throughout.
What is SMS FAQ
The Telnyx Messaging API picks the most compact encoding for your text, splits long messages into segments for you and shows you the delivery report on every send, from $0.004 per message.
Start sending SMS
Related articles
SMS vs MMS Explained for Developers: Limits, Cost and One API

WhatsApp Business API for Restaurants
%20(1).png?width=96&format=webp)
What Is 10DLC? Registration, Costs and Compliance Explained

IoT hacking: how devices get breached and how to stop it

Inference cost explained: why your AI bill rises as prices fall

The best phone verification APIs for developers in 2026
