1. Understanding SMPP Protocol Status Codes
In wholesale telecommunications, every Protocol Data Unit (PDU) response returned by an SMSC or SMS Gateway contains a 4-octet integer in its header known as command_status. A status of 0x00000000 denotes ESME_ROK (success), while any non-zero value represents a protocol, network, or billing exception.
2. Essential SMPP Command Status Reference Table
| Hex Code | SMPP Identifier | Root Cause & Technical Meaning | Recommended Engineering Action |
|---|---|---|---|
0x00000000 | ESME_ROK | No error. PDU processed successfully. | Proceed with standard in-flight window transmission. |
0x00000001 | ESME_RINVMSGLEN | Message payload length is invalid. | Verify character encoding (GSM 7-bit max 160 vs UCS-2 max 70). Ensure UDH bytes are subtracted for multi-part messages. |
0x00000005 | ESME_RINVBNDSTS | Invalid bind status for requested PDU. | Do not issue submit_sm on an RX (Receiver) session. Re-bind as TRX (Transceiver). |
0x0000000B | ESME_RINVDSTADR | Invalid destination MSISDN address. | Validate international E.164 phone formatting. Ensure country code and national subscriber number are valid without leading zeros. |
0x0000000D | ESME_RBINDFAIL | Bind authentication failed. | Check system_id and password. Verify your source IP is whitelisted on the carrier edge firewall. |
0x00000014 | ESME_RMSGQFUL | SMSC submission queue is full. | Apply exponential backoff and reduce sliding window size temporarily. |
0x00000045 | ESME_RSUBMITFAIL | Generic submission failure at upstream carrier. | Inspect destination corridor routing or switch to redundant SS7 peer. |
0x00000058 | ESME_RTHROTTLED | ESME exceeded negotiated TPS limit. | Throttle client submission rate to match your provisioning tier. Check out our SMPP API documentation for sliding window flow control. |
3. Decoding Delivery Receipts (DLR) & Handset Statuses
While submit_sm_resp confirms the gateway received the packet, the final delivery status is returned asynchronously via deliver_sm. Key DLR status fields include:
- DELIVRD (000): Handset acknowledged message receipt via radio channel.
- EXPIRED (001): Validity period lapsed while destination phone was powered off or out of cellular coverage.
- DELETED (002): Message cancelled or purged by carrier SMSC.
- UNDELIV (003): Hard bounce. Number unallocated, ported out, or rejected by handset.
- ACCEPTD (004): Handed over to intermediate carrier transit peer without downstream DLR capability.
- UNKNOWN (005): Temporary routing anomaly.
- REJECTD (006): Blocked by carrier SS7 anti-spam firewall or unverified alphanumeric Sender ID.
For live connection testing and dedicated TRX binds, contact our 24/7 Connectivity Desk via our contact portal or inspect our real-time wholesale SMS rates.