This post is for developers who are new to DLT. By the end you'll know how to register your business, get headers and templates approved, and start sending SMS from your app.
The whole flow: Register business (PE) → Approve header → Approve templates → Link SMS provider (PE-TM chain) → Send SMS
The full setup usually takes about 2–5 working days, depending on how quickly approvals come through.
What is DLT?
The first time I tried sending OTP SMS from an app in India, nothing got delivered. No error, no SMS. The reason was DLT.
DLT stands for Distributed Ledger Technology. In simple words, it is a registry kept by telecom operators. Before any business SMS reaches a phone, the operator checks this registry and asks:
- Is this business registered?
- Is this sender name approved?
- Is this exact message format approved?
If the answer to any of these is no, the SMS is blocked. So if you want to send SMS in India, DLT is not optional.
What is TRAI and how is it linked to DLT?
TRAI is the Telecom Regulatory Authority of India. It makes the rules for telecom in the country.
A few years ago, people were getting flooded with spam and fraud SMS. To fix this, TRAI said every business that sends SMS must register, and every message must be approved in advance. That rule is why DLT exists.
Think of it this way: TRAI makes the rules, and the telecom operators (Jio, Airtel, Vi, BSNL and others) run the DLT platforms that enforce them.
Principal Entity and Telemarketer
You'll see these two terms everywhere in DLT:
- Principal Entity (PE): that's you, the business sending the SMS.
- Telemarketer (TM): your SMS provider, the company that actually delivers the SMS to the operators.
Both are registered on DLT. You, as the PE, have to link your SMS provider on the DLT portal. This link is called the PE-TM chain. Without it, your SMS won't go through even if everything else is approved.
DLT Providers
Each operator has its own DLT portal. The good news: you only need to register on one. The data is shared, so it works for all networks.
| Operator | DLT portal |
|---|---|
| Jio | Jio TrueConnect |
| Airtel | Airtel DLT |
| Vodafone Idea (Vi) | Vilpower |
| BSNL | BSNL DLT |
| Tata Tele Business | Tata DLT |
| Videocon / Quadrant | SmartPing |
The portals look different and approval speed varies a bit. If you're unsure, ask your SMS provider which one they recommend.
Step 1: Register as a Principal Entity
This is where everything starts. Keep these documents ready:
- Company PAN card
- GST certificate
- Certificate of Incorporation
- ID proof of the authorized signatory, plus a Letter of Authorization (LOA)
The list can change slightly depending on the DLT provider. Once verified, you get your PE ID (also called Entity ID). Save it somewhere safe, you'll need it a lot.
Step 2: Get Your Header Approved
The header (or Sender ID) is the name people see when your SMS arrives, like ACMEIN or MYSHOP.
What you need:
- 1 or 2 header name options, in case your first choice is taken
- Exactly 6 letters for transactional and service headers
- A name that clearly matches your brand or company
After you submit, the operator checks it against your documents. Approval usually comes within a few hours to a couple of days.
Step 3: Create Your SMS Templates
A template is the fixed format of a message you plan to send. You get it approved once, and after that only the changing parts (like name or OTP) can be different.
The changing parts are marked with {#var#}.
What is a Template ID?
When your template gets approved, DLT gives it a unique number called the Template ID (usually 19 digits, like 1107161234567890123). Think of it as the template's identity card.
Every time you send an SMS, you send the Template ID along with the message. The operator uses it to find your approved template and compare it with the message. Each template has its own ID, so if you have 10 templates, you'll have 10 Template IDs.
| Template name | Template ID | Category |
|---|---|---|
| Login OTP | 1107161234567890123 | Service Implicit |
| Order shipped | 1107161234567890456 | Service Implicit |
| Festive offer | 1107161234567890789 | Promotional |
(IDs above are just examples.)
How to add variables in a template
Variables are the parts of the message that change every time. In DLT, you mark each one with {#var#}.
Let's say you want to send this message:
Hi Priya, your order ORD5521 of Rs 1,499 will be delivered on 12 Oct.
The name, order number, amount and date change for every customer. So the template becomes:
Hi {#var#}, your order {#var#} of Rs {#var#} will be delivered on {#var#}. - ACME
When sending, the values fill in the variables in order:
| Variable | Value |
|---|---|
| 1st {#var#} | Priya |
| 2nd {#var#} | ORD5521 |
| 3rd {#var#} | 1,499 |
| 4th {#var#} | 12 Oct |
Simple rules for variables:
- Use one
{#var#}for each changing value. - Each variable usually allows up to 30 characters.
- Keep fixed words (like "your order" or "Rs") outside the variable.
- Don't make the whole message one big variable. It will be rejected.
- Avoid putting two variables right next to each other with no text in between.
- Links and phone numbers in templates may need to be whitelisted on the DLT portal.
Template categories
| Category | When to use it | Consent needed? | Example |
|---|---|---|---|
| Transactional | OTPs sent by banks for a transaction | No | Bank OTP to approve a card payment |
| Service Implicit | Updates to your existing customers | No | Login OTP, order shipped, payment received |
| Service Explicit | Service messages that need the user's opt-in | Yes | Renewal reminders, follow-up messages |
| Promotional | Offers, sales and marketing | Yes | Festive sale, discount coupons |
Transactional and service SMS use your 6-letter header and can be sent anytime, even to DND numbers. Promotional SMS use a numeric header, are blocked for DND numbers, and can only be sent between 10 AM and 9 PM.
A common mistake: many developers pick "Transactional" for their app's OTPs. That category is meant for banks only. If you're not a bank, use Service Implicit for OTPs, or your template may be rejected.
Sample templates you can use
OTP (Service Implicit)
Dear {#var#}, {#var#} is your OTP to log in to ACME. It is valid for 10 minutes. Please do not share it with anyone. - ACME
Order update (Service Implicit)
Hi {#var#}, your order {#var#} has been shipped and will reach you by {#var#}. Thank you for shopping with ACME.
Payment confirmation (Service Implicit)
Dear {#var#}, we have received your payment of Rs {#var#} for invoice {#var#}. Thank you. - ACME
Appointment reminder (Service Explicit)
Hi {#var#}, this is a reminder of your appointment on {#var#} at {#var#}. Reply or call {#var#} to reschedule. - ACME
Offer (Promotional)
Festive sale is live! Get {#var#} off on all products till {#var#}. Shop now at {#var#}. T&C apply. - ACME
Here's what a filled-in OTP message looks like when it reaches the user:
Dear Rahul, 482913 is your OTP to log in to ACME. It is valid for 10 minutes. Please do not share it with anyone. - ACME
Getting templates approved
- Log in to your DLT portal and open the template section.
- Pick your approved header and the right category.
- Paste the template with
{#var#}in place of the changing parts. - Submit and wait. Approval usually takes a few hours to 2 days.
- Once approved, note down the Template ID.
A small tip from experience: keep templates short and clear, and always add your brand name. Vague templates get rejected more often.
Watch your message length: one English SMS can hold 160 characters. Hindi or other regional-language (Unicode) SMS hold only 70. Anything longer is split and billed as multiple SMS, so keep templates short to save cost.
Step 4: Consent (Promotional and Service Explicit SMS)
If you're sending offers, marketing or service explicit SMS, you need proof that the user agreed to receive them. For OTPs and other service implicit or transactional messages, you can skip this.
You can upload and manage consent directly in the DLT panel. Users can also withdraw consent anytime, and after that the operator will block those SMS to them.
Step 5: Connect With an SMS Provider
DLT only gives you permission. To actually send SMS, you need an SMS provider.
Popular SMS providers in India
- MSG91
- SMSCountry
- SMS Striker
- Exotel
- Twilio
- Gupshup
- Kaleyra
- Route Mobile
- Infobip
- Textlocal
- Fast2SMS
When choosing one, compare per-SMS price, delivery speed, API docs, delivery report support and how quickly they help with DLT setup.
To sign up with a provider, you'll usually need:
- Email ID
- Mobile number
- Contact person name
- Billing address
To activate your account after DLT, share:
- GST copy of the company
- DLT Entity ID (PE ID) and entity name
- Approved header and template IDs
Sender ID activation:
- The sender ID must be a DLT-approved header
- It must be mapped to the PE-TM chain on the DLT portal
- Activation usually happens within 24 hours after mapping
Timelines and documents can vary from one provider to another.
Step 6: Add Your Approved Templates in the SMS Provider Panel
Your SMS provider also needs to know your approved templates. Most providers have a templates section in their dashboard where you add each one.
- Log in to your SMS provider's dashboard and open the templates section.
- Click Create or Add Template.
- Enter the DLT Template ID you got from the DLT portal.
- Paste the template text exactly as it was approved on DLT, including every
{#var#}, space and punctuation mark. - Select the approved header (sender ID) linked to that template.
- Choose the same category you picked on DLT (Service Implicit, Promotional and so on).
- Save it. Some providers approve it instantly, others take a few hours.
Repeat this for every template you plan to use. If the text or Template ID here doesn't match DLT, your SMS will fail during scrubbing.
Step 7: Send SMS From Your Application
Once your account is active, integrate the SMS provider's APIs into your app to send SMS and track delivery status. Most providers give you a simple send API and a delivery report (DLR) callback or status API, so you can see whether each SMS was delivered, failed or is still pending.
A few things that save a lot of headaches:
- The message text must match your approved template exactly. Even an extra space or a changed comma can cause rejection.
- Send the correct template ID with each message.
- Use only the header linked to that template.
- Keep an eye on delivery reports. They are the fastest way to spot DLT issues.
Why SMS Fail: How DLT Scrubbing Works
Every SMS you send is checked ("scrubbed") by the operator's DLT platform before delivery. It checks your PE ID, your header, your template and your PE-TM chain. For promotional SMS, it also checks consent and DND status.
If even one thing doesn't match, the SMS is quietly dropped. That's why most "SMS not delivered" problems in India come down to DLT.
Final Thoughts
DLT feels confusing at first, but it's really just three things: register your business, get your sender name approved, and get your message formats approved. Do that once, link your SMS provider, and you're good to go.
If you've faced any weird DLT rejections, share them in the comments. I'd love to hear how you solved them.
Top comments (0)