Sponsored by
Melrose Labs


SMPP Protocol: Enabling SMS messaging between applications and mobiles.

Mobile Terminated (MT) SMS with delivery receipt using SMPP
Mobile Terminated (MT) SMS with delivery receipt using SMPP

The SMPP (Short Message Peer-to-Peer) protocol is an open, industry standard protocol designed to provide a flexible data communications interface for the transfer of short message data between External Short Message Entities (ESME), Routing Entities (RE) and Message Centres (MC). It is a means by which applications can send and receive SMS messages to and from mobile devices. Applications do this using an SMPP connection to a Short Message Service Center (SMSC), SMS gateway, SMPP gateway or hub.


  • SMPP Testing & Development
  • Testing - SMSC simulator, tools (load test, analyser, SMPP client), gateways, packet capture
  • Development - libraries for C++, C#, Go, Java, Node.js, Perl, PHP, Python, Ruby, Rust; tutorials; SMS code bench

SMPP Specifications

There are three versions of the SMPP protocol specification in use. The original public version of the specification is SMPP v3.3 and was released in 1997. This was updated in 1999 to SMPP v3.4. The final version was released in 2003 and is SMPP v5.

SMPP v3.3

SMPP 3.3: Short Message Peer to Peer Protocol Specification v3.3

SMPP v3.4

SMPP 3.4: Short Message Peer to Peer Protocol Specification v3.4, 12-Oct-1999, Issue 1.2


SMPP 5: Short Message Peer to Peer Protocol Specification v5

SMPP Protocol Overview

What is SMPP?

The SMPP (Short Message Peer-to-Peer) protocol is an open, industry standard protocol designed to provide a flexible data communications interface for the transfer of short message data between External Short Message Entities (ESME), Routing Entities (RE) and Message Centres (MC). It is a means by which applications (termed ESMEs) can send SMS messages to mobile devices and receive SMS from mobile devices.

It can also be used as an API for use with USSD, CBC and other mobile services.

Supported Cellular Technologies

SMPP is designed to support short messaging functionality for any cellular technology and has specific applications and features for technologies such as: GSM, UMTS, LTE, IS-95 (CDMA), CDMA2000 (1xRTT & 3xRTT), ANSI-136 (TDMA), iDEN

Typical Applications of SMPP

The variety of messaging applications, particularly using SMS, for which SMPP can be employed is almost boundless. Mobile Operators, Message Centre vendors, Infrastructure Providers, and application developers are continually developing new applications for SMS. SMPP is ideal as an access protocol for these applications. The following summarises typical applications of SMPP:

  • Marketing. Businesses send promotions to customers as text messages.
  • Booking confirmations. Hotels, restaurants, taxis. Confirmations via SMS are better than email when it comes to immediate notification.
  • Appointment reminders. Used by businesses to remind customers of appointments and avoid the financial impact and/or impact on customer of a missed appointment.
  • Two-factor authentication / OTP. Using SMS to send a code that is used as a second factor to verify the identity of an individual. Used for logins.
  • Voicemail alerts originating from a VPS (Voice Processing System), indicating voice messages at a customer’s mailbox. This is arguably one of the first ESME-based applications of SMS and is still heavily used in the industry.
  • Numeric and alphanumeric paging services. With an SMS-capable phone, the need to carry both pager and phone is drastically reduced.
  • Information services. For example, an application that enables mobile subscribers to query currency rates or share-price information from a database or the WWW and have it displayed as a short message on the handsets.
  • Voice-to-text. Calls directly dialled or diverted to a message-bureau operator, who forwards the message to the MC, for onward delivery to a subscriber’s handset.
  • Directory services. For example a subscriber calls a directory service requesting information on restaurants in a given area. The operator lists out available restaurants and sends the appropriate information as an SMS to the caller.
  • Location-based services. These include applications that use mobile hardware to send GPS or cell data across SMS and using an MC, relay these messages to an ESME. The ESME may then use the collected data to manage services such as taxi assignment, stolen vehicle tracking and logistics control.
  • Telemetry applications. For example, a household meter that transmits a short message to a utility company’s billing system to automatically record customer usage.
  • Security applications. Such as alarm systems that can use SMS services for remote access and alerting purposes. For example, a parent receives an SMS from his security company to inform him that his daughter has arrived home and keyed in her access code.
  • WAP Proxy Server. A WAP Proxy Server acts as the WAP gateway for wireless Internet applications. A WAP Proxy Server may select an SMS or USSD bearer for sending WDP datagrams to and receiving WDP datagrams from a mobile station.
  • Online Banking, Share Dealing and E-Commerce. A mobile user could use SMS to send messages to an ESME requesting the purchase of products, shares etc. Likewise, a subscriber may use SMS to access banking services such as bill payment and funds transfer.
  • Gaming and SMS Chat. Mobile users can interact with each other by means of a central server (ESME) and use this interaction as a means of playing wireless games, dating or SMS chat services similar to the concept of instant messaging and Internet room. These services have already appeared in the form of SMS-TV and SMS-Radio services.
  • MMS Notification. In Multimedia Messaging, SMS is a bearer for the Multimedia Message Notification, which informs the recipient MMS user agent that a multimedia message is available on the Multimedia Message Centre.
  • Cell Broadcast Services. Applications designed to support geographical messaging such as traffic alerts and emergency services may use the Cell Broadcast features of SMPP to upload messages for periodic broadcast to subscribers within a given location.

SMPP Sessions

In order to make use of the SMPP Protocol, an SMPP session must be established between the ESME and Message Centre or SMPP Routing Entity where appropriate. The established session is based on an application layer TCP/IP connection between the ESME and MC/RE and is usually initiated by the ESME. The connection is often over the Internet and can use SMPP over TLS or a VPN to secure the connection. SMPP has been assigned TCP port 2775 by IANA, however other port numbers are often used.

There are three forms of ESME-initiated session:

Additionally, the Message Centre can establish an SMPP session by connecting to the ESME. This is referred to as an Outbind Session.

Protocol Operations and PDUs

The SMPP protocol is a set of operations, each one taking the form of a request and response Protocol Data Unit (PDU) containing an SMPP command. For example, if an ESME wishes to submit a short message, it may send a submit_sm PDU to the MC. The MC responds with a submit_sm_resp PDU, indicating the success or failure of the request. Likewise, if an MC wishes to deliver a message to an ESME, it may send a deliver_sm PDU to an ESME, which in turn responds with a deliver_sm_resp PDU as a means of acknowledging the delivery.

Example SMPP session
Example SMPP session

Some operations are specific to an ESME with others specific to the MC. Others may be specific to a given session type. Referring to the submit_sm and deliver_sm examples above, an ESME may send a submit_sm to an MC only if it has established a TX or TRX session with that Message Centre. Likewise, an MC may send deliver_sm PDUs only to ESMEs that have established RX or TRX sessions.

Operations are broadly categorised into the following groups:

SMPP PDU Example: Send SMS (submit_sm / submit_sm_resp)

The following is an example submit_sm and submit_sm_resp.


PDU header
00000048Length72 bytes
00000004Command IDSUBMIT_SM
00000000Command Statusn/a
00000002Sequence Number2
PDU body
00Service Typenull (none specified)
05Source Address TONAlphanumeric
00Source Address NPINone / Unknown
4d656c726f73654c61627300Source AddressMelroseLabs
01Destination Address TONInternational
01Destination Address NPIISDN
34343737313233343536373800Destination Address447712345678
00ESM Class0
00Protocol ID0
00Priority Flag0
00Schedule Delivery TimeDeliver immediately
00Validity PeriodSMSC default validity
01Registered DeliverySMSC delivery receipt requested
00Replace If Present Flag0
00Data CodingDefault character set
00Short Message Default Msg ID0
10Short Message Length16 bytes
48656c6c6f20576f726c64201b650201Short MessageHello World €$£

Message is using Data Coding of 0 (i.e. the MC's default character set) which in this case is configured on the MC to be the GSM character set. Message encoding has following meaning:

Hello WorldSP $ £
48656c6c6f 20 576f726c64201b 650201


PDU header
00000051Length81 bytes
80000004Command IDSUBMIT_SM_RESP
00000000Command Statusn/a
00000002Sequence Number2
PDU body
30393537326130613039626337336632 65393065393338626336656138636132 64636630636434356234303938316534 36323966383430353535343765613331 00Message ID

SMPP Commands

The following is a list of all SMPP commands:

Command IDValuePurpose
bind_receiver0x00000001Establish a receiver bind.
bind_transmitter0x00000002Establish a transmitter bind.
query_sm0x00000003Query status of previously submitted message.
submit_sm0x00000004Submit message to the Message Center for onward delivery to mobile / short message entity (SME).
deliver_sm0x00000005Send message to ESME from MC (typically delivery receipt or mobile originated SMS).
unbind0x00000006Unbind from MC and close SMPP session.
replace_sm0x00000007Replace a previously submitted message that is pending delivery.
cancel_sm0x00000008Cancel delivery of previously submitted message(s).
bind_transceiver0x00000009Establish a transceiver bind.
outbind0x0000000BRequest ESME to bind (sent by MC).
enquire_link0x00000015Initiate a check to confirm ESME/MC is still reachable.
submit_multi0x00000021Submit message to the Message Center for onward delivery to multiple mobiles / short message entities (SME).
alert_notification0x00000102Indicate to ESME that mobile subscriber has become available.
data_sm0x00000103Submit packet to MC for onward delivery to SME or from MC to ESME.
broadcast_sm0x00000111Submit message to the Message Center for onward delivery to mobiles in a specified geographical area or set of areas.
query_broadcast_sm0x00000112Query status of previously submitted broadcast message.
cancel_broadcast_sm0x00000113Cancel delivery of previously submitted broadcast message.
generic_nack0x80000000Acknowledge unrecognized or corrupt PDU.
Reserved for MC vendors to define

This domain was acquired in June 2019 for the purpose of being a source of reference for the Short Message Peer-to-Peer (SMPP) protocol. The objective is to return this domain back to being the main reference for SMPP. The site includes the SMPP specifications, tools and other related resources.

This domain was originally the home of the SMPP Developers Forum / SMPP Forum that later became the now disbanded SMS Forum. This site has no association with any legal owner of the protocol or successor organisation.

Copyright © 2019-2024 SMPP.org