---
title: Connect Restcomm SMSC to TelecomsXchange
url: https://help.telecomsxchange.com/integrations/restcomm-smsc/
audience: Integrations
summary: 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.
updated: '2026-10-23'
verified_commit: 83b4ebc96d0081a25213776d5a8871bd04941125
---

# Connect Restcomm SMSC to TelecomsXchange

> 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 applications**: ESMEs or HTTP in networkId 1
2. **Restcomm SMSC** (via `adddestdigprefix 80039#`): mproc rule, then CLIENT ESME tcxc
3. **TelecomsXchange** (via `80039#447700900123`): smpp01, TCP 2776
4. **Seller's SMSC**: The SMS route you purchased

The [Restcomm SMSC Gateway](https://github.com/RestComm/smscgateway) (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](https://help.telecomsxchange.com/integrations/connect-smpp-platforms/).

## Before you start

- An [SMPP account](https://help.telecomsxchange.com/buyers/create-your-first-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](https://help.telecomsxchange.com/buyers/find-and-buy-routes/) 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 `#`.

2. Make sure your applications' ESMEs are in networkId `1` (`networkid 1` when you create them, or `smpp esme modify <name> networkid 1`).

3. 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

- [Restcomm SMSC Gateway admin guide: ESME settings](https://github.com/RestComm/smscgateway/blob/master/docs/adminguide/sources-asciidoc/src/main/asciidoc/Section-Managing-ESME-Settings.adoc)
- [Restcomm SMSC Gateway admin guide: mproc rules and routing fundamentals](https://github.com/RestComm/smscgateway/blob/master/docs/adminguide/sources-asciidoc/src/main/asciidoc/Chapter-Configuring.adoc)
- [Restcomm SMSC Gateway admin guide: SMPP server settings](https://github.com/RestComm/smscgateway/blob/master/docs/adminguide/sources-asciidoc/src/main/asciidoc/Section-Managing-SMPP-Server-Settings.adoc)
- [Restcomm SMSC Gateway admin guide: server settings (receipt routing)](https://github.com/RestComm/smscgateway/blob/master/docs/adminguide/sources-asciidoc/src/main/asciidoc/Section-Managing-Server-Settings.adoc)
- [Restcomm SMSC Gateway admin guide: monitoring and CDR log](https://github.com/RestComm/smscgateway/blob/master/docs/adminguide/sources-asciidoc/src/main/asciidoc/Chapter-Monitoring.adoc)

## Frequently asked questions

**Q: Is Restcomm SMSC built on jSMPP?**

A: 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.

**Q: How do I add the tech prefix?**

A: 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.

**Q: Can TelecomsXchange bind to Restcomm over TLS?**

A: 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.

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

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