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
You can create an SMPP access yourself in the dashboard under Developer > API access.
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_transmitterbind_receiverbind_transceiverunbindsubmit_smdeliver_smenquire_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 |