Skip to main content
Every SMS delivery report carries an errorCode. The code tells you the outcome — but more usefully, the range tells you where the message stopped, which decides who can fix it.
These codes apply to SMS sent to India. International traffic uses a different and much shorter set — see International SMS error codes.
A 9xx or 900xxx code means the message never left the platform, so it was never charged to an operator and nothing reached the network. Those are the ones you can resolve yourself, usually in the portal.
This is the complete set, checked against the platform’s own lists in September 2026: 90 three-digit codes, plus five newer platform checks that so far have only a six-digit code. The gaps in the three-digit numbering (105, 106, 122, 202, 212, 217, 219, 221) are unused values, not omissions from this page.

Success

Handset, network and operator — 101–143

The message reached the operator but was not delivered. Some of these are genuinely temporary (handset off, congestion) and worth retrying; others describe a permanent property of the number.
111 (delivery awaited) is not a failure — the message is still in flight and no final status has arrived. Treat it as pending rather than counting it against your delivery rate.

DLT and regulatory — 201–227

India-specific. The message was stopped by TRAI/DLT scrubbing or by consent rules. Retrying changes nothing — the registration or the content has to be corrected. See DLT registration.
These are OneXtel codes, not the DLT platform’s own. Each operator’s DLT platform — Airtel, Jio, Vi, BSNL — has its own numbering, and OneXtel normalises them into the band below so you get one set regardless of which platform scrubbed the message. If you see a differently numbered code inside a DLT portal, that is the platform’s own code and will not match this table.
226 (content mismatch) and 211 (variable too long) mean the message body did not match the registered template. This is the most common DLT rejection: the template is approved, but the message built from it drifted — an extra space, a changed word, or a variable longer than registered.
218 (DND preference) is the recipient’s own registration on the Do Not Disturb list. It is not a fault, and the number cannot be messaged promotionally until they change it. Use the Scrub DND option on your API key to filter these before sending rather than paying for the rejection.

Message assembly — 527

Platform — 970–995 and 900xxx

The message was rejected by OneXtel before it reached an operator. Every one of these is something you or your account team can resolve. The platform records each of these checks under a six-digit code as well as the three-digit one. The table gives both, so you can match whichever form you see. These five newer checks have a six-digit code only:
Several of these map directly to settings you control:
  • 974, 976 — the blacklist
  • 982, 987 — credits
  • 992 — the TUC validity period, set in user management
  • 995 — the SMS Time Window account setting; the message fell outside the permitted sending hours and was dropped rather than queued