SMPP (Short Message Peer-to-Peer) is the open, binary protocol used by carriers, aggregators and high-volume applications to exchange SMS over a persistent TCP connection. Instead of one HTTP request per message, your application keeps a bind open to the gateway and submits messages as PDUs, receiving delivery receipts and inbound messages on the same session. Ontech BulkSMS runs a multi-tenant SMPP 3.4 server.
When to use SMPP rather than the HTTP API
| HTTP / JSON API | SMPP | |
|---|---|---|
| Connection | One request per call | Persistent session (bind) |
| Throughput | 60 requests/minute; batch via JSON | Continuous, up to your credential's TPS limit |
| Latency per message | HTTP round trip | Lowest — no connection setup per message |
| Delivery receipts | Poll status, or callback URL | Pushed to the bind as deliver_sm |
| Inbound messages | Inbox / callback | Pushed to the bind as deliver_sm |
| Integration effort | Minutes, any language | An SMPP library or an existing SMPP-capable platform |
| Typical user | Web apps, school and business systems | Banks, mobile money, messaging platforms, other gateways |
If you send a few thousand messages a day from an application, the HTTP API is simpler. If you run a core banking system, a messaging platform or an existing SMPP client, or you need receipts pushed in real time, bind over SMPP.
Connecting to the Ontech BulkSMS SMPP server
| Host | bulksms.ontech.co.zm |
| Port | 2775 |
| Version | SMPP 3.4 |
| System ID | Your API Access ID |
| Password | Your API Secret Key |
| Bind types | Transmitter, receiver, transceiver |
| Access control | Your account's IP whitelist; per-credential throughput (TPS) limit |
Generate the credentials under API Keys in your dashboard and whitelist the IP address your SMPP client will connect from. Binds from other addresses are refused.
How a session works
- Bind. Your client opens a TCP connection and sends
bind_transceiver(or transmitter / receiver) with the system ID and password. The server authenticates against your API credentials and the IP whitelist. - Submit. For each message you send
submit_smwith the destination MSISDN, the source address (your approved sender ID) and the text. The server validates the number, sender ID, blacklist and credits, queues the message and returnssubmit_sm_respwith a message ID. - Receipts. When the network reports, the server pushes a
deliver_smreceipt to your receiver or transceiver session with the message ID and final state (DELIVRD, UNDELIV, REJECTD and so on). Transmitter-only binds do not receive receipts. - Inbound. Messages sent by handsets to your keywords or in reply to your messages are pushed as
deliver_smon the same session. - Keep-alive. Send
enquire_linkperiodically; if the session drops, reconnect and re-bind. Most SMPP libraries handle this.
Throughput and pacing
Each SMPP credential has a transactions-per-second limit set on the account. Submissions above it receive a throttled response (ESME_RTHROTTLED) and should be retried after a short pause — nothing is silently dropped; if you need a higher limit for a launch or a sustained stream, ask before the traffic starts. Behind the server, messages are paced per carrier connection so that one account's burst does not delay another's OTPs.
Encoding and long messages
Use the default data coding for GSM-7 text (160 characters per segment) and UCS-2 for messages that need characters outside the GSM alphabet (70 characters per segment). Long messages are concatenated with user data headers in the usual way and are billed per segment.
Testing and going live
- Bind with a transceiver session first and send a single message to your own number; confirm the receipt arrives on the bind.
- Check the message and its delivery report in the dashboard — the same record your support team will see.
- Confirm your sender ID is approved before load; an unapproved source address is rejected at submit.
- Watch your credit balance and set a low-balance alert; a bind does not change how credits work.
Connection details and the HTTP alternative are on the API documentation page. For what the receipt states mean, see delivery reports.