SMSLocal
Getting started

How OTP SMS Delivery Actually Works in India

How OTP SMS delivery works in India — the DLT template rules for one-time passwords, why codes go missing, security limits, and whether to build or buy.

SMSLocal Team· Product, compliance & engineering7 min read
Engineer reviewing per-message OTP delivery receipts on a laptop dashboard.

An OTP SMS is the one message a business cannot afford to lose. It has seconds to arrive, it has to match a pre-approved template byte for byte, and it reaches a user who is already stuck at a login screen. This guide covers how OTP delivery actually works in India, the rules that apply specifically to one-time passwords, why codes go missing, and what to weigh before you pick a provider.

What an OTP SMS actually is

A one-time password is a short numeric code, valid for a single use inside a narrow time window, that proves the person completing an action controls a particular phone number. The SMS itself is ordinary — what makes it an OTP is everything around it: how the code is generated, how long it lives, and how quickly it is invalidated.

  • Single use. Once redeemed, the code must be dead. Reusable codes defeat the entire purpose.
  • Time-boxed. A short expiry limits how long an intercepted code is worth anything.
  • Transactional category. OTPs are service-explicit messages, which is why they reach numbers on DND when marketing SMS cannot.
  • Network-independent. SMS rides the carrier signalling layer, so the code arrives on a phone with no data connection at all.

How an OTP send works, end to end

The round trip has more moving parts than most teams expect, and each one is a place delivery can quietly fail.

  • 1. Your server generates the code. Store a hash of it against the session with an expiry, never the plain value.
  • 2. Your server calls the SMS API. The request carries the recipient, your registered sender ID, the approved template ID, and the code as a template variable.
  • 3. The platform validates and routes. Template match is checked first, then the message is handed to the fastest available route for that operator.
  • 4. The carrier delivers.The operator's SMSC pushes the message to the handset, holding it if the device is unreachable.
  • 5. A delivery receipt comes back. A webhook confirms delivered or failed per message — this is the only honest signal that the code arrived.
Flow diagram tracing a text message from the sending device through the operator's SMSC relay to the receiving handset.
An OTP never touches the internet on the last leg — it travels the operator's signalling layer and is held by the SMSC until the handset is reachable.

The DLT rules that apply to OTP

India treats OTP traffic like all other business SMS: it must come from a registered entity, use a registered sender ID, and match a registered template. The template is where OTP senders trip up, because the approved text is matched exactly and only the declared variable slots may change between sends.

What breaksWhat the sender seesWhat the user sees
Template text edited after approvalAPI returns successNothing arrives
Extra variable added to the messageAPI returns successNothing arrives
Sender ID not mapped to the templateAPI returns successNothing arrives
Filed under promotional categoryDelivered, slowlyCode arrives late
The dangerous failure mode is silent: the platform accepts the request and the operator drops it downstream.

If you have not been through entity, header, and template approval yet, our DLT registration guide walks through each document, the realistic timelines, and the rejection reasons that catch most first-time senders.

Graphic showing India's TRAI-mandated DLT registry sitting between business senders and mobile subscribers.
DLT makes every sender, sender ID, and message template verifiable before delivery — OTP traffic is no exception.

Why OTPs go missing

When a user says the code never came, the cause is almost always upstream of their phone. Working through these in order resolves the majority of reports.

  • Template drift. Someone changed the wording in code without re-filing the template. The commonest cause by a wide margin.
  • Wrong category. An OTP filed as promotional gets batched behind marketing traffic and arrives minutes late, or during a blackout window, not at all.
  • Carrier rate limiting. Repeated sends to one number in a short span get throttled at the operator.
  • Handset-side filtering. Spam filters and blocked-sender lists on the device can swallow a legitimate code.
  • Stale number. The number was ported, recycled, or simply mistyped at signup.
Phone display with a blank message list and a spinner where a verification code should have appeared.
Start at the delivery report, not the handset — it tells you whether the failure sits at the template layer, the carrier, or the device.

Working through that list depends entirely on the platform handing back a per-message delivery receipt rather than a single “accepted” response at send time. Real receipts are what the SMSLocal OTP SMS product reports back per code, which is the difference between knowing a message failed and guessing at it.

What SMS OTP does and does not protect

SMS OTP is a genuine improvement over passwords alone: it stops credential stuffing and reuse attacks outright, because a leaked password is no longer sufficient. What it does not stop is an attacker who controls the phone number or who relays the code in real time. SIM-swap fraud and convincing phishing pages both defeat it, which is why NIST's digital identity guidelines classify SMS as a restricted authenticator and push higher-risk flows toward app-based or hardware factors.

For most Indian consumer products SMS remains the right default, because reach beats theoretical strength when the alternative is no second factor at all. Tighten it where it is weakest:

  • Keep expiry short and invalidate immediately on successful use.
  • Rate-limit both requests per number and verification attempts per code.
  • Bind the code to the originating session so it cannot be replayed elsewhere.
  • Never read a code back to a user, and say so in the message itself.

Build versus buy

The API call is the easy part. What you actually take on by building is carrier relationships, DLT paperwork, route failover when one operator degrades, retry logic, delivery-receipt plumbing, and someone reachable at 2am when codes stop landing on one network.

ConcernBuild it yourselfUse a provider
DLT onboardingYour team files everythingOnboarding support
Route failoverYou negotiate and monitorHandled upstream
Delivery receiptsYou build the pipelineWebhook out of the box
Time to first OTPWeeksDays

For teams that want the second column, an established provider absorbs the DLT paperwork, the route monitoring, and the receipt plumbing — which leaves your codebase responsible for only two things: generating the code and verifying it.

Browser-based team inbox listing SMS threads beside per-message delivery status badges.
Whether a code is triggered by your code or a person, the same template, route, and delivery-receipt machinery runs underneath.

Frequently asked questions

An OTP SMS service delivers one-time password codes to a user's phone over the telecom network. Your application generates the code, calls the provider's API with an approved DLT template, and the provider routes it to the recipient's carrier and reports back whether it was delivered.
Yes. Every SMS sent to an Indian number, including OTPs, must originate from a registered Principal Entity and Sender ID and match an approved content template. Without a matching template the API call still succeeds, but the operator drops the message before it reaches the handset.
No. OTPs are service-explicit transactional messages and are exempt from NCPR scrubbing, so they reach numbers registered on DND. If your OTPs are not arriving, DND is almost never the cause.
Short enough to limit exposure, long enough to survive a slow network. Most Indian products settle between five and ten minutes, paired with a resend button rather than a longer window. Always invalidate the code the moment it is used successfully.
Late delivery is usually a queue, not a failure. Promotional-category routes are batched and deprioritised by carriers during peak traffic, so an OTP filed under the wrong category will lag. Sending on a transactional route keeps codes in the priority queue.
You can, using WhatsApp authentication templates, but it only works if the user has WhatsApp installed and online. Most Indian products send SMS as the primary channel because it needs no internet connection, and treat WhatsApp or voice as the fallback.

₹60 free credit. No credit card.

Open a live account, send your first DLT-compliant SMS, and keep the test balance forever.