What is SMS?
Short Message Service (SMS) is the text-messaging service built into every mobile network. A message travels from the sender — a phone, or for business traffic an application — to a Short Message Service Centre (SMSC), which stores it and forwards it to the recipient's handset as soon as the network can reach it. Delivery uses the network's signalling channels rather than mobile data, which is why SMS reaches feature phones, phones with data switched off and users in weak coverage, and why it needs no app, no account and no platform sign-up.
A single SMS carries 140 bytes: 160 characters in the GSM-7 alphabet, or 70 when any character outside it — Hindi, Tamil, an emoji, even a curly apostrophe — forces UCS-2 encoding for the whole message. Longer texts become a concatenated SMS of 153- or 67-character segments, each billed separately; the GSM-7 encoding, UCS-2 encoding and concatenated SMS pages cover that maths. The first SMS was sent in December 1992, and the format has barely changed since.
For businesses, SMS mostly means application-to-person (A2P) SMS — OTPs, alerts and promotions sent through an SMS gateway, often over SMPP. In India every commercial SMS runs on TRAI's DLT framework: a registered principal entity, a header, a content template and consent, checked by the operator before delivery; since 1 October 2024, messages containing URLs, APKs or OTT links that are not whitelisted are blocked. SMS sits beside over-the-top apps such as WhatsApp and carrier upgrades such as RCS: it has the widest reach and the fewest features, with delivery reports but no read receipts and no branding beyond a sender ID.
Key takeaways
- SMS (Short Message Service) delivers text through the operator's message centre to any mobile phone, with no app or data connection.
- One SMS holds 160 GSM-7 characters or 70 in UCS-2; longer texts are split into segments and billed per segment.
- The message centre stores and forwards: a phone that is off gets the text when it reconnects, until the validity period runs out.
- In India every commercial SMS runs on DLT, and messages with non-whitelisted URLs, APKs or OTT links have been blocked since 1 October 2024.
- SMS reports delivery but never reads, and it carries no branding beyond the sender ID.
Figure 1
Type a message and watch the SMS bill change
Encoding
GSM-7
7-bit alphabet · 160 per SMS, 153 per part
Characters
168
168 septets
SMS parts
2
153 per part
Left in part
138
before part 3
Billed as 2 SMS
Part 1153 / 153
Festive offer: flat 20% off all kitchenware till Sunday at our Indiranagar and Jayanagar stores. Show this SMS at billing. Valid on bills above Rs 999. T
Part 215 / 153
&C apply. -ACME
Header (UDH) — 7 septets of every part go to reassembly data.
How it splits
- Alternating parts
- 2 septets
- Forces UCS-2
Why
Past 160 septets the message is split into 2 parts of up to 153: each part gives 7 septets to a header that lets the phone stitch the parts back together.
Festive offer, two segments: GSM-7, 2 SMS parts.
How does SMS work?
The application submits the message
Your system calls an SMS gateway's HTTP API, or an SMPP bind, with the sender ID, the number, the text and — in India — the DLT entity ID and content template ID.
The operator checks and accepts it
In India, DLT scrubbing first checks the header, template, consent and the recipient's preferences. Accepted messages get an ID; rejected ones come back with an error.
The network finds the handset
The SMSC asks the recipient's home network where the subscriber is currently registered, then hands the message to the serving network.
Store and forward
The message travels over signalling (classic SS7, or SMS over IMS on 4G and 5G). If the phone is off or out of coverage, the SMSC keeps retrying until the validity period expires.
A delivery report comes back
When the handset confirms receipt, the SMSC sends an SMS delivery report — delivered, undeliverable, expired or rejected. There is no read receipt in SMS.
Why it matters
Why does SMS matter?
SMS is the one channel that reaches every mobile number in India without an app or internet, which makes it the backbone of OTPs, bank alerts and the fallback behind every richer channel. It is also unforgiving: one stray character doubles the bill, a DLT mismatch silently blocks the message, and a delivery report is the only feedback you ever get. Knowing how SMS actually travels tells you when it is the right channel — reach, urgency, no data — and when WhatsApp or RCS would do the same job better.
Example: Balance alerts for a cooperative bank in Nagpur
A cooperative bank in Nagpur sends balance alerts to account holders, many of whom use basic feature phones with no data. Its Marathi alert ran to 95 characters, so as UCS-2 it went out as two segments and cost two SMS each. The team rewrote it to fit 70 characters in one segment, and kept an English version within 160 GSM-7 characters for customers who chose English — halving the alert bill without losing a single reader. Both versions are registered as separate DLT content templates under the same header, with the amount and date as variables, and the bank watches delivery reports per operator to catch a template mismatch the day it happens.
SMS in code
curl -X POST "https://sms-gateway.example.com/v1/messages" \-H "Authorization: Bearer {API_KEY}" \-H "Content-Type: application/json" \-d '{"from": "ACMEBK","to": "919812345678","text": "482913 is your OTP for ACME Bank. Valid for 5 minutes. Do not share it. -ACME","dlt_entity_id": "{DLT_PE_ID}","dlt_template_id": "{DLT_TEMPLATE_ID}","dlr_url": "https://example.com/webhooks/sms-dlr"}'
Field names differ by provider, but an Indian send always needs the header, the registered template ID and the entity ID — and the text must match the template.
Common mistakes with SMS
Letting one character change the encoding
A curly apostrophe pasted from a document or a single emoji turns a 160-character GSM-7 message into a 70-character UCS-2 one. Normalise quotes and dashes before sending, or budget for UCS-2.
Template drift in India
The text you send must match the registered DLT content template, with only the {#var#} parts changing. Editing the wording in code without re-registering it gets the message rejected.
Unregistered links
Since 1 October 2024, SMS with URLs, APKs or OTT links that are not whitelisted on DLT is blocked. Whitelist every domain and link you use before the campaign goes out.
Treating accepted as delivered
A successful API response means the gateway accepted the message, not that it arrived. Track delivery reports and fall back for OTPs that never show DELIVRD.
Using SMS where a conversation is needed
SMS has no threads, branding or rich replies, and alphanumeric senders cannot receive answers. For support and two-way journeys, move the conversation to WhatsApp and keep SMS for reach and fallback.
Best practices for SMS
- Write OTP messages to fit one GSM-7 segment, with the code at the start.
- Keep each DLT template ID next to the code that sends it.
- Monitor delivery rate per operator, not just overall.
- Use WhatsApp or RCS for rich content and keep SMS as the channel that always gets through.
SMS FAQs
- Does SMS need internet or mobile data?
- No. SMS travels over the mobile network's signalling channels, so it reaches any phone with a SIM and signal — including feature phones and phones with data switched off.
- How many characters fit in one SMS?
- 160 characters in the GSM-7 alphabet, or 70 if the message contains any character outside it, such as Hindi script or an emoji. Longer messages are split into 153- or 67-character segments, each billed as one SMS.
- What is the difference between SMS and WhatsApp messages?
- SMS is a carrier service that reaches every phone without data but carries only plain text and reports delivery, not reads. WhatsApp needs the app and data, and adds media, buttons, read receipts, a verified business profile and two-way chat.
- Do businesses in India still use SMS?
- Yes — for OTPs, bank and government alerts and as the fallback when WhatsApp or RCS cannot reach someone. Every commercial message must follow the DLT rules on headers, templates and consent.
- Why was my SMS not delivered in India?
- Usually a DLT problem: the header and template do not match, the text differs from the registered template, a link is not whitelisted, or the recipient's preferences block that category. Otherwise the phone may have stayed off until the message expired.