1. Home
  2. Gateway
  3. SMPP Specifications

SMPP Specifications

The Short Message Peer to Peer Protocol (SMPP) is the de-facto standard for sending and receiving SMS messages for telecommunications operators, SMS aggregators and network operators to exchange SMS messages between Short Message Service Centers (SMSC) and/or External Short Messaging Entities (ESME). SMPP is a Level-7 TCP/IP protocol that enables SMS messages to be sent quickly.

The connection between the application and the sms77.io SMPP server is SMPP version 3.4 – versions 3.3 or 5.0 are not supported.

SMPP Version 3.4 Issue 1.2 Specifications

If you need SMPP access to our gateway, please write us a short message with your approximate monthly SMS volume and your IP or IP range from which you would like to connect to our SMPP server.

Host and Port

Each of our SMPP servers allows you the regular connection (plaintext) or a encrypted connection via TLS.

hostname Port TLS Port
smpp0.sms77.io 2775 2776

Assisted PDUs

The following Packet Data Units (PDU) are supported:t

  • bind_transmitter
  • bind_receiver
  • bind_transceiver
  • unbind
  • submit_sm
  • deliver_sm
  • enquire_link

Bind and throughput

Depending on the configuration of your SMPP access, multiple binds are possible. By default we allow maximum connection via 2 sessions and 5 SMS/s per session.

You have three possibilities to establish a connection via SMPP. In order to receive status reports, you must establish a Bind as transceiver or receiver.

  • transmitter – send short messages to the SMSC and receive replies from the SMSC
  • receiver – Receive status reports from the SMSC and return the corresponding responses
  • transceiver – Sending and receiving messages to and from the SMSC via a single SMPP session

Bind parameter

An SMPP bind_receiver, bind_transceiver, or bind_transmitter PDU request has a fixed set of fields. Some fields are irrelevant or are ignored by our server.

Parameter Description
system_id username – will be made available to you
password Password – will be provided to you
system_type Is ignored
interface_version 3.4
addr_ton Is ignored
addr_npi Is ignored
address_range Is ignored

Status reports

SMPP status reports are sent in the following format:

id:IIIIIIIIII sub:SSS dlvrd:DDD submit date:YYMMDDDhhmm done date:YYMMDDDhhmm stat:DDDDDDD err:E Text .........

Parameter Description
id The ID of the message that was assigned by our server
sub The number of originally sent SMS
dlvrd The number of delivered SMS
submit date Date and time of the original SMS sending
done date Date and time of the final status report
stat Final status report of the SMS. See table below.
err This may contain a network-specific error code or an SMSC error code.
text The first 20 characters of the short message

For load balancing purposes, status reports are not sent to the same bind that sent the SMS, but to the one that currently has the least traffic. Please keep this in mind when implementing status reports if you are using multiple bindings.

Status codes

DLR Description
DELIVRD message has been delivered to destination
ACCEPTD message was accepted by SMSC
EXPIRED Validity period of the SMS expired
DELETED message was deleted
UNDELIV message could not be delivered
UNKNOWN Status of the SMS unknown
REJECTD message was rejected

Error codes

Dec Hex Error code Description
0 0x000000 ESME_ROK Ok – Message accepted
1 0x000001 ESME_RINVMSGLEN Invalid message length
2 0x000002 ESME_RINVCMDLEN Invalid Command Length
3 0x000003 ESME_RINVCMDID Invalid Command ID
4 0x000004 ESME_RINVBNDSTS Invalid bind Status
5 0x000005 ESME_RALYBND binding experiment, if already bound
6 0x000006 ESME_RINVPRTFLG Invalid priority labeling
7 0x000007 ESME_RINVREGDLVFLG Invalid registered-delivery flag
8 0x000008 ESME_RSYSERR SMSC system error
10 0x00000a ESME_RINVSRCADR Invalid source address
11 0x00000b ESME_RINVDSTADR Invalid destination address
12 0x00000c ESME_RINVMSGID Invalid message-id
13 0x00000d ESME_RBINDFAIL General bind error
14 0x00000e ESME_RINVPASWD Invalid password
15 0x00000f ESME_RINVSYSID Invalid system ID
17 0x0000011 ESME_RCANCELFAIL abort error
19 0x0000013 ESME_RREPLACEFAIL Replace Error
20 0x000000014 ESME_RMSGQFUL Too many messages in the queue
22 0x0000016 ESME_RINVSERTYP Invalid Services Type
51 0x0000033 ESME_RINVNUMDESTS Invalid destination address number
52 0x0000034 ESME_RINVDLNAME Invalid name
64 0x0000040 ESME_RINVDESTFLAG Invalid Destination Flag Option
66 0x0000042 ESME_RINVSUBREP Invalid value for submit with replace option
67 0x0000043 ESME_RINVESMCLASS Invalid value for the esm_class field
68 0x0000044 ESME_RCNTSUBDL Cannot send to a distribution list
69 0x0000045 ESME_RSUBMITFAIL General transmission error
72 0x0000048 ESME_RINVSRCTON Invalid type of source number
73 0x0000049 ESME_RINVSRCNPI Invalid flag for the source numbering plan
74 0x000004a ESME_RINVDSTTON Invalid type of number for the target
75 0x000004b ESME_RINVDSTNPI Invalid flag for the destination address numbering plan
77 0x000004d ESME_RINVSYSTYP Invalid esm Type
78 0x000004e ESME_RINVREPFLAG Invalid submit with replace flag Option
85 0x0000055 ESME_RINVNUMMSGS Invalid number of messages
88 0x0000058 ESME_RtdROTTLED SMSC throttles incoming messages
98 0x000000062 ESME_RINVEXPIRY Invalid validity date
103 0x000000067 ESME_RQUERYFAIL query_sm Request failed
194 0x00000c2 ESME_RINVPARLEN Invalid parameter length
195 0x00000c3 ESME_RMISSINGOPTPARAM Missing optional parameters
196 0x00000c4 ESME_RINVOPTPARAMVAL Invalid optional parameter value
254 0x00000fe ESME_RDELIVERYFAILURE Generic infeed error
255 0x00000ff ESME_RUNKNOWNERR Unknown error

Specific error codes

In addition to the standardized SMPP error codes, we send our own specific error codes:

Dec Hex Error code Description
1035 0x0000040b ESME_RINVBALANCE Credit not sufficient to send the SMS