Help Center
All integration guides

Connect Restcomm SMSC to TelecomsXchange

Guide 28 of 285-minute readUpdated 23 October 2026

In short: In the SMSC CLI, create a CLIENT ESME of bind type TRANSCEIVER to smpp01.telecomsxchange.com port 2776 with your account's SMPP System Id and SMPP Password, in its own networkId. An mproc rule moves your applications' messages into that networkId and adds the tech prefix with adddestdigprefix 80039#. To sell SMS, create a SERVER ESME for host 174.136.44.213 with the credentials you set on your TelecomsXchange route.

Restcomm SMSC to TelecomsXchange
  1. Your applicationsESMEs or HTTP in networkId 1
  2. then, adddestdigprefix 80039#, Restcomm SMSCmproc rule, then CLIENT ESME tcxc
  3. then, 80039#447700900123, TelecomsXchangesmpp01, TCP 2776
  4. Seller's SMSCThe SMS route you purchased
On this page
  1. Before you start
  2. How do I send SMS through TelecomsXchange?
  3. How do I receive delivery receipts?
  4. How do I receive SMS from TelecomsXchange as a seller?
  5. How do I test it?
  6. What if something goes wrong?
  7. References
  8. Common questions

The Restcomm SMSC Gateway (Telestax, built on the Cloudhopper SMPP library) defines every SMPP connection as an ESME: a CLIENT ESME binds out to TelecomsXchange to send, a SERVER ESME accepts TelecomsXchange's bind when you sell. Routing between them uses networkIds and mproc rules. This guide sets up both directions from the CLI (ss7-cli.sh); the same settings are under ESMEs and mproc rules in the management GUI. For the values themselves, see Connect an SMPP platform.

Before you start#

  • An SMPP account with its SMPP System Id and SMPP Password. Set its IP Address to your SMSC's public IP, for example 203.0.113.10.
  • An SMS route and its tech prefix, for example 80039. Below, TECH_PREFIX stands for it.
  • A sender ID registered on the account.
  • A shell connected to your SMSC instance: start ./ss7-cli.sh from the server's bin directory and connect to it.

How do I send SMS through TelecomsXchange?#

The layout below keeps your applications' ESMEs in networkId 1 and the TelecomsXchange link alone in networkId 2, so an mproc rule decides what goes to TelecomsXchange.

  1. Create the client ESME:
Text
smpp esme create tcxc SYSTEM_ID SMPP01_IP 2776 TRANSCEIVER CLIENT password PASSWORD networkid 2 interface-version 3.4 enquire-link-delay 30000 window-size 10 routing-ton -1 routing-npi -1 routing-range ^.*
smpp esme start tcxc
  • tcxc is the ESME's name; SYSTEM_ID and PASSWORD are the account's SMPP System Id and SMPP Password.
  • SMPP01_IP is the address of smpp01.telecomsxchange.com. Resolve it with dig +short smpp01.telecomsxchange.com if your version only takes an IP here.
  • routing-range ^.* lets this ESME carry any destination, including the # the prefix adds; the default ^[0-9a-zA-Z]* doesn't allow #.
  1. Make sure your applications' ESMEs are in networkId 1 (networkid 1 when you create them, or smpp esme modify <name> networkid 1).

  2. Add the mproc rule that moves their messages to TelecomsXchange and adds the prefix:

Text
smsc mproc add mproc 1 networkidmask 1 newnetworkid 2 adddestdigprefix TECH_PREFIX#

With TECH_PREFIX = 80039, a message to 447700900123 leaves as 80039#447700900123. To send only some destinations, add destdigmask with a regular expression, for example destdigmask ^44.*.

Tip

Messages from the HTTP connector get the networkId given in the request, or the configured default; set it to 1 so the same rule applies.

adddestdigprefix runs at the Arrival trigger, before routing, so the TelecomsXchange ESME's routing-range sees the prefixed number. Have your applications send numbers in E.164 without + or 00.

How do I receive delivery receipts?#

Your applications ask for a receipt with registered_delivery as usual. TelecomsXchange returns deliver_sm with id:<message_id> and stat:DELIVRD on the tcxc bind; the SMSC Gateway recognises it as a receipt for the original message.

Because the receipt arrives in networkId 2, tell the SMSC to route receipts to the networkId the original message came from:

Text
smsc set orignetworkidforreceipts true

Check the result with one test message and swap the value if receipts don't reach the originating ESME: the admin guide describes the option both ways. Receipts are relayed by TelecomsXchange only while the tcxc bind is up.

How do I receive SMS from TelecomsXchange as a seller?#

Create a SERVER ESME that accepts TelecomsXchange's bind, in a networkId of its own:

Text
smpp esme create tcxc-in TCXC_SYSTEM_ID 174.136.44.213 -1 TRANSCEIVER SERVER password TCXC_PASSWORD networkid 3
smpp esme start tcxc-in
  • TCXC_SYSTEM_ID and TCXC_PASSWORD are the SMPP System Id and SMPP Password you set on your SMS route under Routes → My Routes.
  • 174.136.44.213 -1 accepts the bind from TelecomsXchange's IP on any source port. To accept several sessions, create one ESME per session with the same system ID and a different name, up to your route's Allowed BIND Sessions.
  • Add an mproc rule that moves this traffic to the networkId of your delivery path, for example smsc mproc add mproc 2 networkidmask 3 newnetworkid 0 for SS7 in networkId 0, and keep orignetworkidforreceipts so receipts return to tcxc-in.

On the route, enter your SMSC as IP:2776 (the SMPP server port; change it with smpp smppserver set port), SMPP Version 3.4, and TLS No: Restcomm enables SSL only on CLIENT ESMEs.

Inbound SMS for numbers you sell: create another CLIENT ESME to smpp01.telecomsxchange.com port 2776 with system ID did and password did (or your custom DID credentials), with a routing-range that matches your numbers and no prefix rule. When you buy numbers, TelecomsXchange binds to the number's SMPP Endpoint, so point it at a SERVER ESME: smpp:LOGIN:PASSWORD:number@203.0.113.10:2776.

How do I test it?#

  1. Run smpp esme show tcxc; the ESME should be started and bound. On TelecomsXchange, the account's Bind Status shows ONLINE.
  2. Send a test message from one of your ESMEs in networkId 1 to 447700900123.
  3. Check cdr.log in the server's log directory: the record shows the destination 80039#447700900123, the ESME tcxc and the delivery status; smsc stat get shows messages in process.
  4. Go to Logs → SDR (SMS), choose All Messages and click Search SMS.

What if something goes wrong?#

You see What to do
ESME tcxc never binds; bind status 0x0D Check the system ID and password, and that the SMSC binds from the account's IP address or an additional allowed IP.
submit_sm_resp status 0x45 (69) TelecomsXchange refused the message: no route or rate for the prefix, blocked route, low balance, sender ID not allowed or rate limit. Check Failed Only in the SDR, and lower the ESME's window or rate.
Messages don't reach the tcxc ESME The mproc rule didn't match (check networkidmask and destdigmask) or routing-range excludes #.
Messages arrive without the prefix adddestdigprefix is missing or on a rule that didn't match.
Status 0x01 The route takes single messages only. Send long texts as UDH parts.
Status 0xFE (254) or 0x08 The seller timed out or the platform failed to forward; the SMSC reschedules temporary failures. Use a routing group with a failover route.
Receipts don't reach your application Check orignetworkidforreceipts and that the tcxc bind stayed up. The SDR still shows the delivered status.
Selling: Test Bind "has FAILED" The SERVER ESME's system ID or password don't match the route, the ESME isn't started, or TLS is on.
Selling: "host/port is probably unreachable" The SMPP server isn't on that port or 174.136.44.213 is blocked.

References#

Common questions

Is Restcomm SMSC built on jSMPP?

No. The Restcomm (Telestax) SMSC Gateway uses the Cloudhopper SMPP library. It binds to TelecomsXchange as a client ESME and accepts TelecomsXchange's bind as a server ESME.

How do I add the tech prefix?

With an mproc rule: adddestdigprefix adds digits to the start of the destination address when the message arrives, for example adddestdigprefix 80039# turns 447700900123 into 80039#447700900123.

Can TelecomsXchange bind to Restcomm over TLS?

No. Restcomm enables SSL only on CLIENT ESMEs, so set TLS to No on your TelecomsXchange SMS route when it binds to a SERVER ESME.

Which port does Restcomm listen on for TelecomsXchange's bind?

The SMPP server port, 2776 by default; change it with smpp smppserver set port. Enter that port on your TelecomsXchange route.

Is Restcomm SMSC built on jSMPP?
No. The Restcomm (Telestax) SMSC Gateway uses the Cloudhopper SMPP library. It binds to TelecomsXchange as a client ESME and accepts TelecomsXchange's bind as a server ESME.
How do I add the tech prefix?
With an mproc rule: adddestdigprefix adds digits to the start of the destination address when the message arrives, for example adddestdigprefix 80039# turns 447700900123 into 80039#447700900123.
Can TelecomsXchange bind to Restcomm over TLS?
No. Restcomm enables SSL only on CLIENT ESMEs, so set TLS to No on your TelecomsXchange SMS route when it binds to a SERVER ESME.
Which port does Restcomm listen on for TelecomsXchange's bind?
The SMPP server port, 2776 by default; change it with smpp smppserver set port. Enter that port on your TelecomsXchange route.

This guide matches platform build 83b4ebc9. Markdown version.