Reference
SMPP error codes: the command_status reference
Every command_status value defined by SMPP 3.4 and 5.0, with its hex value and meaning, and the codes Auvia Gateway returns when it rejects a submit_sm.
67 codesSMPP 3.4 and 5.0Updated 26 October 2026
What Auvia returns
Codes sent back when the gateway rejects a message
Checks run before the message is stored and acknowledged. The customer receives one of these values in submit_sm_resp.
| Reason | command_status | Name in the SMPP specification |
|---|---|---|
| Destination address is required | 0x0000000B | ESME_RINVDSTADR |
| Source address is required | 0x0000000A | ESME_RINVSRCADR |
| Message text is empty | 0x00000001 | ESME_RINVMSGLEN |
| Invalid phone number format | 0x0000000B | ESME_RINVDSTADR |
| Network prefix not recognized for this destination | 0x0000000B | ESME_RINVDSTADR |
| No routing configured for this destination | 0x00000045 | ESME_RSUBMITFAIL |
| No supplier pricing configured for this destination | 0x00000065 | ESME_RX_P_APPN |
| No active trunk available for supplier | 0x00000065 | ESME_RX_P_APPN |
| Content blocked by moderation | 0x00000101 | ESME_RPROHIBITED |
| Content blocked by firewall | 0x00000045 | ESME_RSUBMITFAIL |
| No pricing found for this destination | 0x00000065 | ESME_RX_P_APPN |
| Insufficient balance | 0x0000040B | Vendor-specific code |
| Customer account not found | 0x00000065 | ESME_RX_P_APPN |
| Could not identify country code | 0x0000000B | ESME_RINVDSTADR |
| Rate limit exceeded | 0x00000058 | ESME_RTHROTTLED |
| Number does not exist (HLR) | 0x0000000B | ESME_RINVDSTADR |
| Subscriber not provisioned for SMS (HLR barred) | 0x00000042 | ESME_RINVSUBREP |
| Subscriber absent / unreachable (HLR) | 0x00000042 | ESME_RINVSUBREP |
| Duplicate of a message already accepted for this recipient | 0x00000042 | ESME_RINVSUBREP |
| Sender not approved for this destination | 0x00000042 | ESME_RINVSUBREP |
| Every matching route is below the minimum margin | 0x00000045 | ESME_RSUBMITFAIL |
| Every matching route has used its quota for the period | 0x00000045 | ESME_RSUBMITFAIL |
| Message loop detected (same text to the same number came back) | 0x00000045 | ESME_RSUBMITFAIL |
Full table
All SMPP command_status values
Hex and decimal value, the name used by the specification and libraries, and what it means.
| Hex | Decimal | Name | Meaning |
|---|---|---|---|
0x00000000 | 0 | ESME_ROK | No Error |
0x00000001 | 1 | ESME_RINVMSGLEN | Message Length is invalid |
0x00000002 | 2 | ESME_RINVCMDLEN | Command Length is invalid |
0x00000003 | 3 | ESME_RINVCMDID | Invalid Command ID |
0x00000004 | 4 | ESME_RINVBNDSTS | Incorrect BIND Status for given command |
0x00000005 | 5 | ESME_RALYBND | ESME Already in Bound State |
0x00000006 | 6 | ESME_RINVPRTFLG | Invalid Priority Flag |
0x00000007 | 7 | ESME_RINVREGDLVFLG | Invalid Registered Delivery Flag |
0x00000008 | 8 | ESME_RSYSERR | System Error |
0x0000000A | 10 | ESME_RINVSRCADR | Invalid Source Address |
0x0000000B | 11 | ESME_RINVDSTADR | Invalid Destination Address |
0x0000000C | 12 | ESME_RINVMSGID | Message ID is invalid |
0x0000000D | 13 | ESME_RBINDFAIL | Bind Failed |
0x0000000E | 14 | ESME_RINVPASWD | Invalid Password |
0x0000000F | 15 | ESME_RINVSYSID | Invalid System ID |
0x00000011 | 17 | ESME_RCANCELFAIL | Cancel SM Failed |
0x00000013 | 19 | ESME_RREPLACEFAIL | Replace SM Failed |
0x00000014 | 20 | ESME_RMSGQFUL | Message Queue Full |
0x00000015 | 21 | ESME_RINVSERTYP | Invalid Service Type |
0x00000033 | 51 | ESME_RINVNUMDESTS | Invalid number of destinations |
0x00000034 | 52 | ESME_RINVDLNAME | Invalid Distribution List name |
0x00000040 | 64 | ESME_RINVDESTFLAG | Destination flag is invalid |
0x00000042 | 66 | ESME_RINVSUBREP | Invalid submit with replace request |
0x00000043 | 67 | ESME_RINVESMCLASS | Invalid esm_class field data |
0x00000044 | 68 | ESME_RCNTSUBDL | Cannot Submit to Distribution List |
0x00000045 | 69 | ESME_RSUBMITFAIL | submit_sm or submit_multi failed |
0x00000048 | 72 | ESME_RINVSRCTON | Invalid Source address TON |
0x00000049 | 73 | ESME_RINVSRCNPI | Invalid Source address NPI |
0x00000050 | 80 | ESME_RINVDSTTON | Invalid Destination address TON |
0x00000051 | 81 | ESME_RINVDSTNPI | Invalid Destination address NPI |
0x00000053 | 83 | ESME_RINVSYSTYP | Invalid system_type field |
0x00000054 | 84 | ESME_RINVREPFLAG | Invalid replace_if_present flag |
0x00000055 | 85 | ESME_RINVNUMMSGS | Invalid number of messages |
0x00000058 | 88 | ESME_RTHROTTLED | Throttling error (ESME has exceeded allowed message limits) |
0x00000061 | 97 | ESME_RINVSCHED | Invalid Scheduled Delivery Time |
0x00000062 | 98 | ESME_RINVEXPIRY | Invalid message validity period (Expiry time) |
0x00000063 | 99 | ESME_RINVDFTMSGID | Predefined Message ID is Invalid or not found |
0x00000064 | 100 | ESME_RX_T_APPN | ESME Receiver Temporary App Error Code |
0x00000065 | 101 | ESME_RX_P_APPN | ESME Receiver Permanent App Error Code |
0x00000066 | 102 | ESME_RX_R_APPN | ESME Receiver Reject Message Error Code |
0x00000067 | 103 | ESME_RQUERYFAIL | query_sm request failed |
0x000000C0 | 192 | ESME_RINVTLVSTREAM | Error in the optional part of the PDU Body |
0x000000C1 | 193 | ESME_RTLVNOTALLWD | TLV not allowed |
0x000000C2 | 194 | ESME_RINVTLVLEN | Invalid Parameter Length |
0x000000C3 | 195 | ESME_RMISSINGTLV | Expected TLV missing |
0x000000C4 | 196 | ESME_RINVTLVVAL | Invalid TLV Value |
0x000000FE | 254 | ESME_RDELIVERYFAILURE | Transaction Delivery Failure |
0x000000FF | 255 | ESME_RUNKNOWNERR | Unknown Error |
0x00000100 | 256 | ESME_RSERTYPUNAUTH | ESME Not authorised to use specified service_type |
0x00000101 | 257 | ESME_RPROHIBITED | ESME Prohibited from using specified operation |
0x00000102 | 258 | ESME_RSERTYPUNAVAIL | Specified service_type is unavailable |
0x00000103 | 259 | ESME_RSERTYPDENIED | Specified service_type is denied |
0x00000104 | 260 | ESME_RINVDCS | Invalid Data Coding Scheme |
0x00000105 | 261 | ESME_RINVSRCADDRSUBUNIT | Source Address Sub unit is Invalid |
0x00000106 | 262 | ESME_RINVDSTADDRSUBUNIT | Destination Address Sub unit is Invalid |
0x00000107 | 263 | ESME_RINVBCASTFREQINT | Broadcast Frequency Interval is invalid |
0x00000108 | 264 | ESME_RINVBCASTALIAS_NAME | Broadcast Alias Name is invalid |
0x00000109 | 265 | ESME_RINVBCASTAREAFMT | Broadcast Area Format is invalid |
0x0000010A | 266 | ESME_RINVNUMBCAST_AREAS | Number of Broadcast Areas is invalid |
0x0000010B | 267 | ESME_RINVBCASTCNTTYPE | Broadcast Content Type is invalid |
0x0000010C | 268 | ESME_RINVBCASTMSGCLASS | Broadcast Message Class is invalid |
0x0000010D | 269 | ESME_RBCASTFAIL | broadcast_sm operation failed |
0x0000010E | 270 | ESME_RBCASTQUERYFAIL | query_broadcast_sm operation failed |
0x0000010F | 271 | ESME_RBCASTCANCELFAIL | cancel_broadcast_sm operation failed |
0x00000110 | 272 | ESME_RINVBCAST_REP | Number of Repeated Broadcasts is invalid |
0x00000111 | 273 | ESME_RINVBCASTSRVGRP | Broadcast Service Group is invalid |
0x00000112 | 274 | ESME_RINVBCASTCHANIND | Broadcast Channel Indicator is invalid |
FAQ
SMPP error questions
What is command_status in SMPP?
A 4-byte field in every SMPP response PDU. 0x00000000 (ESME_ROK) means the request was accepted; any other value is an error code from the table on this page.
Which SMPP errors are usually temporary?
Throttling (0x00000058 ESME_RTHROTTLED), a full message queue (0x00000014 ESME_RMSGQFUL), system errors (0x00000008 ESME_RSYSERR) and temporary application errors (0x00000064 ESME_RX_T_APPN) are usually retried later. Address, length and permission errors are usually final.
How does Auvia handle supplier error codes?
Every supplier code goes through an error-code registry. For each code you decide whether the message is retransmitted later, rerouted to another route or supplier, or closed. A message is sent at most 6 times in total.
What does a customer receive when Auvia rejects a message?
A submit_sm_resp with the command_status listed in the table "What Auvia returns", sent before the message is stored, so a rejected message is never charged.
Keep exploring
