SMPP specifications
The Short Message Peer to Peer Protocol (SMPP) is the de-facto standard for SMS sending and receiving for telecommunication 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 seven.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 an encrypted connection via TLS. If you need a tunneled connection via VPN, please contact us.
Hostname | Port | TLS Port |
---|---|---|
smpp0.seven.io | 2775 | 2776 |
Supported PDUs
The following Packet Data Units (PDU) are supported:
bind_transmitter
bind_receiver
bind_transceiver
unbind
submit_sm
deliver_sm
enquire_link
Bind and throughput
Depending on the configuration of your SMPP access, several binds are possible. By default, we allow a maximum connection of 2 sessions and 5 SMS/s per session.
You have three options for establishing a connection via SMPP. To be able to receive status reports, you must set up a bind as transceiver or receiver.
transmitter
- send short messages to the SMSC and receive replies from the SMSCreceiver
- receive status reports from the SMSC and return the corresponding repliestransceiver
- send and receive 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.
- Name
system_id
- Type
- string
- Description
Username - will be provided to you
- Name
password
- Type
- string
- Description
Password - will be provided to you
- Name
system_type
- Type
- string
- Description
Will be ignored
- Name
interface_version date
- Type
- timestamp
- Description
3.4
- Name
addr_ton
- Type
- timestamp
- Description
Will be ignored
- Name
addr_npi
- Type
- timestamp
- Description
Will be ignored
- Name
address_range
- Type
- string
- Description
Will be ignored
Status reports
SMPP status reports are sent in the following format:
- Name
id
- Type
- string
- Description
The ID of the message assigned by our server
- Name
sub
- Type
- string
- Description
The number of SMS originally sent
- Name
dlvrd
- Type
- string
- Description
The number of SMS delivered
- Name
submit date
- Type
- timestamp
- Description
Date and time when the SMS was originally sent
- Name
done date
- Type
- timestamp
- Description
Date and time of the final status report username.
- Name
stat
- Type
- string
- Description
Final status report of the SMS. See table below.
- Name
err
- Type
- integer
- Description
If necessary, this may contain a network-specific error code or an SMSC error code.
- Name
text
- Type
- timestamp
- Description
The first 20 characters of the short message
Example status report
id:c0296bc5-e4d2-4ed7-bcc9-9e9b502dd302
sub:001
dlvrd:001
submit date:221206094424
done date:22106094426
stat:DELIVRD
err:000
text:
Example status report
id:IIIIIIIIII sub:SSS dlvrd:DDD submit date:YYMMDDhhmm
done date:YYMMDDhhmm stat:DDDDDDD err:E text:
Status codes
DLR | Description |
---|---|
DELIVRD | Message has been delivered to destination |
ACCEPTD | Message accepted by SMSC |
EXPIRED | SMS validity period expired |
DELETED | Message has been deleted |
UNDELIV | Message could not be delivered |
UNKNOWN | Status of 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 | Bind attempt if already bound |
6 | 0x000006 | ESME_RINVPRTFLG | Invalid priority flag |
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 | 0x0000014 | 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 who for submit with replace option |
67 | 0x0000043 | ESME_RINVESMCLASS | Invalid value for 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 numbering plan of the source |
74 | 0x000004a | ESME_RINVDSTTON | Invalid type of number for the destination |
75 | 0x000004b | ESME_RINVDSTNPI | Invalid flag for the numbering plan of the destination address |
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 | 0x0000062 | ESME_RINVEXPIRY | Invalid validity date |
103 | 0x0000067 | 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 delivery 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 |