This page provides details about Mitto’s Short Message Peer-to-Peer (SMPP) specification. SMPP is a protocol used to exchange SMS over the internet. Messages travel between Short Message Service Centers (SMSC) and SMS application systems. The protocol is a level-7 TCP/IP protocol, which allows fast delivery of SMS messages. Mitto supports version 3.4 of the SMPP protocol. Version 3.3 is not supported.

SMPP is ideal for sending SMS in bulk.

If you would prefer to use Mitto’s SMS API instead, refer to the SMS/Bulk SMS API Reference page.

For more details about implementing SMPP, go here.

SMPP Specification

This section provides details about SMPP account details.

Name Required Description
Username Required Provide a specific username for each client.
password Required Provide a unique password for each client.
IP address Required This should be
port Required Specific for each customer and provided separately (contact your Account Manager).

Work with your Account Manager to get the correct information for these details.


Concatenating messages reduces the maximum length of the text to 153 (67 for Unicode). The last 7 characters are for the User Data Header (UDH).

You receive delivery reports if your route provides this feature. Mitto sends delivery reports for sessions that can receive them. You may receive reports via transceiver or receiver. By default, you can bind with 4 sessions. There are no other throughput per second (TPS) limitations besides internet speed.

Protocol Data Units Supported

When you create a connection to an SMPP server with TCP sockets, packets you send are called Protocol Data Units (PDUs). Each PDU has a defined set of values.

Mitto supports the following PDUs:

  • bind_transmitter / bind_transmitter_resp
  • bind_receiver / bind_receiver_resp
  • bind_transceiver / bind_transceiver_resp
  • unbind / unbind_resp
  • submit_sm / submit_sm_resp
  • deliver_sm / deliver_sm_resp
  • enquire_link / enquire_link_resp
  • data_sm / data_sm_resp
  • generic_nack

Delivery Report Format

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

This section displays the fields in the delivery report format.


Field Size (octets) Description
id Variable The message ID allocated to the message by the SMSC when originally submitted.
sub 3 Number of short messages originally submitted. The value may be padded with leading zeroes.
dlvrd 3 Number of short messages delivered. The value may be padded with leading zeroes.
submit_date 10 The time and date at which the short message was submitted. In the case of a message which has been replaced, this is the date that the original message was replaced. The format is as follows:

  • YYMMDDhhmm where:
  • YY last two digits of the year (00-99) MM = month(01-12)
  • DD day (01-31)
  • hh hour (00-23)
  • mm minute (00-59)

Delivery Statuses

Mitto returns a delivery code (for example, DELIVRD) to let you know whether your message arrived. If your message didn’t arrive, the code explains why.

  • DELIVRD  – The message arrived.
  • EXPIRED – The message took too long to deliver.
  • UNDELIV – The message could not be delivered. For example, because the phone number you want to deliver to doesn’t exist.
  • ACCEPTD – Your SMS was accepted. It will be sent.
  • UNKNOWN – An unknown error occurred.
  • ENROUTE – The message is enroute.
  • REJECTD – The system rejected the message. For example, because the provider blocks phone numbers in this range.