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.

hostnamePortTLS Port

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.

system_idusername – will be made available to you
passwordPassword – will be provided to you
system_typeIs ignored
addr_tonIs ignored
addr_npiIs ignored
address_rangeIs 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 .........

idThe ID of the message that was assigned by our server
subThe number of originally sent SMS
dlvrdThe number of delivered SMS
submit dateDate and time of the original SMS sending
done dateDate and time of the final status report
statFinal status report of the SMS. See table below.
errThis may contain a network-specific error code or an SMSC error code.
textThe 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

DELIVRDmessage has been delivered to destination
ACCEPTDmessage was accepted by SMSC
EXPIREDValidity period of the SMS expired
DELETEDmessage was deleted
UNDELIVmessage could not be delivered
UNKNOWNStatus of the SMS unknown
REJECTDmessage was rejected

Error codes

DecHexError codeDescription
00x000000ESME_ROKOk – Message accepted
10x000001ESME_RINVMSGLENInvalid message length
20x000002ESME_RINVCMDLENInvalid Command Length
30x000003ESME_RINVCMDIDInvalid Command ID
40x000004ESME_RINVBNDSTSInvalid bind Status
50x000005ESME_RALYBNDbinding experiment, if already bound
60x000006ESME_RINVPRTFLGInvalid priority labeling
70x000007ESME_RINVREGDLVFLGInvalid registered-delivery flag
80x000008ESME_RSYSERRSMSC system error
100x00000aESME_RINVSRCADRInvalid source address
110x00000bESME_RINVDSTADRInvalid destination address
120x00000cESME_RINVMSGIDInvalid message-id
130x00000dESME_RBINDFAILGeneral bind error
140x00000eESME_RINVPASWDInvalid password
150x00000fESME_RINVSYSIDInvalid system ID
170x0000011ESME_RCANCELFAILabort error
190x0000013ESME_RREPLACEFAILReplace Error
200x000000014ESME_RMSGQFULToo many messages in the queue
220x0000016ESME_RINVSERTYPInvalid Services Type
510x0000033ESME_RINVNUMDESTSInvalid destination address number
520x0000034ESME_RINVDLNAMEInvalid name
640x0000040ESME_RINVDESTFLAGInvalid Destination Flag Option
660x0000042ESME_RINVSUBREPInvalid value for submit with replace option
670x0000043ESME_RINVESMCLASSInvalid value for the esm_class field
680x0000044ESME_RCNTSUBDLCannot send to a distribution list
690x0000045ESME_RSUBMITFAILGeneral transmission error
720x0000048ESME_RINVSRCTONInvalid type of source number
730x0000049ESME_RINVSRCNPIInvalid flag for the source numbering plan
740x000004aESME_RINVDSTTONInvalid type of number for the target
750x000004bESME_RINVDSTNPIInvalid flag for the destination address numbering plan
770x000004dESME_RINVSYSTYPInvalid esm Type
780x000004eESME_RINVREPFLAGInvalid submit with replace flag Option
850x0000055ESME_RINVNUMMSGSInvalid number of messages
880x0000058ESME_RtdROTTLEDSMSC throttles incoming messages
980x000000062ESME_RINVEXPIRYInvalid validity date
1030x000000067ESME_RQUERYFAILquery_sm Request failed
1940x00000c2ESME_RINVPARLENInvalid parameter length
1950x00000c3ESME_RMISSINGOPTPARAMMissing optional parameters
1960x00000c4ESME_RINVOPTPARAMVALInvalid optional parameter value
2540x00000feESME_RDELIVERYFAILUREGeneric infeed error
2550x00000ffESME_RUNKNOWNERRUnknown error

Specific error codes

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

DecHexError codeDescription
10350x0000040bESME_RINVBALANCECredit not sufficient to send the SMS
Was this article helpful to you? Yes No