IMIconnect supports SMPP (Short Messaging Peer to Peer) apart from HTTP protocol. SMPP (Short Messaging Peer to Peer) protocol is an open, industry-standard protocol designed to provide a flexible data communication interface for the transfer of short message data between External Short Message Entities (ESME) (enterprises), Routing Entities (RE) (IMIconnect), and Short Message Service Center (SMSE) (telecom operators).

With an SMPP connection, the client is continuously connected to the imiconnect gateway. The SMPP protocol allows you to send large volumes of SMS messages in a short period of time as it provides a direct connection to IMIconnect messaging gateway.



Following are the prerequisites to use SMPP protocol:

IMIconnect accountAn active account on IMIconnect platform.
SMPP accountAn SMPP account must be created for a client on IMIconnect platform.
SMPP Protocol version 3.3 and 3.4A thorough understanding of the SMPP protocol is required.
SMPP clientYou must have SMPP client installed.
A number in IMIconnect (optional)A number must be purchased and configured in IMIconnect to receive MOs.

Get an SMPP account

You should contact the support team and request for an SMPP account. You may be asked to provide your account details. After successful creation of the SMPP account, you will be provided with a domain name, username, and password.

Send SMS using SMPP

To send an SMS using SMPP protocol, you must use the account details created for SMPP account.

The following PDUs (Protocol Data Units) are supported by the IMIconnect SMPP server:

PDUsDescription and Functionality
BIND_TRANSMITTERUsed to send only SMS (binary, unicode, and text format) messages.
BIND_TRANSMITTER_RESPUsed to provide an SMSC response to a BIND_TRANSMITTER request.
BIND_RECEIVERUsed to receive SMS messages. The delivery status of the SMS is also received using this account.
BIND_RECEIVER_RESPUsed to provide an SMSC response to a BIND_RECEIVER request.
BIND_TRANSCEIVERUsed to send and receive SMS messages.
BIND_TRANSCEIVER_RESPUsed to provide an SMSC response to a BIND_TRANSCEIVER request.
SUBMIT_SMUsed to submit a single message from the enterprise to the SMSC. This PDU contains the sender and recipient address and the message body.
SUBMIT_SM_RESPUsed to submit message response.
DELIVER_SMUsed to deliver messages to the client. It contains information about the sender of the message and the message body. This PDU is also used to send delivery reports to the ESME.
DELIVER_SM_RESPUsed to deliver the short message response.
ENQUIRE_LINKUsed to check if the connection is still alive once in every x minutes. If not, the connection is terminated. This PDU is also used to keep dial-up connections alive.
ENQUIRE_LINK_RESPUsed to enquire link response.

Concatenated Messages

In this method a long message is sent in parts as multiple short messages are then joined together on the mobile if the mobile supports long messages. Else each message part will be displayed as a separate message. In this method the client sends the UDH (User Data Header) as part of the short_message field.

On SMPP:submit_sm the UDHI (User Data Header Indicator) in the esm_class parameter must be set:

esm_class = 0x40

The concatenation UDH values are inserted at the start of the message body.

Message 1 (UDH+UD should not exceed 160 bytes):
short_message = 0x05 0x00 0x03 0x05 0x02 0x01 LG also announced its latest TVs would support four HDR formats - including Hybrid Log-Gamma jointly developed by the BBC and the Japanese broadcaster

Message 2 (UDH+rest of the message):
short_message = 0x05 0x00 0x03 0x05 0x02 0x02 NHK. This will allow sport and other live broadcasts to be shown in the format.

Concatenation UDH structure:

05Length of UDH (5 bytes)
00Indicator for concatenated message
03Subheader Length (3 bytes)
xxmessage identification - can be any hexadecimal number that matches with the UDH Reference Number of all concatenated SMS.
YYNumber of pieces of the concatenated message.
ZZSequence number (used by the mobile to concatenate the split messages)

The maximum number of characters per concatenated message depends on the encoding:

  • 67 characters for 16-bit encoding (Unicode)
  • 134 characters for 8-bit encoding (Binary)
  • 153 characters for 7-bit encoding (Example Latin-1/9 and GSM8)

Receive SMS through SMPP

The SMPP server will forward the inbound/reply (MO) messages sent to numbers allocated to your account via the active SMPP bind. To forward these messages, the SMPP server will issue the SMPP request.

Messages will only be forwarded over SMPP sessions with BIND_RECEIVER or BIND_TRANSCEIVER mode.

Follow these steps to receive SMS:

  1. From your IMIconnect account, purchase a number.
  2. Create a service and configure the purchased number in your service.
  3. Under the General settings of your service, configure INBOUND SETTINGS with the URL as smpp://.
  4. Click SAVE.

All the SMS messages coming to the purchased number will be forwarded to the SMPP client through SMPP server.

Receive DR

To receive a DR you should take BIND_TRANSCEIVER so that all DRs will be notified to the SMPP client through SMPP server.

id:1_14839433040000 sub:001 submit date:170100935 done date:170100940 stat:DELIVRD err:000 text:"Sending SMS through SMPP "

idThe message ID allocated to the message by the IMIconnect gateway when originally submitted.
subThe number of short messages originally submitted.
submit dateThe date and time at which the short message was submitted in YYMMDDhhmm.
done dateThe date and time at which the short message reached its final state in YYMMDDhhmm.
statThe final status of the message.
errThe SMPP error code.
textPart of the original text message.

Submission Failure Error Codes

IMIconnect SMPP server returns the following error codes on submission failure:

Error CodeError NameError Description
0x00000000ESME_ROKNo Error
0x00000001ESME_RINVMSGLENMessage Length is too long
0x00000002ESME_RINVCMDLENCommand length is invalid
0x00000003ESME_RINVCMDIDCommand ID is invalid or not supported
0x00000004ESME_RINVBNDSTSIncorrect bind status for given command
0x00000005ESME_RALYBNDESME Already in Bound State
0x00000006ESME_RINVPRTFLGInvalid Priority Flag
0x00000007ESME_RINVREGDLVFLGInvalid registered delivery flag
0x00000008ESME_RSYSERRSystem error
0x0000000AESME_RINVSRCADRInvalid source address
0x0000000BESME_RINVDSTADRInvalid destination address
0x0000000DESME_RBINDFAILBind failed
0x0000000EESME_RINVPASWDInvalid password
0x0000000FESME_RINVSYSIDInvalid System ID
0x00000014ESME_RMSSQFULMessage queue full
0x00000043ESME_RINVESMCLASSInvalid esm class field data
0x00000058ESME_RTHROTTLEDThrottling error (ESME has exceeded allowed message limits)
0x00000061ESME_RINVSCHEDInvalid scheduled delivery time
0x00000062ESME_RINVEXPIRYInvalid message validity period(Expiry time)
0x000000C0ESME_RINVTLVSTREAMError in the optional part of the PDU body
0x000000C2ESME_RINVTLVLENInvalid parameter length
0x000000FEESME_RDELIVERYFAILURETransaction delivery failure
0x000000FFESME_RUNKNOWNERRUnknown error

Delivery Report Error Codes

Following are the Delivery Report error codes returned by IMIconnect:

IMIconnect codeDescription
2Delivered to Network (final)
3Delivered to Network (Intermediate)
4Operator is Retrying Message
5Delivered to Phone
6Failed @ operator
10Formatting Error SMS too long
11Unknown Subscriber
12Insufficient Credit
13Subscriber Barred
14Incorrect Billing C2
15Invalid Originator
16Message Expired @ Gateway
17Invalid Expiry Value
18Duplicate Message
19Out of Credit. Billing system busy or prepay message already in pipe.
20Zero length data
21Binary too long
22Binary incorrect format
23Sim full
24Absent subscriber
25Error in delivery to operator
26Message expired @ operator
27Not defined - status unknown
99SMS delivery receipt timeout
101Multipart delivered to Network - Partial success
102Multipart Delivered to Network - Total Failure