Essentials
API Essentials
SMPP specification

SMPP specification

The Short Message Peer-to-Peer (SMPP) is an open, industry-standard protocol used by the telecommunication industry for exchanging SMS messages between SMS application systems and Short Message Service Centers (SMSC).

The connection between the application and the Infobip SMPP server is SMPP version 3.4 (opens in a new tab) (versions 3.3 and 5.0 are not supported).

Supported SMPP features

SMPP traffic security

It is advised not to utilize the same user for both purposes to ensure proper account administration and secure SMPP API traffic broadcast. Instead, you should have a dedicated user with credentials solely intended for SMPP API traffic broadcasting.

Since SMPP traffic is commonly transmitted through a static IP address, you will need to contact your customer success manager and provide them with a list of IP addresses that should be allowed for the user responsible for broadcasting SMPP API traffic. Send the bind request to the encrypted SSL/TLS endpoint smpp2.infobip.com:8887 to establish a secure connection.

Bind parameters

NOTE

The length of the password required depends on your SMPP library rather than the SMPP v3.4 protocol itself. It is advised to use a library that enables a setup with a password length greater than 8 characters. If you need additional information, contact our Support (opens in a new tab) team to adjust the password strength policy on your account.

Name MandatoryDescription
system_idYesThe user's username is created on the Infobip platform.
passwordYesProvided for each client.
IP addressYessmpp3.infobip.com (primary)smpp1.infobip.com (secondary)smpp2.infobip.com (SSL)
portYes8888 (primary and secondary)8887 (SSL)
timeout(keep alive or msg)Yes30 sec
system_typeNo
IMPORTANT

You are allowed to bind as a transmitter, receiver or a transceiver. To receive delivery reports, you must bind as a transceiver or a receiver.

You will receive delivery reports only if your route provides delivery reporting. Delivery reports will be sent equally over all of your currently available sessions capable of receiving them (transceiver or receiver).

By default, you are allowed to bind with 4 sessions. There is no other throughput (TPS) limitations besides internet speed.

PDU types

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

Data coding schemes

Setting DCS to 0 or 1 will apply the IA5 / GSM7 coding scheme to the message (GSM7 being the default Infobip SMSC alphabet).

Set DCS = 3 for Latin1 (ISO-8859-1), and DCS = 8 for sending messages as Unicode/UCS-2 (ISO/IEC-10646).

Scheduled delivery

Scheduled delivery is supported over the SMPP protocol using relative time format.

070605040302100R

For example, that would would mean that the message will be delivered in 7 years, 6 months, 5 days, 4 hours, 3 minutes, 2 seconds and 1 tenth of a second from now.

Command status

Each request to our system will receive an acknowledgement as per SMPP v 3.4 standard, including command_status. Most relevant command statuses, including Infobip-specific ones, are in the table below:

command_statusPDUDescription
0x0000000Ebind_respInvalid credentials
0x00000022 / 34submit_sm_respNetwork not covered
0x000000FF / 255submit_sm_respAccount has insufficient balance
0x0000000asubmit_sm_respInvalid source address
0x0000000bsubmit_sm_respInvalid destination address
0x0000000csubmit_sm_respDuplicate or invalid messageID
0x000004a1submit_sm_respSystem error or channel disabled
0x0000009Fsubmit_sm_respInvalid optional parameter length

Delivery report format

Delivery report in this format will be returned in short message field of deliver_sm PDU:

id:{message_id} sub:{message_sub} dlvrd:{message_dlvrd} submit date:{message_submit_date} done date:{message_done_date} stat:{message_stat} err:{message_err}

Delivery statuses

  • DELIVRD
  • EXPIRED
  • UNDELIV
  • ACCEPTD
  • UNKNOWN
  • ENROUTE
  • REJECTD

GSM error codes

GSM error codes are returned in DLRs and explain the status of the message (whether intermediate or final). Error code will be returned in the short_message as a part of delivery information, or (if enabled by Infobip specialists) in Optional TLV 0x423.

Check the possible error codes.

Flash notifications

You can use your Infobip SMPP account to send Flash notifications. Such notifications are immediately displayed on the mobile phone screen upon arrival and are not stored in the memory of the device. Use your default system_id and password to send Flash notifications by submitting messages with Data Coding set to 16 (or 24 for Unicode).

Long SMS feature is not supported for Flash notifications. Delivery reports will be sent to you using DeliverSM PDU.

Number lookup

Using the Infobip SMPP account, it is possible to request Number Lookup (opens in a new tab) data. To use Number Lookup, you can use your default system_id and password, setting system_type = HLR in Bind PDU.

SubmitSM PDU is used for submitting the Number Lookup request, with the destAddress parameter set to the required destination address. All other parameters will be ignored (srcAddress, TON/NPI, etc).

Infobip Number Lookup subsystem will respond using a regular SubmitSMResp, containing the message_id reference.

Once the Number Lookup request has been finalized on the Infobip system, you will receive DeliverSM PDU, containing the short message with: IMSI for the required destAddress or an error code in case of failure, plus additional optional info fields, depending on your package.

Optional info fields

Type

Hex

Decimal

Original network nameTLVString0x14125138
Original network prefixTLVString0x140B5131
Original countryTLVString0x14225154
Original country codeTLVString0x14235155
Original country prefixTLVString0x14245156
Ported network nameTLVString0x14135139
Ported country prefixTLVString0x14425186
Ported network prefixTLVString0x143e5182
Ported network country nameTLVString0x143f5183
Is number portedTLVInt0x14215153
Roaming network nameTLVString0x14145140
Roaming network prefixTLVString0x14195145
Roaming country nameTLVString0x14155141
Roaming country codeTLVString0x14175143
Roaming country prefixTLVString0x14205152
MCCMNCTLVString0x14165142
Price per message(multiplied by 100 for compatibility reasons)TLVInt0x14185144
Serving HLRTLVString0x14095129
Is number correctTLVInt0x14255157

Extra-optional info fields

Type

Hex

Decimal

IMSIOct0x14035123

In case that the Number Lookup request was successful, DeliverSM will be as follows (IMSI 219101100935850):

addr: 0 0 38591xxxxxxx addr: 0 0 0000000000 msg: id:40072910491427628 sub:001 dlvrd:001 submit date:1007291049 done date:1007291049 stat:DELIVRD err:000 IMSI:219101100935850 MSC:38591016 HLR:38591xxxxxxx ORN:VipNet PON:VipNet RON:VipNet ROC:HR MCCMNC:21910 opt: (oct: (tlv: 1059) 030000) (byte: (tlv: 1063) 2) (str: (tlv: 30) 40072910491427628) (str: (tlv: 5129)38591xxxxxxx) (str: (tlv: 5138) VipNet) (str: (tlv: 5139) VipNet) (str: (tlv: 5140) VipNet) (str: (tlv:5141) Croatia ) (str: (tlv: 5143) HR) (str: (tlv: 5142) 21910) (int: (tlv: 5144) 1) (str: (tlv: 5145) 91) (str: (tlv: 5152) 385) (int: (tlv: 5153) 1) (str: (tlv: 5154) Croatia ) (str: (tlv: 5155) HR) (str: (tlv: 5156) 385) (int: (tlv: 5157) 1) ) (extraopt: (oct: (tlv: 5123) 323139313031313030393335383530) )

If an error occurred, DeliverSM will be as follows:

addr: 0 0 38591xxxxxxx addr: 0 0 0000000000 msg: id:40072910491419819 sub:001 dlvrd:001 submit date:1007291049 done date:1007291049 stat:UNDELIV err:001 IMSI: MSC: ORN:VipNet MCCMNC: opt: (oct: (tlv: 1059) 030001) (byte: (tlv: 1063) 5) (str: (tlv: 30) 40072910491419819) (str: (tlv: 5138) VipNet) (str: (tlv: 5142) ) (int: (tlv: 5144) 1) (int: (tlv: 5153) 0) (str: (tlv: 5154) Croatia ) (str: (tlv: 5155) HR) (str: (tlv: 5156) 385) (int: (tlv: 5157) 1) )

URL Shortening

You can use your SMPP connection in conjunction with the URL Shortening (opens in a new tab) functionality using the following TLVs:

Optional fields

Type

Hex

Decimal

Value

Notes

Shorten UrlTLVString0x14945268‬Any value will enableNot required if Custom Domain TLV set set
Custom DomainTLVString0x14955269‬http:// or https:// are not required in the custom domain 
Remove ProtocolTLVString0x14965270‬Boolean 

Need assistance

Explore Infobip Tutorials

Encountering issues

Contact our support

What's new? Check out

Release Notes

Unsure about a term? See

Glossary

Research panel

Help shape the future of our products
Service Terms & ConditionsPrivacy policyTerms of use