Skip to content
SMPP

Integration

SMPP

Bind directly to smpp.unicom360.com over SMPP 3.4 for high-volume SMS: connection settings, credentials, what submit_sm must contain and how errors come back.

Connection

  • Host

    Value
    smpp.unicom360.com
  • Port

    Value
    2775
  • Protocol

    Value
    SMPP 3.4
  • Bind type

    Value
    transceiver
  • system_type

    Value
    (leave blank)
  • Transport

    Value
    plain TCP, no TLS

The same settings are shown on the SMPP tab of Developer in the portal, with copy buttons. Bind as a transceiver; transmitter and receiver binds are also accepted.

The bind is not encrypted

SMPP here is plain TCP. Your system ID, password and message text cross the network in the clear, so connect from a fixed IP address and ask for the port to be firewalled to it, or route the bind through a VPN. If that does not suit your setup, use the HTTPS API instead.

Credentials

SMPP credentials are separate from API keys. Create one on the SMPP tab of the Developer page: you choose a system ID (letters only, up to 10) and the portal issues the password, which you can reveal, copy and regenerate there. The tab appears once your account has the SMS channel. Each credential binds for the whole account, so the sender IDs and SMS bundle it uses are the account's.

Binding

Open a TCP connection to the host and port and send bind_transceiver with your system ID and password and an empty system_type. A successful bind answers bind_transceiver_resp with status ESME_ROK. A refused bind answers ESME_RBINDFAIL, whether the system ID is unknown, the password is wrong, or the credential or account is disabled. A connection that does not bind within the session timeout is closed. enquire_link keep-alives are answered, and unbind closes the session cleanly.

Sending

Send one submit_sm per recipient. Each one goes through the same checks as a JSON API request, so the same rules apply:

  • source_addr must be a sender ID registered on your account for SMS and approved, exactly as from on the API.
  • destination_addr is the recipient in international format, 260971234567.
  • short_message must be GSM 7-bit text; Unicode (UCS-2) is refused. It is billed per 160 characters from your SMS bundle.

submit_sm_resp carries the message ID the gateway assigned, the same ID the JSON API returns and the portal shows, so a message sent over SMPP can be found in the same reports.

Responses and errors

  • 0x00000000 ESME_ROK

    Meaning
    Accepted. The message_id in submit_sm_resp is the same ID the JSON API would return.
  • 0x0000000D ESME_RBINDFAIL

    Meaning
    Bind refused (unknown system_id, wrong password, disabled credential or account), or submit_sm sent before binding.
  • 0x00000008 ESME_RSYSERR

    Meaning
    The gateway refused the message: sender ID not registered, empty bundle, or the text failed validation.
  • 0x00000045 ESME_RSUBMITFAIL

    Meaning
    The SMPP service could not reach the gateway. Retry.

On ESME_RSYSERR the reason is the gateway's own message, the same text the JSON endpoint would return (for example Invalid From Sender ID or INSUFFICIENT_BUNDLE); it is logged on our side and the SMPP status is all your client sees. Check the sender ID and bundle in the portal when a bind that used to send starts getting this status.

Delivery status

Delivery receipts (deliver_sm) are not sent over the bind, and there are no inbound messages on it. The status of every message sent over SMPP is in the portal's reports. If your system needs delivery status pushed to it, send over the JSON API with a callback_url instead; see Delivery webhooks.