You are here: > Tutorials > SMPP Tutorials > Introduction to SMPP


SMPP stands for Short Message Peer to Peer Protocol

SMPP is used to send and receive messages from and to GSM, UMTS, iDEN,CDMA and TDMA cell phones.
The protocol is a level-7 TCP/IP protocol, which allows fast deliver of SMS messages.

Using the SMPP protocol instead of sending messages using a GSM modem has the following advantages:

  • The SMPP protocol is TCP/IP based, GSM hardware is not required;
  • Users can send SMS to a simple shortcode, this is not possible when sending to a GSM phone;
  • High throughput ( up to 200 msgs/second);
  • Alphanumeric sender address can be assigned.


SMPP can be used for the following applications:

  • Sending Voicemail alerts to mobile users;
  • Sending SMS notifications to mobile users, for instance when a server is down, or to notify students that a lesson is cancelled;
  • Information services : sending stock exchanges, traffic jam alerts or weather forecasts;
  • Voting, process votes from mobile users (Requesting music on the radio;
  • MMS notifications, when users pay for ringtones and Java applications, the download location is send by a MMS notification or WAP Push message;
  • Telemetry applications.


SMPP is used by clients to connected to a SMSC (Short Message Service Centre). In SMPP terms, the client is called ESME (Extended Short Message Entity). SMSC's can also exchange data using a SMPP connection.

Messages Send to a SMSC are called MT (Mobile Terminated) messages, because they are sent to a mobile phone. Messages received from a SMSC are called MO (Mobile Originated) messages, because they were sent from a mobile phone.

When an ESME establishes a connection using SMPP, this can be done in three modes: Transmitter, the ESME can only submit messages to the SMSC; Receiver, the ESME can only receive messages or delivery reports from the SMSC; Transceiver, the EMSE can bot send and receive messages to and from the SMSC.


The TCP packets between the ESME and the SMSC are called PDU's (Protocol Data Units). The following types of PDU's are used in SMPP connections:

Session Management PDU’s

Connecting, disconnection and connection keep alive.

Message Submission PDU’s

Submitting messages to a mobile phone.

Message Delivery PDU’s

Delivery of messages to the SMPP client.

Ancillary Operations PDU’s

Message query, cancel and replacement.

The following SMPP PDU's are used the most:

bind_transmitter / bind_receiver / bind_transceiver

Used to connect the client with the SMSC, in SMPP sessions a ‘system ID’ and password are used for authentication.


Used to submit a single message from the client to the SMSC ( MT ). This packet contains the sender and recipient address, message body and some optional parameters.


When a messages has to be delivered to the client this packet is used ( MO ). 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.


To query the state of a previously sent message, this command is used. You need a message reference to query a message. Most provider require you to use delivery reports instead of querying the messages all the time.


This packet is sent once in every x minutes to check if the connection is still alive. If not, the connection is terminated. This packet is also used to keep dial-up connections alive ( for instance ISDN ). The most used timeout for SMPP connections is one minute.


Used to end the session and disconnect the TCP/IP connection.

Connection examples

Sending Messages
Receiving Messages

SMPP optional parameters

To extend the SMPP protocol with extra parameters, TLV parameters, also called optional parameters were introduced in the SMPP protocol since version 3.4:

  • TLV’s are used to make the existing PDU’s more efficient;
  • TLV’s are used to enhance existing PDU’s with new features;
  • TLV Stands for Tag-Length-Value field;
  • TLV’s are supported in SMPP version 3.4 and higher.

Some commonly used TLV's are:

message_payload TLV

Used to encode large messages. The submit_sm PDU can be used to messages up to 255 chars only. This PDU improves performance, for instance: when you need to send a message containing 315 characters you only have to send one packet instead of two. This doubles the throughput.

sar_msg_ref_num, sar_segment_seqnum, sar_total_segments TLV’s

Segmentation And Reassembly. These TLV’s are used to send a long message in multiple parts.

sar_msg_ref_num - Reference of the concatenated message.
sar_segment_seqnum - ID of the current segment.
sar_total_segments - Total number of segments.

Please note that not all SMPP providers implement all TLV parameters.