If you run an online platform, application, or retail business in India, sending transactional OTPs, order alerts, and billing confirmations via SMS is crucial. However, if your API calls return success but your customers never receive the messages, you are likely hitting the hurdles of DLT (Distributed Ledger Technology) scrubbing.
Enforced by the Telecom Regulatory Authority of India (TRAI), DLT compliance is mandatory. Every sender name (Header), company entity, and message template must be registered on a DLT blockchain network before being sent to consumers. In this guide, we demystify the DLT registration workflow and show you how to bind approvals to your developer API payloads.
Understanding the 4 Steps of DLT Registration
To start sending SMS in India, you must complete four sequential registration phases on any official telecom DLT portal (such as Jio, Vodafone-Idea, Airtel, or BSNL DLT):
Step 1: Principal Entity (PE) Registration
This registers your business as a legal entity on the DLT blockchain. You will need to submit:
- Company PAN Card and GST/Establishment Certificate.
- Authorized signatory letter of authority (LOA) printed on company letterhead.
- An active Email ID and mobile number for portal logins.
Step 2: Sender ID / Header Registration
Headers are the 6-character alphabetic sender names (e.g., SYNWEB) that appear at the top of the customer's SMS inbox.
- Transactional/Service Implicit: For OTPs, billing receipts, and status updates. Must reflect your brand name.
- Promotional: 6-digit numeric headers used for marketing campaigns, which are scrubbed against DND (Do Not Disturb) registries.
Step 3: Content Template Registration
This is where you register the exact text structure of your messages. Any static text cannot be changed at runtime, while dynamic parameters (like OTP digits or customer names) must be represented as variables using the exact placeholder format: {#var#}.
Example Template:
Dear {#var#}, your OTP for transaction at SynxWeb is {#var#}. This is valid for 5 minutes. Please do not share it.
Step 4: Consent Template Registration (Marketing Only)
If you plan to send promotional SMS, you must register a consent template that links back to a customer opting-in to receive marketing material from your brand.
Why SMS Delivery Fails: Common DLT Mismatches
Even after receiving template approvals, developer implementations frequently experience delivery failures. The major causes include:
| Error Scenario | Root Technical Cause | Corrective Action Required |
|---|---|---|
| Mismatched Variables | Variable length or character set exceeds carrier constraints or uses wrong placeholder characters. | Ensure variables contain only alphanumeric characters and are bounded by {#var#} in your API payload. |
| Missing Template ID | The DLT Template ID was not passed as a header or request attribute in the API call. | Bind both the 19-digit Template ID and Entity ID to your SMS gateway request parameters. |
| DLT Header Mismatch | The Sender ID passed in the API (e.g., SYNWEB) is not registered under the PE ID used. | Ensure the Sender ID in the API matches the approved header list on the portal. |
Developer Implementation: PHP SMS API with DLT Binding
To successfully deliver SMS, you must pass the approved Entity_ID and Template_ID within your JSON API payloads. Below is a PHP cURL implementation example showing how to trigger a compliant DLT message:
<?php
$api_url = "https://smsapi.synxweb.in/v1/send";
$payload = [
"entity_id" => "1201159123456789012", // Approved 19-digit PE ID
"template_id" => "1207161789123456789", // Approved 19-digit Template ID
"sender" => "SYNWEB", // Approved 6-char alphabetic header
"recipient" => "+919876543210",
"message" => "Dear Rahul, your OTP for transaction at SynxWeb is 8945. This is valid for 5 minutes. Please do not share it."
];
$ch = curl_init($api_url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
"Content-Type: application/json",
"Authorization: Bearer YOUR_API_TOKEN"
]);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($payload));
$response = curl_exec($ch);
if (curl_errno($ch)) {
echo "Connection Error: " . curl_error($ch);
} else {
$res_data = json_decode($response, true);
print_r($res_data);
}
curl_close($ch);
?>
Conclusion
Navigating DLT compliance can feel complicated, but organizing your registrations systematically ensures 100% delivery compliance and protects your communication pipelines from carrier scrubbing. At SynxWeb, our communication platforms include automated DLT checks, header validations, and template compliance logs directly inside your admin dashboard. Need help getting your DLT approvals? Reach Out to Our Support Engineers →
Empower Your Customer Conversations
Looking to deploy secure, transactional WhatsApp alerts, bulk SMS pathways, or two-way interactive chatbots? Access SynxWeb's official API sandboxes.