1. Register as a Principal Entity (PE)
A Principal Entity is the business or organisation sending the messages — a bank, an e-commerce platform, a hospital, a SaaS product. Registration happens on any one telecom operator's DLT portal (Airtel, Jio, Vi and BSNL each run one; registering with one operator is generally enough since the DLT ecosystem is interconnected). You'll typically submit company KYC documents (PAN, GST/CIN, authorised signatory details) for verification. Once approved, you receive a PE ID — a unique identifier for your business across the entire DLT ecosystem, not just that one operator.
2. Register a Header (Sender ID)
A Header — commonly called a Sender ID — is the short name recipients see instead of a phone number
(e.g. AXBANK). Headers are typically 6 characters and must be registered under the
correct consent category: Transactional, Service (Implicit/Explicit), Promotional, or Government.
Since 6 May 2025, operators automatically append a one-letter category suffix to
every header at delivery time — -T for transactional, -S for service,
-P for promotional, -G for government — so recipients can see at a glance
what kind of message they're getting. You don't set this suffix yourself; it's applied based on
which category your content template is registered under.
3. Register a Content Template
The Content Template is the exact message you intend to send, with variable portions marked out —
for example Dear [VARIABLE], your OTP is [VARIABLE]. or, under the current pre-tagging
rules, Dear #alphanumeric#, your OTP is #numeric#. You submit this to a content
template registrar (part of the operator's DLT platform); it's typically reviewed and
approved or rejected within about two working days. Once approved, it gets a
Content Template ID. See the
variable pre-tagging guide for the current rules on which
variable tags are accepted.
4. Send messages with PE ID, Header and Content Template ID
Your SMS gateway/API payload has to carry all three identifiers alongside the message text: the PE ID, the Header (Sender ID) used, and the Content Template ID the outgoing text is supposed to match. The operator's DLT scrubber checks that the message text structurally matches the registered template for that Content Template ID, that the Header belongs to your PE, and that variable values match their declared types — and only then delivers the message. A mismatch on any of those checks is the most common reason a perfectly well-intentioned transactional SMS silently fails to arrive.
Common rejection reasons
In practice, most rejections trace back to one of: the live message text no longer matching the registered template word-for-word (a copywriter tweaked the wording after registration), untyped or wrong-typed variables under the current pre-tagging rules, a URL or callback number that isn't on the registered CTA whitelist, or a Header/PE ID/Content Template ID mismatch in the API payload itself. The template validator on this site catches the first two before you ever send a message.
Check your template before you register — or before you send
Paste your registered template and the exact message text into the validator to confirm they still match, and to check SMS encoding and segment count. Open the validator →
Need to see the delivered SMS on a real number?
For QA or demos, you can receive the test message on a free temporary Indian number instead of a personal one. Receive SMS online at receive-smss.live →