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 |