New guide: how to register your sender ID and templates for India (DLT). Read now →
Log in
Telnxo
DevelopersUpdated 29 Oct 2026

What is SMPP? The SMS protocol explained with binds, PDUs and examples

SMPP is the persistent-connection protocol that carries most of the world's SMS between providers and operators. Here is how a session works, what the main messages mean and when it beats a REST API.

CW
Written by Chen Wei Lim
APAC Operations Manager
  • Published28 Oct 2026
  • Read time6 min
  • Length1,320 words
Share this page

What is SMPP?

SMPP, short for Short Message Peer-to-Peer, is a protocol for exchanging SMS between two systems over a long-lived TCP connection. It was designed for the link between a business or aggregator and the short message centre, or SMSC, of a mobile operator. If a message crosses between telecom companies, there is a good chance SMPP carried part of the journey.

Most developers never need to speak it directly, because a REST interface hides it. But when volumes grow, when you connect software that already uses it, or when you want to understand a delivery problem at the lowest level, knowing how SMPP works is useful. This guide covers sessions, the main messages, throughput controls and the practical choice between SMPP and an API. If you want the simpler route first, read what an SMS API is.

How an SMPP session works

An SMPP sessionA system binds to the provider, submits messages, receives delivery receipts and keeps the link alive.Your system (ESME)Provider (SMSC)bind_transceiverbind_transceiver_respsubmit_sm (message)submit_sm_resp (message id)deliver_sm (delivery receipt)enquire_link (keep-alive)One connection stays open; messages stream both ways.
Figure 1. A session starts with a bind, then messages and receipts flow over the same open connection while keep-alives hold it up.

Unlike HTTP, where each request opens and closes, SMPP keeps one connection open. Your system is called the ESME, an external short messaging entity. It connects to the provider's SMSC and exchanges small binary packets called PDUs. The specification is published as the SMPP protocol specification, and the background is summarised on Wikipedia.

  1. Connect and bind. Open TCP, then send a bind PDU with your system ID and password. The provider answers success or an error.
  2. Submit messages. Send submit_sm PDUs. Each gets a submit_sm_resp that carries the provider's message id.
  3. Receive receipts and replies. The provider sends deliver_sm PDUs for delivery receipts and for messages coming from handsets. You acknowledge each one.
  4. Stay alive. Send enquire_link at intervals. If answers stop, treat the session as dead and reconnect.
  5. Unbind cleanly. Send unbind before disconnecting so in-flight messages are accounted for.

The main SMPP messages

PDUDirectionWhat it does
bind_transmitter / receiver / transceiverYou to providerAuthenticates and sets your role
submit_smYou to providerSends one message, or one part of a long message
submit_sm_respProvider to youAccepts or rejects it and returns a message id
deliver_smProvider to youDelivers a receipt or an incoming message
deliver_sm_respYou to providerAcknowledges what you received
enquire_linkEither wayKeep-alive check
unbindEither wayEnds the session

Every PDU carries a command id and a sequence number. You match each response to its request by that number, which is how a single connection can have many messages in flight at once.

Bind types

TransmitterReceiverTransceiver
Can sendYesNoYes
Can receiveNoYesYes
Connections neededOne for sendingOne for receivingOne for both
Typical useSend-only systemsInbound-only systemsMost applications

Prefer the transceiver bind. One connection to monitor is simpler than two. Use separate binds only when your software needs to scale sending and receiving independently.

Throughput: windows, TPS and long messages

SMPP is fast because you do not wait for each response before sending the next message. The window size is the number of unanswered submit_sm PDUs you may have outstanding. A window of one is slow, because you send, wait and repeat. A window of fifty lets you keep the pipe full. Your provider also sets a rate limit in messages per second, and exceeding it brings throttling errors. See our SMPP documentation and limits for the values on your account.

Long messages need extra care. A message over 160 characters in the standard alphabet is split into segments, each carrying a header so the handset can reassemble them. The cost and the count of segments depend on the encoding, which is why we cover it in our guide to segments, encoding and cost. In SMPP you either send each segment yourself or use the message payload field and let the provider split it, depending on what the provider supports.

A conceptual session in text

-> bind_transceiver     system_id=acme  password=****   seq=1
<- bind_transceiver_resp status=OK                        seq=1
-> submit_sm            from=TELNXO to=919812345678 text=...  seq=2
<- submit_sm_resp       status=OK  message_id=8f3a2c      seq=2
<- deliver_sm           receipt for 8f3a2c: DELIVRD       seq=7
-> deliver_sm_resp      status=OK                         seq=7
-> enquire_link                                           seq=8
<- enquire_link_resp                                      seq=8

This is a simplified view for learning; a real library builds the binary packets for you. Popular open-source clients exist in most languages, and the SDK list points to supported options.

SMPP vs REST API

SMPPREST API
ConnectionPersistent TCPRequest per message over HTTPS
Set-up effortHigher: sessions, windows, reconnectsLow: one authenticated call
ThroughputHighest, sustainedHigh, with batching
Delivery receiptsdeliver_sm on the same linkWebhook
FirewallingAllow-listed IPs and a portStandard HTTPS
Best forLarge, steady volumes and legacy softwareMost applications and quick starts

A good rule is to start with REST and move to SMPP when a number proves you need it, such as a sustained rate your REST client cannot reach, or a vendor product that supports only SMPP. Our SMS gateway guide explains where the protocol sits in the wider path, and the SMS product page lists connection options.

Operating an SMPP connection reliably

  • Reconnect with backoff. If the link drops, wait a little, then try again, doubling the delay up to a limit.
  • Use enquire_link. It is the only way to notice a half-dead connection that still looks open.
  • Respect the window. Never exceed the agreed number of unanswered messages or the rate limit.
  • Persist before you send. Save each message with its sequence number and the returned id so a crash does not lose track of it.
  • Use TLS and IP allow-lists. The protocol itself sends credentials in a simple form, so protect the transport.
  • Match receipts carefully. A receipt references the provider's message id; store it when you get the submit response.

Receipts can be missing or late on some routes. Our notes on delivery reports and why an SMS is not delivered explain what to expect.

Common SMPP errors and what they mean

SymptomLikely causeWhat to do
Bind fails with an authentication errorWrong system ID, password or source IPCheck credentials and the IP allow-list
Throttled responses on submitSending faster than the rate limitSlow down and respect the agreed messages per second
Invalid destination or source addressNumber format or sender not allowedUse international format and a registered sender
Session drops every few minutesNo keep-alive or an idle timeoutSend enquire_link on a regular timer
Receipts never arriveReceiver role not bound, or the route sends noneUse a transceiver bind and ask the provider about receipt support
Garbled charactersWrong data codingChoose the right encoding for GSM, Latin or Unicode text

Security and testing

SMPP was designed in a period when networks were more trusted than they are today, so the protocol itself offers little protection. Credentials travel in the bind PDU, and messages are not encrypted unless you wrap the connection. In practice that means running SMPP over TLS where your provider supports it, restricting the connection to known IP addresses, rotating the password and giving each system its own account so you can revoke one without stopping the rest.

Test in stages. Begin with a single message to your own phone and look at each PDU in your client log. Then send a small batch to see how receipts arrive and whether the sequence numbers match. Finally, run a load test at the rate you expect, watching for throttling and for the window filling up. A test that includes a forced disconnect shows whether your reconnect logic really works, which is the part that usually fails first in production.

1long-lived TCP connection per bind
3.4the most widely used version
PDUone SMPP message with a sequence number
3bind types: transmitter, receiver, transceiver

SMPP is not harder than HTTP, only different: you manage a connection instead of a call.

Need an SMPP connection? We provide SMPP and REST access with the same routes and delivery reports.

Request SMPP details

Frequently asked questions

What is SMPP?

SMPP stands for Short Message Peer-to-Peer. It is a protocol that lets software exchange SMS with a message centre over a persistent TCP connection, and it is the standard way providers connect to mobile operators.

What is the difference between SMPP and an HTTP API?

An HTTP API sends one request per message and is simple to integrate. SMPP keeps one connection open and streams many messages with acknowledgements, which makes it faster for very high volumes but more work to run.

What is an SMPP bind?

A bind is the first message in a session. It authenticates your system and sets its role as transmitter, receiver or transceiver. Nothing can be sent until the bind succeeds.

What is a PDU in SMPP?

A PDU, or protocol data unit, is a single SMPP message such as bind, submit_sm or deliver_sm. Each has a header with a command and a sequence number so responses can be matched to requests.

What is the SMPP window size?

The window is the number of messages you may have in flight without having received a response. A larger window increases throughput, but your provider sets a maximum to protect its systems.

Which SMPP version is used most?

Version 3.4 is the most widely deployed. Version 5.0 exists but sees little use in practice.

When should I use SMPP instead of REST?

Use SMPP when you send at a sustained high rate, need the lowest overhead or must connect existing software that speaks SMPP. For most applications a REST API is easier and fast enough.

Topics#smpp#sms protocol#developers#throughput#sms gateway

Start messaging in minutes.

Create an account, register your sender and send your first SMS or WhatsApp message.

Get started Talk to sales