When to use SMPP instead of REST
When should I use SMPP instead of REST for SMS sending?
Use SMPP when you need high throughput, real-time delivery reports, or persistent connections for bulk messaging. SMSRoute's SMPP gateway supports adaptive multi-route failover and custom sender IDs on request, making it ideal for transactional alerts, OTPs, and marketing campaigns across 149 countries.
A REST API is the right first step for OTP and low-to-medium volume: one HTTPS call per message, no persistent connection to manage. SMPP (Short Message Peer-to-Peer) earns its complexity at scale, where a persistent binary session removes per-message HTTP overhead and gives you higher sustained throughput and richer delivery-receipt handling. For a detailed comparison of SMS protocols, see the GSMA's SMS guidelines.
| Factor | REST | SMPP |
|---|---|---|
| Setup effort | Minutes | ~30 min + a gateway process |
| Throughput ceiling | Good | Higher, sustained |
| Connection model | Stateless per call | Persistent bind session |
| Best for | OTP, transactional, low volume | Bulk, high-throughput A2P |
Install Kannel
How do I install Kannel for SMS gateway setup?
Install Kannel on Linux via package manager or compile from source. SMSRoute provides ready-to-use SMPP bind examples in our GitHub repository. After installation, configure the bearerbox and smsbox with your SMSRoute API credentials. The process takes under 10 minutes with our documented steps.
Kannel is a mature open-source SMS gateway that speaks SMPP on one side and exposes a simple HTTP send interface on the other — a clean bridge between your app and an SMPP provider. On Debian/Ubuntu:
sudo apt-get update && sudo apt-get install -y kannel
# two daemons: bearerbox (core) and smsbox (HTTP interface)
Configure the SMPP bind
How do I configure the SMPP bind for SMSRoute?
Configure your Kannel smsc block with SMSRoute's SMPP host, port 2775, system ID, and password from your dashboard. Set the system type to 'smsc' and enable DLR for delivery receipts. Our adaptive routing automatically selects the best route per destination across 149 countries.
Edit /etc/kannel/kannel.conf. Replace the host, port, and credentials with the SMPP details from
your SMSRoute dashboard. A transceiver bind sends and receives on one session. The SMPP protocol is
defined in RFC 3428.
group = core
admin-port = 13000
admin-password = changeme
smsbox-port = 13001
group = smsc
smsc = smpp
smsc-id = smsroute
host = smpp.smsroute.cc
port = 2775
smsc-username = YOUR_SYSTEM_ID
smsc-password = YOUR_PASSWORD
system-type = ""
transceiver-mode = true
group = sendsms-user
username = tester
password = testerpass
group = smsbox
bearerbox-host = 127.0.0.1
sendsms-port = 13013
Start the gateway and send a test
How do I start the Kannel gateway and send a test SMS?
Run 'bearerbox /etc/kannel/kannel.conf' then 'smsbox /etc/kannel/smsbox.conf'. Use 'sendsms' from command line or your app to send a test message. SMSRoute's free test credits let you verify delivery before funding. Expect first message in minutes with real-time DLR webhooks confirming status.
- Start bearerboxRun
bearerbox -v 1 /etc/kannel/kannel.conf. Watch the log until the SMPP bind reports connected. - Start smsboxIn a second shell run
smsbox -v 1 /etc/kannel/kannel.confto bring up the HTTP send interface. - Send a messageHit the local sendsms endpoint with your test credentials and an E.164 recipient — see the curl below.
- Confirm the bind and receiptCheck the bearerbox log for the submit_sm and the delivery receipt (DLR) coming back on the same session.
curl "http://127.0.0.1:13013/cgi-bin/sendsms?username=tester&password=testerpass&to=%2B15551234567&text=SMPP+test+via+Kannel"
Delivery receipts and throughput tuning
- Enable DLRs so your app learns delivered/failed per message. Map them back to your message
ids via the smsbox
dlr-urlcallback. - Respect the provider's throughput. Set
throughputon the smsc group to stay under your agreed messages-per-second and avoid throttling. - Use a transceiver bind for two-way, or split transmitter/receiver binds if you need to scale each direction independently.
- Keep the session warm. SMPP's whole benefit is the persistent bind; let Kannel auto-reconnect rather than tearing down per batch.
SMSRoute's published route pages list delivery from $0.004/message (premium direct-carrier corridors up to $0.035) with sub-100ms median submission and ~98.6% delivered success (smsroute.cc route pages, 2026).
FAQ
Is SMPP faster than a REST API for bulk SMS?
What port does SMPP use?
What is a transceiver bind?
Can I use crypto billing with an SMPP connection?
Send your first SMS in 5 minutes
No KYC. Pay with BTC, ETH, USDT, XMR, LTC, and SOL. Live routes to 149 countries.
Get an API key →