What Is SMPP?
SMPP is the protocol behind almost every high-volume SMS connection between businesses, aggregators and mobile operators. This guide explains how a session works, from bind to delivery receipt.
Short answer
SMPP (Short Message Peer-to-Peer) is an open protocol for exchanging SMS between an external short message entity (ESME), such as an application or aggregator, and a short message service centre (SMSC) or SMS gateway, over TCP/IP. The client opens a long-lived session called a bind, submits messages with submit_sm, and receives delivery receipts and inbound messages with deliver_sm. Version 3.4 is the one most widely used.
The two sides: ESME and SMSC
An ESME (external short message entity) is any system outside the mobile network that sends or receives SMS: a bank's notification platform, a CPaaS provider, an aggregator. An SMSC (short message service centre) is the network element that stores and forwards SMS to handsets. SMPP defines how the two talk; the same protocol is also used between aggregators, with one acting as the server.
Binds
A session starts with a bind request carrying a system ID and password. There are three bind types:
| Bind | The ESME can |
|---|---|
bind_transmitter | Send messages only |
bind_receiver | Receive messages and delivery receipts only |
bind_transceiver | Both, on one session |
The session stays open. Both sides send enquire_link periodically to confirm the other is alive, and close it with unbind.
Sending a message: submit_sm
Each message is a submit_sm PDU containing, among other fields, the source address (sender ID), destination address, data coding and the message text. The SMSC answers with submit_sm_resp, which carries a status code and a message ID. A zero status means the message was accepted, not that it was delivered.
Delivery receipts: deliver_sm
If the sender set registered_delivery, the SMSC later sends a delivery receipt as a deliver_sm on a receiver or transceiver bind. It references the original message ID and reports a final state such as DELIVRD (delivered), UNDELIV (undeliverable), EXPIRED or REJECTD.
Throughput and windowing
Throughput is usually expressed in messages per second (often called TPS) and limited per account. The window is how many requests a client may send before it must wait for responses. Sending faster than agreed returns a throttling error (ESME_RTHROTTLED); a well-behaved client slows down instead of reconnecting.
Common error codes
| Code | Meaning |
|---|---|
ESME_RINVPASWD | Invalid password at bind |
ESME_RALYBND | Already bound |
ESME_RINVSRCADR | Invalid source address (sender ID) |
ESME_RINVDSTADR | Invalid destination address |
ESME_RTHROTTLED | Sending faster than allowed |
ESME_RMSGQFUL | Message queue full |
SMPP and security
SMPP was designed for trusted links. Credentials travel in the bind, and the protocol has no built-in checks on sender ID or content. That is why providers restrict binds by IP address, set per-account limits and add policy layers such as an SMPP firewall, and why connections over the public internet should be encrypted with TLS or a VPN.
Connecting to Wise Network over SMPP
See SMPP connectivity for our supported binds, throughput and onboarding steps.
Related
Talk to our carrier team
Tell us which destinations, volumes or networks you are working with. A member of our team will reply by email.
- Email: sales@wisenetwork.co
- Phone: +961 3 085 999