SMSAPI
SMS

Transactional vs promotional SMS in India: which route to use

9 June 2026 · The SMSAPI team

In India, the most consequential decision you make about an SMS isn't what it says — it's which category you send it under. Transactional, service, and promotional messages travel on different routes, follow different rules, reach different numbers, and are priced differently. Get the category right and your message arrives at any hour. Get it wrong and it's rejected at registration, or scrubbed after you've already paid for it.

This guide explains the categories, how the DLT framework enforces them, and how to route each kind of message correctly.

The categories, in plain terms

Under the DLT (Distributed Ledger Technology) framework that governs Indian commercial SMS, every message belongs to a category:

  • Transactional and service-implicit messages respond directly to something the customer just did, or report a fact about their account — a one-time passcode, an order confirmation, a payment alert, a low-balance warning. They are not marketing.
  • Service-explicit messages are service updates a customer has consented to receive, like a feature announcement to existing users.
  • Promotional messages are marketing: an offer, a discount, a launch, a re-engagement nudge.

The line that matters most runs between transactional and service traffic on one side and promotional traffic on the other, because the rules diverge sharply there.

Why the category decides reach

The category determines two things: whether a message can reach a number on the National Do Not Call (DND) registry, and at what hours it can be sent.

Transactional and service-implicit messages are exempt from DND scrubbing and time-of-day rules. A password reset has to go through at 2 a.m.; an OTP has to reach a customer who has otherwise opted out of marketing. Because these messages respond to the user's own action, they're treated as a service rather than an intrusion.

Promotional messages are the opposite. They're scrubbed against the DND registry, so a customer who opted out of marketing won't receive them unless they've given you explicit consent that's on record, and they only send within the hours TRAI permits.

So the same sentence can be perfectly compliant in one category and blocked in another. "Your order has shipped" is transactional; "20% off this weekend" is promotional. Sending the second on a transactional template is the classic mistake — and it gets the template rejected or, worse, the traffic scrubbed after launch.

Sender headers follow the category

Categories don't just attach to the message — they attach to the sender header, the six-character name a message appears to come from, like SMSAPI. You register a header against a purpose: a transactional header for service traffic, a promotional header for marketing. The header and the template have to match the category, or the send fails.

In practice that means you run at least two headers: one for the OTPs, alerts, and confirmations your product depends on, and one for the campaigns your marketing team runs. Keeping them separate isn't only compliance hygiene — it protects your transactional deliverability from anything that happens on the promotional side.

Templates lock the content

DLT also requires every message's content to be registered as a template, with the fixed text approved as-is and the parts that change marked as variables. You fill the variables per send — a name, an amount, a code — but you can't alter the fixed text without re-registering.

This is why the category decision has to happen before you write the template: the category sets the rules the template is reviewed against. A template whose wording reads as promotional won't pass in a transactional category, and content that doesn't match an approved template is the most common reason messages get scrubbed downstream.

How to route each kind of message

Once registration is done, routing is straightforward:

  1. OTPs and verification go on the transactional route, with a transactional header and an OTP template. They need the DND exemption and around-the-clock delivery. See the transactional SMS guide.
  2. Order, payment, and account alerts go on the transactional or service-implicit route, triggered by an event in your system and sent on the matching template.
  3. Marketing campaigns go on the promotional route, with a promotional header and template, scrubbed against DND and sent in permitted hours. See promotional SMS.

On the API, the difference between them is a single field — the route — plus the matching header and template IDs. The call shape doesn't change.

Common mistakes, and how to avoid them

  • Dressing up marketing as transactional. Slipping an offer into a transactional template to dodge DND scrubbing is the fastest way to get a template rejected or a header flagged. Keep the categories clean.
  • One header for everything. Mixing transactional and promotional traffic on a single header risks your critical OTP and alert deliverability. Register separate headers.
  • Treating the category as an afterthought. Teams often write the message, then ask which category it's in. Reverse that — decide the category first, then write a template that fits it.
  • Assuming "service" covers marketing. A service-explicit message is a consented service update, not a promotion. If it's selling something, it's promotional.

Pricing follows the category

The category even shapes what you pay. Transactional and promotional routes are priced separately, and rates step down with volume on each. Because the two carry different traffic and different obligations — DND scrubbing and time-of-day handling on the promotional side — they're billed as distinct products, and most providers, ourselves included, show the per-SMS rate for each with GST broken out separately, the way Indian B2B buyers expect.

That separation matters when you plan a month. A product that's heavy on OTPs and alerts is mostly transactional volume; a brand running campaigns is mostly promotional; a typical business is a mix of both. Price your real split rather than a single blended number, because the two routes can carry meaningfully different rates, and a promotional-heavy month costs differently from a transactional-heavy one.

One more practical point that surprises people: a long message is split into concatenated parts, and each part is charged and receipted as one SMS. A plain English message fits 160 characters; a Unicode message — Hindi or a regional language — fits 70. So the same sentence can cost one SMS in English and two in Hindi. Factor the language and length of your templates into the cost, not just the per-message rate, especially if you send in regional languages at scale.

Getting set up

All of this rests on DLT registration: a principal entity, your headers, and a template per message type, each in the right category. We handle the header and template registration with you and validate your entity and template IDs on every send, so a miscategorised message fails fast rather than being scrubbed. The full process is in our DLT registration guide.

Get the category right, and the rest of Indian SMS is genuinely simple: one API call, the right route, and a message that reaches your customer exactly when it should — neither blocked when it matters, nor sent when it shouldn't be.