All integration guides
Connect an SMPP platform to TelecomsXchange
In short: To send SMS, bind as a transceiver to smpp01.telecomsxchange.com, TCP 2776, SMPP 3.4, with your account's SMPP System Id and SMPP Password, and put the route's tech prefix before the number (80039#447700900123). To sell SMS, let TelecomsXchange bind to your SMSC as a transceiver from 174.136.44.213 with the system ID and password you set on your route.
Both directions through one exchange
- Your platformKannel, Jasmin, Restcomm SMSC or any ESME
- then, 80039#447700900123, TelecomsXchangesmpp01, TCP 2776; binds out from 174.136.44.213
- then, submit_sm, Seller's SMSCOr your SMSC, when you sell the route
- then, stat:DELIVRD, Delivery receiptRelayed back to the open bind
On this page
TelecomsXchange speaks plain SMPP, so any SMS gateway or SMSC that can bind as an ESME can buy SMS routes, and any that can accept a bind can sell them. This page puts every value in one place for both directions; the platform guides show the exact configuration for Kannel, Jasmin and Restcomm SMSC.
Before you start#
- To buy: an account with Protocol Type SMPP, an SMS route bought from SMS Market, and funds on the account.
- To sell: an SMS route under Routes → My Routes with your SMSC's IP and port and the credentials TelecomsXchange binds with.
- Your platform's public IP address, for example
203.0.113.10, and access to its firewall.
How do I send SMS through TelecomsXchange?#
Configure one SMPP client connection on your platform:
| Setting | Value |
|---|---|
| Host | smpp01.telecomsxchange.com |
| Port | TCP 2776 |
| Bind type | bind_transceiver |
| SMPP version | 3.4 (interface_version 0x34) |
| System ID | the account's SMPP System Id |
| Password | the account's SMPP Password |
| Source IP | the account's IP Address or one of its Additional Allowed IPs, if set |
| Throughput | at most the account's SMPP Rate Limit (req/sec) |
| Keep-alive | enquire_link, for example every 30 seconds |
Then make sure every message carries:
destination_addr: the route's tech prefix,#, and the number in E.164 without+or00:80039#447700900123. A routing group's prefix works the same way:444123#447700900123. A plain447700900123goes to the account's Default Routing Group, or its default SMS route if no group is set.source_addr: a sender ID registered on your account. Others are blocked or replaced by your default sender ID, according to the account setting shown under Sender Settings on Logs → SDR (SMS).registered_deliveryset to 1 if your platform wants delivery receipts.
Tip
Most gateways can't type a # into every request, so do it once in the routing layer: Kannel rewrites the number with unified-prefix, Jasmin with an MT interceptor, Restcomm SMSC with an mproc rule. Each platform guide shows how.
Each segment is billed at the route's price: up to 160 GSM or 70 UCS-2 characters is one segment, longer texts are billed per part at 153 or 67 characters. The submit_sm_resp carries the TelecomsXchange TLVs 0x1520 billing_price and 0x1521 billed_msgs_cnt. Split long texts into UDH parts on your side; some routes accept only single messages.
How do I receive delivery receipts?#
TelecomsXchange requests a receipt from the seller for every message. When the seller reports delivery, the receipt reaches your bind as a deliver_sm with id:<message_id> and stat:DELIVRD, where message_id is the one returned in your submit_sm_resp. Your platform matches it to the message it sent.
Receipts are relayed only while your bind is open. Keep the transceiver bind up permanently; if it was down, read the status from Logs → SDR (SMS) instead.
How do I receive SMS from TelecomsXchange as a seller?#
When you sell an SMS route, TelecomsXchange is the client and your SMSC is the server:
| Setting | Value |
|---|---|
| Who connects | TelecomsXchange binds to your SMSC |
| From IP | 174.136.44.213 |
| Bind type | transceiver |
| SMPP version | 3.4 or 5.0, as set by SMPP Version on the route |
| Credentials | the SMPP System Id and SMPP Password you set on the route |
| TLS | only if TLS is Yes on the route |
| Message text | in short_message or message_payload, per Field for Messages |
| Sessions | up to Allowed BIND Sessions; Keep BIND Always Online keeps one up |
Your platform must:
- Accept a
bind_transceiverfrom174.136.44.213on the port you entered on the route, with that system ID and password. - Answer each
submit_smwithsubmit_sm_respwithin the route's SubmitSM Timeout: status 0 and yourmessage_idto accept, any other status to refuse. - Send a
deliver_smreceipt withid:<your message_id>andstat:DELIVRDwhen the handset confirms delivery.
Run Test Bind from the route's ⋮ menu in My Routes to check the connection. Interconnect Info shows the exact credentials for each route.
Warning
Not every gateway can accept a bind. Kannel needs the opensmppbox add-on for this direction; Jasmin and Restcomm SMSC accept binds natively.
What about SMS to phone numbers?#
- You sell numbers: your SMSC binds to
smpp01.telecomsxchange.com, TCP 2776, with logindidand passworddid(or your custom credentials under DIDs → My DIDs → Authentication) and submits each inbound SMS to the number, without a tech prefix. See Sell phone numbers. - You buy numbers: TelecomsXchange binds out to the SMPP Endpoint you set on the number, written
smpp:login:password:number@host:port, so your platform must accept that bind. See Buy virtual phone numbers.
How do I test it?#
- Check the bind: the Accounts page shows Bind Status ONLINE; click it for the SMPP BIND history.
- Send one message to a test handset with an approved sender ID and the route's prefix:
80039#447700900123. - Confirm your platform logged a
submit_sm_respwith status 0 and, a few seconds later, adeliver_smwithstat:DELIVRD. - Go to Logs → SDR (SMS), set Status to All Messages and click Search SMS. The message shows its Route, Amount, SMS Count and Status.
Platform guides#
| Platform | Sends to TelecomsXchange with | Tech prefix | Accepts TelecomsXchange's bind (selling) |
|---|---|---|---|
| Kannel | group = smsc, smsc = smpp, transceiver-mode = true |
unified-prefix on the smsc group |
Only with the opensmppbox add-on |
| Jasmin | jCli smppccm connector |
MT interceptor script | Yes: SMPP Server API and a jCli user |
| Restcomm SMSC | smpp esme create … TRANSCEIVER CLIENT |
mproc rule adddestdigprefix |
Yes: an ESME of type SERVER |
What if something goes wrong?#
| You see | What to do |
|---|---|
Bind refused, status 0x0D |
Check the SMPP System Id and SMPP Password, and that your platform binds from the account's IP address or an additional allowed IP. |
Status 0x45 (69) on submit_sm |
The message was refused: no route or rate for that prefix, a blocked route or account, insufficient funds, a sender ID that isn't allowed, or your rate limit. Failed Only in the SDR shows the reason. |
Status 0x01 |
The text is longer than one segment and the route takes single messages only. Split it into UDH parts. |
Status 0xFE (254) |
The seller didn't answer in time. Retry, or send through a routing group with a failover route. |
Status 0x08 |
A platform error while forwarding. Retry after a moment. |
| Messages go to the wrong route | destination_addr arrives without the tech prefix. Check your platform's rewrite rule in its log. |
| No receipts on your platform | Your bind was closed when the receipt arrived, or registered_delivery was 0. Keep the bind up and read the status in the SDR. |
| Selling: Test Bind "host/port is probably unreachable" | Allow 174.136.44.213 on your firewall and check the IP and port on the route. |
| Selling: Test Bind "has FAILED" | Your SMSC refused the credentials or version. Match the system ID, password and SMPP Version on the route. |
Common questions
Which host and port do I bind to?
smpp01.telecomsxchange.com, TCP port 2776, as a transceiver (bind_transceiver), SMPP 3.4, with the SMPP System Id and SMPP Password of your SMPP account.
How does my platform choose a route?
Through destination_addr: the route's tech prefix, a #, then the number in E.164 without + (80039#447700900123). A routing group uses its 444 prefix; a plain number uses the account's Default Routing Group or default SMS route.
Does TelecomsXchange connect to me when I sell SMS?
Yes. TelecomsXchange binds to your SMSC as a transceiver from 174.136.44.213 with the system ID and password you set on your SMS route. Your platform must be able to accept an SMPP bind.
Can I send SMS over HTTP instead?
Not to TelecomsXchange: sending is SMPP only. Your own gateway can still take HTTP from your applications and forward over SMPP, which is how the Kannel and Jasmin guides are set up.
- Which host and port do I bind to?
- smpp01.telecomsxchange.com, TCP port 2776, as a transceiver (bind_transceiver), SMPP 3.4, with the SMPP System Id and SMPP Password of your SMPP account.
- How does my platform choose a route?
- Through destination_addr: the route's tech prefix, a #, then the number in E.164 without + (80039#447700900123). A routing group uses its 444 prefix; a plain number uses the account's Default Routing Group or default SMS route.
- Does TelecomsXchange connect to me when I sell SMS?
- Yes. TelecomsXchange binds to your SMSC as a transceiver from 174.136.44.213 with the system ID and password you set on your SMS route. Your platform must be able to accept an SMPP bind.
- Can I send SMS over HTTP instead?
- Not to TelecomsXchange: sending is SMPP only. Your own gateway can still take HTTP from your applications and forward over SMPP, which is how the Kannel and Jasmin guides are set up.
Finished this guide?
This guide matches platform build 83b4ebc9. Markdown version.