Receiving OTPs for Indian Apps: +91 Numbers, DLT and What Developers Should Know
How SMS verification works in India — number formats, TRAI's DLT rules for senders, delivery quirks and how to test Indian signup flows with +91 numbers.
OTP Bolt Team · · 7 min read
India is one of the largest SMS-verification markets in the world. Almost every app — payments, food delivery, ride-hailing, e-commerce — asks for a mobile number first. If you build for Indian users, or test apps that do, a few local rules explain most of the delivery behaviour you'll see.
Number format
Indian mobile numbers are ten digits starting with 6, 7, 8 or 9, written internationally as +91 98XXX XXXXX. Domestic users often type a leading 0 or omit the +91; your phone input should accept all three forms and normalise to E.164 (+919812345678).
DLT: why unregistered SMS disappears
Since 2021, India's telecom regulator TRAI requires commercial SMS to pass through Distributed Ledger Technology (DLT) platforms operated by the carriers. To send OTPs, a business must:
- register itself as a principal entity on a DLT portal;
- register its sender ID (header), such as
ACMEIN; - register each message template, with variables marked for the code;
- send only messages that match an approved template from an approved header.
Messages that don't match are dropped by the carrier — the app may show Code sent while nothing arrives. If you're testing your own app and Indian codes vanish, check your DLT template match before anything else.
Delivery characteristics
- Speed is usually excellent on DLT-compliant traffic — often under ten seconds.
- Peak hours around evening shopping and festival sales can slow delivery.
- Promotional vs transactional: OTPs must be sent as service-implicit / transactional traffic. Promotional routes have time-of-day restrictions and are not suitable for codes.
- Sender IDs appear as a six-character header such as
VM-ACMEIN, where the prefix encodes the operator and circle.
Testing Indian flows with temporary numbers
When you test as a receiver — checking that your app's signup works for an Indian user — a temporary +91 number is the fastest option:
- In OTP Bolt, choose India and the service you're testing. Live stock and price are shown before you rent.
- Paste the number into the app in whatever format it expects.
- Watch the code arrive in the live inbox; if nothing comes before the window closes, the rental refunds automatically.
Popular Indian services such as Swiggy, Zomato, Paytm and Flipkart are in the catalogue, alongside global ones like WhatsApp, Telegram and Google.
For automated suites, call the API with "country": "in". Keep in mind that some Indian apps restrict signups to Indian IPs or app-store regions — your test runner may need an Indian egress for the full flow.
UPI and payments apps
Payment apps add device binding on top of SMS: they often send an outbound SMS from the phone to verify the SIM is physically present. That step cannot be completed with any virtual or temporary number, by design. Test those flows on a real device with a real SIM.
Privacy angle
Indian users receive a lot of marketing calls and messages once a number leaks into lead databases. Using a temporary number for one-off signups — a coupon, a trial, a forum — keeps your personal number out of those lists. Use them responsibly: banking, government and payment accounts should always be on your own SIM.
Checklist for developers targeting India
- Normalise numbers to E.164 and accept
0- and+91-prefixed input. - Complete DLT registration for entity, header and every OTP template.
- Send codes on transactional routes only.
- Monitor delivery per operator circle.
- Test with real +91 numbers before launch and after any template change.