These error codes are returned with submit_sms_resp PDUs. They indicate either an issue with the format or structure of your request, or an issue with delivery to the mobile phone.
As well as these pre-defined SMPP error codes, there are OpenMarket-Specific SMPP Error Codes. We use these to better indicate what may have caused the request to fail. We may also provide further information as to why a message request failed in TLV 0x2153. This TLV provides the most accurate information about why a message may have failed. For a list of the codes returned by TLV 0x2153, see TLVs returned in responses and delivery receipts.
Search for a code or on any other text:
Hex value |
Decimal |
Description |
Possible solution |
---|---|---|---|
0x00000000 |
0 |
No Error |
|
0x00000001 |
1 |
Message length is invalid |
Max 140 octets; 160 chars in uncompressed default character encoding. |
0x00000002 |
2 |
Command length is invalid |
|
0x00000003 |
3 |
Invalid Command ID |
|
0x00000004 |
4 |
Incorrect BIND Status for given command |
You must bind first before any other request is handled. |
0x00000005 |
5 |
ESME Already in Bound State |
Do not send bind requests when already bound. |
0x00000006 |
6 |
Invalid Priority Flag |
|
0x00000007 |
7 |
Invalid Registered Delivery Flag |
|
0x00000008 |
8 |
System Error |
|
0x00000009 |
Reserved |
||
0x0000000A |
10 |
Invalid Source Address |
|
0x0000000B |
11 |
Invalid Dest Addr |
Invalid length; the length was greater than 3 && less than 17, invalid international format. |
0x0000000C |
12 |
Message ID is invalid |
|
0x0000000D |
13 |
Bind Failed |
|
0x0000000E |
14 |
Invalid Password |
|
0x0000000F |
15 |
Invalid System ID |
|
0x00000010 |
16 |
Reserved |
|
0x00000011 |
17 |
Cancel SM Failed |
|
0x00000012 |
Reserved |
||
0x00000013 |
19 |
Replace SM Failed |
|
0x00000014 |
20 |
Message Queue Full |
|
0x00000015 |
21 |
Invalid Service Type |
Set to NULL |
0x00000016 |
Reserved thru -0x00000032 |
||
0x00000033 |
51 |
Invalid number of destinations |
|
0x00000034 |
52 |
Invalid Distribution List name |
|
0x00000035 |
53 |
Reserved thru -0x0000003F |
|
0x00000040 |
64 |
Destination flag is invalid (submit_multi) |
|
0x00000041 |
Reserved |
||
0x00000042 |
66 |
Invalid submit with replace request; submit_sm with replace_if_present_flag set |
|
0x00000043 |
67 |
Invalid esm_class field data |
|
0x00000044 |
68 |
Cannot Submit to Distribution List |
|
0x00000045 |
69 |
submit_sm or submit_multi failed |
|
0x00000046 |
Reserved thru -0x00000047 |
||
0x00000048 |
72 |
Invalid Source address TON |
Accepts International, Network, or Alphanumeric; values of 0x01, 0x03, and 0x05. |
0x00000049 |
73 |
Invalid Source address NPI |
Set to null for default value or 0x01 for ISDN numbering plan indicator. |
0x00000050 |
80 |
Invalid Destination address TON |
Accepts either Unknown Or International; values: 0x00 and 0x01. |
0x00000051 |
81 |
Invalid Destination address NPI |
Accepts either Unknown Or ISDN E163/E164: values: 0x00 and 0x01. |
0x00000052 |
Reserved |
||
0x00000053 |
83 |
Invalid system_type field |
|
0x00000054 |
84 |
Invalid replace_if_present flag. |
|
0x00000055 |
85 |
Invalid number of messages |
|
0x00000056 |
Reserved thru -0x00000057 |
||
0x00000058 |
88 |
Throttling error; ESME has exceeded allowed message limits. |
|
0x00000059 |
89 |
Reserved thru -0x00000060 |
|
0x00000061 |
97 |
Invalid Scheduled Delivery Time |
|
0x00000062 |
98 |
Invalid message validity period (Expiry time). |
|
0x00000063 |
99 |
Predefined Message Invalid or Not Found |
Does not support canned messages; set to NULL. |
0x00000064 |
100 |
ESME Receiver Temporary App Error Code |
|
0x00000065 |
101 |
ESME Receiver Permanent App Error Code |
|
0x00000066 |
102 |
ESME Receiver Reject Message Error Code |
|
0x00000067 |
103 |
query_sm request failed |
|
0x00000068 |
104 |
Reserved thru -0x000000BF |
|
0x000000C0 |
192 |
Error in the optional part of the PDU Body |
|
0x000000C1 |
193 |
Optional Parameter not allowed |
|
0x000000C2 |
194 |
Invalid Parameter Length |
|
0x000000C3 |
195 |
Expected Optional Parameter missing. |
|
0x000000C4 |
196 |
Invalid Optional Parameter Value |
This error occurs when an optional value parameter retrieve fails; this not normal behavior. |
0x000000C5-0x000000FD |
|||
0x000000FE |
245 |
Delivery Failure, used for data_sm_resp |
|
0x000000FF |
255 |
Unknown Error |
|
0x00000100 |
Reserved for SMPP extension thru -0x000003FF |
Command Status
Command Status as defined in [SMPP] (5.1.3).
Please note that SMPP protocol Command Status Error Codes below are specified as
hexadecimal numbers. Remember to do appropriate conversion before checking on results returned by SMSC
through library functions.
Value | Description |
---|---|
0x00000000 | No Error |
0x00000001 | Message Length is invalid |
0x00000002 | Command Length is invalid |
0x00000003 | Invalid Command ID |
0x00000004 | Incorrect BIND Status for given command |
0x00000005 | ESME Already in Bound State |
0x00000006 | Invalid Priority Flag |
0x00000007 | Invalid Registered Delivery Flag |
0x00000008 | System Error |
0x00000009 | Reserved |
0x0000000A | Invalid Source Address |
0x0000000B | Invalid Destination Address |
0x0000000C | Message ID is invalid |
0x0000000D | Bind Failed |
0x0000000E | Invalid Password |
0x0000000F | Invalid System ID |
0x00000010 | Reserved |
0x00000011 | Cancel SM Failed |
0x00000012 | Reserved |
0x00000013 | Replace SM Failed |
0x00000014 | Message Queue Full |
0x00000015 | Invalid Service Type |
0x00000016- 0x00000032 |
Reserved |
0x00000033 | Invalid number of destinations |
0x00000034 | Invalid Distribution List name |
0x00000035- 0x0000003F |
Reserved |
0x00000040 | Destination flag is invalid (submit_multi) |
0x00000041 | Reserved |
0x00000042 | Invalid ‘submit with replace’ request (e.g. submit_sm with replace_if_present_flag set) |
0x00000043 | Invalid esm_class field data |
0x00000044 | Cannot Submit to Distribution List |
0x00000045 | submit_sm or submit_multi failed |
0x00000046- 0x00000047 |
Reserved |
0x00000048 | Invalid Source address TON |
0x00000049 | Invalid Source address NPI |
0x00000050 | Invalid Destination address TON |
0x00000051 | Invalid Destination address NPI |
0x00000052 | Reserved |
0x00000053 | Invalid system_type field |
0x00000054 | Invalid replace_if_present flag |
0x00000055 | Invalid number of messages |
0x00000056- 0x00000057 |
Reserved |
0x00000058 | Throttling error (ESME has exceeded allowed message limits) |
0x00000059- 0x00000060 |
Reserved |
0x00000061 | Invalid Scheduled Delivery Time |
0x00000062 | Invalid message validity period (Expiry time) |
0x00000063 | Predefined Message Invalid or Not Found |
0x00000064 | ESME Receiver Temporary App Error Code |
0x00000065 | ESME Receiver Permanent App Error Code |
0x00000066 | ESME Receiver Reject Message Error Code |
0x00000067 | query_sm request failed |
0x00000068- 0x000000BF |
Reserved |
0x000000C0 | Error in the optional part of the PDU Body |
0x000000C1 | Optional Parameter not allowed |
0x000000C2 | Invalid Parameter Length. |
0x000000C3 | Expected Optional Parameter missing |
0x000000C4 | Invalid Optional Parameter Value |
0x000000C5- 0x000000FD |
Reserved |
0x000000FE | Delivery Failure (used for data_sm_resp) |
0x000000FF | Unknown Error |
0x00000100- 0x000003FF |
Reserved for SMPP extension |
0x00000400- 0x000004FF |
Reserved for SMSC vendor specific errors |
0x00000500- 0xFFFFFFFF |
Reserved |
Message State
Message State as defined in [SMPP] (5.2.28).
Value | Description |
---|---|
1 | The message is in «en route» state |
2 | Message is delivered to destination |
3 | Message validity period has expired |
4 | Message has been deleted |
5 | Message is undeliverable |
6 | Message is in accepted state (e.g. has been manually read on behalf of the subscriber by customer service) |
7 | Message is in invalid state |
8 | Message is in a rejected state |
Network Error Code
Network Error Code as defined in [SMPP] (5.3.2.31).
The Network Error Code parameter is used to indicate the actual network error code for a delivery failure. The network
error code is technology specific. It’s a 3 Octet String which consists of 2 sub fields: Network Type (1 Integer) and
Error Code (2 Integer). The first octet indicates the network type. The following values are defined: 1 = ANSI-136, 2
= IS-95, 3 = GSM, 4 = Reserved. All other values reserved. The remaining two octets specify the actual network error
code appropriate to the network type.
smpp-errors
SMPP message state and error codes
Message State
The following is a list of allowable states for a short message. The MC returns the
message_state value to the ESME as part of the query_sm_resp or
query_broadcast_sm_resp PDU.
Intermediate states are states that can change. Final states are states that represent an end
of life state for a message.
For example, a message in retry may return an ENROUTE state. At some point in the future,
this message will either expire or be delivered. The state will then progress to EXPIRED or
DELIVERED. Thus a message in ENROUTE state is said to be in an intermediate state.
A message in DELIVERED or EXPIRED state cannot progress to another state. These states
are therefore final states.
State | Value | Type | Description |
---|---|---|---|
SCHEDULED | 0 | Intermediate | The message is scheduled. Delivery has not yet been initiated. A message submitted with a scheduled delivery time may return this state when queried. |
ENROUTE | 1 | Intermediate | The message is in enroute state. This is a general state used to describe a message as being active within the MC. The message may be in retry or dispatched to a mobile network for delivery to the mobile. |
DELIVERED | 2 | Final | Message is delivered to destination. The message has been delivered to the destination. No further deliveries will occur. |
EXPIRED | 3 | Final | Message validity period has expired. The message has failed to be delivered within its validity period and/or retry period. No further delivery attempts will be made. |
DELETED | 4 | Final | Message has been deleted. The message has been cancelled or deleted from the MC. No further delivery attempts will take place. |
UNDELIVERABLE | 5 | Final | Message is undeliverable. The message has encountered a delivery error and is deemed permanently undeliverable. No further delivery attempts will be made.Certain network or MC internal errors result in the permanent non-delivery of a message. Examples of such errors would be an unknown subscriber or network error that indicated that the given destination mobile was denied SMS service or could not support SMS. |
ACCEPTED | 6 | Final | Message is in accepted state (i.e. has been manually read on behalf of the subscriber by customer service). This state is used to depict intervention on the MC side. Sometimes a malformed message can cause a mobile to power-off or experience problems. The result is that all messages to that mobile may remain queued until the problem message is removed or expires. In certain circumstances, a mobile network support service or administrator may manually accept a message to prevent further deliveries and allow other queued messages to be delivered. |
UNKNOWN | 7 | N/A | Message is in invalid state. The message state is unknown. This may be due to some internal MC problem which may be intermediate or a permanent. This state should never be returned. A MC experiencing difficulties that prevents it from returning a message state, would use this state. |
REJECTED | 8 | Final | Message is in a rejected state. The message has been rejected by a delivery interface. The reasons for this rejection are vendor and network specific. No further delivery attempts will be made. |
SKIPPED | 9 | Final | The message was accepted but not transmitted or broadcast on the network. A skipped message is one that was deliberately ignored according to vendor or network-specific rules. No further delivery attempts will be made. |
Error Code
The error code for a delivery failure will be included in the network_error_code field of the deliver_sm PDU when
available.
The network_error_code is encoded according to SMPP specification where the network type is the first octet
(always 7 => SMPP Error) and the error code is an integer with 2 octets.
All SMPP error codes may be returned. In addition, the following MC Vendor specific errors are defined.
Addition error codes in the range 0x400-0x4FF may be added at any time.
Error Code | Value | Description |
---|---|---|
DESTINATION_UNKNOWN | 0x401 | Invalid or unknown destination address. |
NO_ROUTE_TO_DESTINATION | 0x402 | No route to the destination address. For example, some destination addresses are assigned to carriers that are no longer operating (MTU, Phonero) |
SMS_NOT_SUPPORTED | 0x403 | The terminal does not support SMS. |
TERMINAL_NOT_AVAILABLE | 0x404 | The terminal is not available. |
TERMINAL_MEMORY_FULL | 0x405 | The memory on the terminal is full. |
BLACKLISTED | 0x406 | The destination address has been blacklisted by the carrier. |
MESSAGE_CONTENT_INVALID | 0x407 | The content of the message was invalid. |
BLOCKED_PAYMENT_MISSING | 0x408 | Blocked due to missing payment by the subscriber. |
The SMPP error status codes are returned by an SMPP server (SMSC) when an SMS cannot be sent.
The SMSC will also set one of these error status codes when a command or PDU is invalid.
This list of error status codes is from the SMPP 3.4 specification.
The range from 0x00000100 to 0x000003FF (256 to 1023) is reserved for SMPP extensions.
The range from 0x00000400 to 0x000004FF (1023 to 1279) is reserved for SMSC vendor specific errors.
Error code | Value | Decimal | Description |
ESME_ROK | 0x00000000 | 0 | No Error |
ESME_RINVMSGLEN | 0x00000001 | 1 | Message Length is invalid |
ESME_RINVCMDLEN | 0x00000002 | 2 | Command Length is invalid |
ESME_RINVCMDID | 0x00000003 | 3 | Invalid Command ID |
ESME_RINVBNDSTS | 0x00000004 | 4 | Incorrect BIND Status for given command |
ESME_RALYBND | 0x00000005 | 5 | ESME Already in Bound State |
ESME_RINVPRTFLG | 0x00000006 | 6 | Invalid Priority Flag |
ESME_RINVREGDLVFLG | 0x00000007 | 7 | Invalid Registered Delivery Flag |
ESME_RSYSERR | 0x00000008 | 8 | System Error |
ESME_RINVSRCADR | 0x0000000A | 10 | Invalid Source Address |
ESME_RINVDSTADR | 0x0000000B | 11 | Invalid Destination Address |
ESME_RINVMSGID | 0x0000000C | 12 | Message ID is invalid |
ESME_RBINDFAIL | 0x0000000D | 13 | Bind Failed |
ESME_RINVPASWD | 0x0000000E | 14 | Invalid Password |
ESME_RINVSYSID | 0x0000000F | 15 | Invalid System ID |
ESME_RCANCELFAIL | 0x00000011 | 17 | Cancel SM Failed |
ESME_RREPLACEFAIL | 0x00000013 | 19 | Replace SM Failed |
ESME_RMSGQFUL | 0x00000014 | 20 | Message Queue Full |
ESME_RINVSERTYP | 0x00000015 | 21 | Invalid Service Type |
ESME_RINVNUMDESTS | 0x00000033 | 51 | Invalid number of destinations |
ESME_RINVDLNAME | 0x00000034 | 52 | Invalid Distribution List name |
ESME_RINVDESTFLAG | 0x00000040 | 64 | Destination flag is invalid (submit_multi) |
ESME_RINVSUBREP | 0x00000042 | 66 | Invalid ‘submit with replace’ request (i.e. submit_sm withreplace_if_present_flag set) |
ESME_RINVESMCLASS | 0x00000043 | 67 | Invalid esm_class field data |
ESME_RCNTSUBDL | 0x00000044 | 68 | Cannot Submit to Distribution List |
ESME_RSUBMITFAIL | 0x00000045 | 69 | submit_sm or submit_multi failed |
ESME_RINVSRCTON | 0x00000048 | 72 | Invalid Source address TON |
ESME_RINVSRCNPI | 0x00000049 | 73 | Invalid Source address NPI |
ESME_RINVDSTTON | 0x00000050 | 80 | Invalid Destination address TON |
ESME_RINVDSTNPI | 0x00000051 | 81 | Invalid Destination address NPI |
ESME_RINVSYSTYP | 0x00000053 | 83 | Invalid system_type field |
ESME_RINVREPFLAG | 0x00000054 | 84 | Invalid replace_if_present flag |
ESME_RINVNUMMSGS | 0x00000055 | 85 | Invalid number of messages |
ESME_RTHROTTLED | 0x00000058 | 88 | Throttling error (ESME has exceeded allowed message limits) |
ESME_RINVSCHED | 0x00000061 | 97 | Invalid Scheduled Delivery Time |
ESME_RINVEXPIRY | 0x00000062 | 98 | Invalid message validity period (Expiry time) |
ESME_RINVDFTMSGID | 0x00000063 | 99 | Predefined Message Invalid or Not Found |
ESME_RX_T_APPN | 0x00000064 | 100 | ESME Receiver Temporary App Error Code |
ESME_RX_P_APPN | 0x00000065 | 101 | ESME Receiver Permanent App Error Code |
ESME_RX_R_APPN | 0x00000066 | 102 | ESME Receiver Reject Message Error Code |
ESME_RQUERYFAIL | 0x00000067 | 103 | query_sm request failed |
ESME_RINVOPTPARSTREAM | 0x000000C0 | 192 | Error in the optional part of the PDUBody. |
ESME_ROPTPARNOTALLWD | 0x000000C1 | 193 | Optional Parameter not allowed |
ESME_RINVPARLEN | 0x000000C2 | 194 | Invalid Parameter Length. |
ESME_RMISSINGOPTPARAM | 0x000000C3 | 195 | Expected Optional Parameter missing |
ESME_RINVOPTPARAMVAL | 0x000000C4 | 196 | Invalid Optional Parameter Value |
ESME_RDELIVERYFAILURE | 0x000000FE | 254 | Delivery Failure (used fordata_sm_resp) |
ESME_RUNKNOWNERR | 0x000000FF | 255 | Unknown Error |