Industry & Compliance

TRAI Message Scrubbing in India: PE, Header, Template Failures

How TRAI message scrubbing works in India: the PE, header, and template checks every SMS goes through, common failure codes, and how to debug delivery loss.

6 May 20269 min read

StartMessaging Team

Compliance

Scrubbing is the silent reason your “sent” SMS never reaches the user. Every SMS to an Indian mobile number passes through TRAI’s scrubbing engine, which validates three things before letting the message reach the carrier. If any check fails, the carrier marks it “scrubbed” and the user never sees it — but your provider’s logs may say “sent.”

What is Scrubbing

Scrubbing is the runtime enforcement layer of the DLT framework. Where DLT registration is one-time paperwork, scrubbing happens on every single message and decides whether it actually goes out.

The Three Scrubbing Checks

  1. Principal Entity (PE) check. Is the sender PE registered and active on this operator? Is the entity ID present in the request?
  2. Header (sender ID) check. Is the alphanumeric header registered to this PE? Is it a valid category for this message (transactional vs promotional)?
  3. Template check. Does the message body match an approved template byte-for-byte (after variable substitution)? Are the variables within their declared length limits?

Common Failure Codes

Code (varies by operator)MeaningFix
PE_MISMATCHPE not registered for this headerRe-link the header to the PE in the operator portal
HEADER_INACTIVEHeader expired or suspendedRe-activate or re-register the header
TEMPLATE_MISMATCHBody doesn’t match approved templateSubmit a new template with the exact wording
VAR_LENGTHOne variable exceeded its declared max lengthTruncate at the application layer or update the template
CATEGORY_MISMATCHPromo content sent on transactional headerMove to a promotional header or rewrite the content
NDNC_BLOCKEDRecipient is on the do-not-disturb registryHonor the NDNC list; don’t resend

Debugging Lost Messages

If your delivery rate suddenly drops, walk through this checklist:

  1. Pull the operator-specific delivery report from your provider (DLR webhook payload).
  2. Look for a non-200 carrier error or a scrub code.
  3. Compare the delivered SMS body against the approved template.
  4. Check whether your template was edited or expired in the operator portal recently.
  5. Test with a number on a different operator to isolate the issue.

See our OTP delivery rates article for the broader troubleshooting flow.

How a DLT-Free Route Avoids This

StartMessaging’s standard route runs through pre-approved templates and headers we maintain on every operator. You don’t get scrubbed because there’s nothing in your message body that differs from the registered template. See DLT-free OTP for the architectural details.

FAQ

Read our DLT template variable rules to keep your templates scrub-clean.

Ready to Send OTPs?

Integrate StartMessaging in 5 minutes. No DLT registration required.