28 October 2026 • 7 min read
If your application sends OTPs or alerts to Indian phone numbers (+91), you cannot simply integrate an SMS API and start sending.
All commercial messaging in India is regulated by the Telecom Regulatory Authority of India (TRAI) under TCCCPR 2018 (Telecom Commercial Communications Customer Preference Regulations). To curb spam and phishing, TRAI mandated that telecom operators operate a unified Distributed Ledger Technology (DLT) blockchain.
Under DLT rules, every business sending SMS must complete corporate KYC as a Principal Entity (PE), register 6-character sender headers (Sender IDs), and pre-register every message template down to exact variable syntax before sending.
Because telecom operators share a synchronized ledger, registering on one operator's portal assigns a Principal Entity ID that is recognised across Indian networks.
Register on an operator portal with company PAN, Certificate of Incorporation or GST Certificate, and Authorized Signatory authorization letter. Operators charge a one-time fee of ₹5,900 including GST, charged on the first platform you register with. Verification takes a few working days; it then issues a Principal Entity ID.
Your backend sends API requests to an aggregator, not telecom switches. Each aggregator holds a registered Telemarketer ID (TM ID); MSG91, Gupshup and Kaleyra each have one. Find your provider's TM ID in its console or support documentation. In your DLT portal, add your provider's TM ID to authorize them to transmit your traffic. You can bind multiple TM IDs simultaneously under one Entity ID.
A header is the 6-character sender code displayed on user devices. India enforces four header categories:
561234), restricted to 10:00 AM–09:00 PM, and blocked on DND.Headers must match your registered company name or trademark. If your brand differs from your legal entity, upload trademark proof or domain invoices to claim the header.
Every message pattern must be pre-approved. Variables use the {#var#} format.
Approved Service Implicit Template:
Your verification code for Acme is {#var#}. Valid for 10 minutes. Do not share this code with anyone. - Acme
Telecom scrubbers inspect outbound SMS in real time: variables cannot exceed defined lengths (typically up to 30 characters), consecutive variables without text (e.g., {#var#}{#var#}) are rejected, and fixed text, spaces, and brand footers must match approved templates exactly.
Under TRAI's August 2024 directions on message traceability and URL whitelisting (press releases 80/2024 and 92/2024):
The table below summarizes statutory costs, domestic SMS pricing, and technical delivery benchmarks.
| Metric | Figure / Benchmark | Source & Date |
|---|---|---|
| DLT Entity Registration Fee | ₹5,000 + 18% GST (₹5,900) | Infobip DLT guide (read 28 Oct 2026) |
| Domestic SMS OTP Cost | ₹0.15 to ₹0.25 per message | productgrowth.in /numbers/sms-otp-cost-india/ (Oct 2026) |
| Domestic Providers (MSG91, Gupshup, Kaleyra) | ₹0.17–₹0.25 per OTP | Authgear / Message Central (2026) |
| Twilio Domestic India Rate | ~₹0.45 per OTP | Message Central / Twilio Console (May / Oct 2026) |
| WhatsApp Auth Conversation Rate | ₹0.125 to ₹0.15 per conversation | productgrowth.in /numbers/whatsapp-business-api-cost-india/ (Oct 2026) |
As noted in our benchmark on what an SMS OTP costs in India, domestic providers sit between ₹0.15 and ₹0.25 per delivered message, while international aggregators charge roughly double due to currency spreads and routing markups.
Follow this operational blueprint:
- BrandName). Keep OTP variables numeric (4–6 digits). Whitelist root domains before submitting templates.Yes. Your Principal Entity ID exists on a shared blockchain ledger. You can bind multiple Telemarketer IDs (such as MSG91, Gupshup, and Exotel) simultaneously, enabling multi-vendor routing and automatic failover under one Entity ID without extra fees.
An HTTP 200 response only confirms that the gateway received your API request. If the text deviates from the approved DLT template by a single space or punctuation mark, or includes an unapproved URL, the telecom scrubber drops the message at the switch without handset delivery.
Service Implicit is for critical transactional messages (login OTPs, payment receipts, order tracking) and delivers 24x7 to all numbers, including DND subscribers. Service Explicit is for marketing updates to existing customers, requires registered user consent, can only be sent between 10:00 AM and 09:00 PM, and respects DND preferences.
Usually not. The Transactional template category is available only to banks and RBI-approved digital wallets. Startups, fintechs and e-commerce platforms register OTPs under Service Implicit, unless the operator tells them otherwise.
Infobip describes ₹5,900 as a one-time charge on the first platform you register with, and registration on other operators' platforms as free. We could not find a published renewal rule, so check your operator's portal before you rely on that.
Nine stories, every morning at 09:15 IST.
Get the brief free →