Start with the message ID and the stage of failure
Separate three events: your application requested a send, the provider accepted it, and a delivery receipt arrived. An HTTP success response or an SMPP submission acknowledgement does not by itself prove that the destination received the SMS.
Store the provider message ID beside your own business-event ID. A campaign reference alone may cover thousands of individual messages. The outbound status lifecycle illustrates why submission and delivery must be tracked separately.
Read the status before interpreting an error code
| Label | What to establish | Next check |
|---|---|---|
| Queued / submitted / pending | Processing is not finished or the final receipt is missing | Message age, validity and receipt configuration |
| Delivered / DELIVRD | The route returned a delivery indication | Destination, timestamp and message ID; this is not proof of reading |
| Undeliverable / UNDELIV | Delivery failed | Provider reason and address/route details |
| Expired / EXPIRED | The message validity period ended | Original expiry and whether the business event is still valid |
| Rejected / REJECTD | The message was rejected | Exact rejection reason and the rejecting system |
| Unknown | A reliable final interpretation is unavailable | Reconcile with the provider before retrying |
Dashboards can rename statuses. Preserve the original value as well as your internal category. For multipart SMS, also check whether the report describes a segment or the complete logical message — a longer message's segment count is easy to check with the SMS character and segment counter.
Standard SMPP response codes: examples, not a carrier DLR dictionary
The following hexadecimal values belong to SMPP command_status. They must not be used to decode a similarly numbered provider API error or the err field inside a delivery receipt. They are also distinct from the numeric code values returned by MetaReach's own Send SMS and DLR API, which use a separate 001–011 scheme documented there.
| Code | Meaning | Suggested investigation |
|---|---|---|
0x0000000B | Invalid destination address | Number format and addressing settings |
0x0000000E | Invalid password | Configured credentials and the intended account |
0x00000014 | Message queue full | Backlog, capacity and provider retry guidance |
0x00000058 | Submission rate exceeded | Agreed rate and client-side pacing |
The SMPP specification, section 5.1.3 and Appendix B, distinguishes command responses from delivery receipt errors. DLR error meanings are network or SMSC specific. Obtain the dictionary for the exact MetaReach route or API version you use — see SMPP vs HTTP SMS API if you're still choosing between the two integration methods.
Investigate a failed India SMS in a consistent order
- Request: check required fields, credentials, balance and enabled route against your account documentation.
- Destination: verify the expected number format and remove accidental spaces or duplicate country prefixes.
- Sender and template: compare the approved header, entity/template identifiers and final text with the configured request — see DLT SMS template examples for how to draft and map that content.
- Variables and encoding: check substituted values, punctuation, invisible characters and message length.
- Receipt: retain the complete error, timestamp and source field. Ask support whether the rejection came from the API, SMSC, DLT check or destination network.
These checks identify what to investigate; they do not assign a universal cause to every failed SMS. For template preparation use DLT template examples, DLT registration support and the existing PE–TM binding guide.
Avoid duplicate sends while fixing delivery
Classify the failure before deciding to retry. A malformed destination needs correction. A rate-limit response calls for pacing. A timed-out request has an uncertain submission outcome and needs reconciliation.
Use a stable business-event identifier and the provider's documented deduplication mechanism where available. Keep bounded retry attempts and expiry rules. A delayed receipt should not restart the original campaign. For an expired OTP, follow the product's fresh-code flow instead of sending an old credential.
Callback handlers should authenticate requests using the provider's documented method, record the event durably and tolerate repeats. Review your state transitions so a late pending event cannot overwrite a confirmed final result.
Send support a useful diagnostic record
Provide the campaign reference, provider message ID, masked destination, send time with timezone, sender/header, template ID, latest raw status, raw error and whether one or many recipients are affected. Keep credentials and live OTPs out of the ticket.
Compare a small successful sample with the failed sample from the same period. Differences in message text, route or sender are more useful than repeatedly resending the whole list.
For setup questions, explore SMS API integration, the full SMS API documentation, or SMPP connectivity. If you need to review the overall sending setup, start with MetaReach Bulk SMS services.
Frequently asked questions
Does an API success response mean the SMS was delivered?
It normally confirms the request outcome at that stage. Use the provider message ID and the documented delivery receipt or status query to establish the final result.
Does a delivered SMS status mean the recipient read it?
No. An SMS delivery indication does not establish that the recipient opened or read the message.
Are SMS error codes the same across providers?
No. Check the code namespace and the provider dictionary. SMPP command-status codes and the error field in a carrier delivery receipt are different things.
Should every failed SMS be retried?
No. Correct permanent errors first. Pace transient failures according to the provider policy, reconcile uncertain submissions and avoid resending expired messages.
Discuss your SMS setup with MetaReach
Share your use case, current platform and expected message volume. Our team can help you define the configuration and next steps.
Get SMS delivery supportSales: +91 7669990407 · Send an enquiry
Technical references
- Outbound message status lifecycle — Twilio
- SMPP v3.4 specification — command status and delivery receipts
Examples on this page are illustrative. Confirm provider-specific settings against your current account documentation.