---
title: Send SMS over SMPP and read your SDRs
url: https://help.telecomsxchange.com/buyers/send-sms/
audience: For Buyers
summary: "Bind as a transceiver to smpp01.telecomsxchange.com, TCP port 2776, with\
  \ your account's SMPP System Id and SMPP Password. Put the route's tech prefix in\
  \ front of the destination number (80039#447700900123), or send the plain number\
  \ to use the account's default route. Each message segment is billed at the route's\
  \ price; Logs \u2192 SDR (SMS) shows every message, its status, delivery time and\
  \ cost."
updated: '2026-10-21'
verified_commit: 83b4ebc96d0081a25213776d5a8871bd04941125
---

# Send SMS over SMPP and read your SDRs

> Bind as a transceiver to smpp01.telecomsxchange.com, TCP port 2776, with your account's SMPP System Id and SMPP Password. Put the route's tech prefix in front of the destination number (80039#447700900123), or send the plain number to use the account's default route. Each message segment is billed at the route's price; Logs → SDR (SMS) shows every message, its status, delivery time and cost.

## How an SMS travels and is billed

1. **Your SMPP client**: Binds as transceiver to smpp01, TCP 2776
2. **TelecomsXchange** (via `80039#447700900123`): Checks sender ID and balance, bills per segment
3. **Seller's SMSC** (via chosen route): Delivers the message and reports back
4. **Delivery receipt** (via `stat:DELIVRD`): Relayed to your open bind, logged in SDR

With an SMPP account and an SMS route, your messaging platform sends through TelecomsXchange like through any SMS aggregator: bind once, submit messages, receive delivery receipts. This guide covers the connection, addressing, sender IDs, billing and the SMS Detail Records.

## Before you start

- [Create an account](https://help.telecomsxchange.com/buyers/create-your-first-account/) with **Protocol Type** **SMPP**. Note its **SMPP System Id** and **SMPP Password**. If you set an **IP Address** on it, or add **Additional Allowed IPs**, binds are accepted only from those addresses.
- [Buy an SMS route](https://help.telecomsxchange.com/buyers/find-and-buy-routes/): in Market View, switch to **SMS Market**. The first SMS route you buy on an account becomes that account's **Default Route**.
- [Add funds](https://help.telecomsxchange.com/buyers/add-funds/) to the account. Messages are refused when the balance plus credit limit can't cover them.

![How an SMS travels: your client submits it with the route's tech prefix, TelecomsXchange checks and bills it and submits it to the seller's SMSC, and the delivery receipt comes back the same way](https://help.telecomsxchange.com/assets/diagrams/sms-flow.svg)

## How do I connect?

| | |
|---|---|
| Host | `smpp01.telecomsxchange.com` |
| Port | TCP 2776 |
| Bind type | `bind_transceiver` |
| System ID | the account's **SMPP System Id** |
| Password | the account's **SMPP Password** |
| SMPP version | 3.4 |

Send `enquire_link` to keep the session alive; it is answered. A refused bind comes back with status `0x0D` (ESME_RBINDFAIL) and the connection is closed: check the credentials and that your IP is allowed on the account.

The **Accounts** page shows each SMPP account's **Bind Status**, **ONLINE** or **OFFLINE**. Click it for the **SMPP BIND history**: every bind with its **BIND Date**, **UNBIND Date**, **Remote IP** and **Session Id**, kept for 30 days.

## How do I address a message?

The `destination_addr` decides which route carries the message:

- **A route's tech prefix, then the number**: `80039#447700900123`. The prefix is shown on the route in **My Interconnections**. The number is in E.164 format without `+` or `00`.
- **A routing group's prefix**: `444123#447700900123` sends through the group, which picks a route by its rules. See [Routing groups](https://help.telecomsxchange.com/buyers/routing-groups-and-route-testing/).
- **The plain number**: `447700900123` goes to the account's **Default Routing Group** if one is set in the account's settings, otherwise to the account's default SMS route. On the account's edit page, the purchased routes list marks the **Default Route**; click **Make Default** on another route to change it.

Fill `source_addr` with your sender ID; an empty sender is rejected.

## Which sender IDs can I use?

Only sender IDs registered on your account. **Logs → SDR (SMS)** lists them under **Sender Settings** as **Verified Sender IDs**, with one marked **(Default)**. A message from any other sender ID is handled according to your account's setting, shown in the same panel: either it is **blocked**, or it is sent with your **default** sender ID instead.

To register sender IDs, click **Add Sender ID** and send TelecomsXchange the sender IDs you need and what they are used for.

## How are messages billed?

Each message is billed per segment at the route's price for the destination prefix:

- up to 160 characters in the GSM alphabet, or 70 in Unicode, is one segment;
- longer messages are billed per part: 153 GSM or 67 Unicode characters each.

The `submit_sm_resp` carries the seller's `message_id` and two TelecomsXchange TLVs: `0x1520` **billing_price** (the amount charged) and `0x1521` **billed_msgs_cnt** (the number of segments).

!!! tip
    Split long messages into concatenated parts with a UDH on your side. Some routes accept only a single `short_message` and reject an unsplit long text with status `0x01` (ESME_RINVMSGLEN).

The account's **SMPP Rate Limit (req/sec)**, set on its edit page, caps your messages per second; the seller's route may have its own limit. Messages above the limit are rejected with status `0x45`: queue and retry on your side.

## How do delivery receipts work?

TelecomsXchange requests a receipt from the seller for every message. When the seller reports delivery, the message is marked **Delivered** in the SDR with the time it took, and the receipt is relayed to your bound session as a `deliver_sm` with `id:<message_id>` and `stat:DELIVRD`. Receipts are relayed only to an open bind: if you are not connected at that moment, read the status from the SDR instead.

Messages sent to phone numbers you bought on TelecomsXchange arrive the other way round: see [Buy and manage virtual phone numbers](https://help.telecomsxchange.com/buyers/virtual-numbers-dids/) for the SMPP endpoint. They appear in the SDR with the route **Inbound DID**.

## How do I read the SMS Detail Records?

1. Go to **Logs → SDR (SMS)**.
2. Filter by **Phone Number Prefix**, **Status** (**Sent Only**, the default, **All Messages** or **Failed Only**) and **From Date** and **To Date**. The page opens on the last 24 hours.
3. Click **Search SMS**.

![The SMS Detail Records page with Sender Settings open on the verified sender IDs, the search filters and the list of messages with their delivery status](https://help.telecomsxchange.com/assets/screenshots/buyer-sdr.jpg)

Each row shows the **Account**, **To Number**, **From**, **Destination** (country and network), **Seller**, **Route**, **Amount**, **SMS Count** (segments), **Time**, **Status** (**Delivered**, **Sent** or **Failed**), **Delivery (sec)** and, for failures, the **Error**. Click **Show message** to see the text. Hover over the **To Number** for **HLR Lookup: &lt;number&gt;**, which opens [HLR Lookup](https://help.telecomsxchange.com/buyers/hlr-lookup/) with the number filled in.

**Download &lt;n&gt; SMS** saves the matching records as `sms.csv` with the message ID, numbers, country, seller, route, price, time, delivery and text.

The same records are available from the API as `/buyers/smshistory`, and daily or monthly totals per sender ID as `/buyers/sms/summary`; see [Use the API](https://help.telecomsxchange.com/buyers/api/). Sending is SMPP only; there is no HTTP endpoint for submitting messages.

## What if something goes wrong?

| You see | What to do |
|---|---|
| Bind refused, status `0x0D` | Check the **SMPP System Id** and **SMPP Password** on the account, and that you connect from an allowed IP address. |
| Status `0x45` (69, ESME_RSUBMITFAIL) | The message was refused. In the SDR, **Failed Only** shows the reason: no route for that prefix, no rate for the destination, a blocked route, insufficient funds, a sender ID that isn't allowed, or your rate limit. |
| Error "route is down" in the SDR | The seller's SMSC didn't accept a bind. Try another route or a routing group with a failover route. |
| Error "route failed, command_status:N" | The seller rejected the message with that SMPP status. Check the number and sender ID, or use another route. |
| Status `0x01` (ESME_RINVMSGLEN) | The text is longer than one segment and the route accepts only single messages. Split it into UDH parts. |
| Status `0xFE` (254) | The seller didn't answer within the route's timeout. Retry, or use a routing group with a failover route. |
| Status `0x08` (ESME_RSYSERR) | A platform error while forwarding. Retry after a moment. |
| Messages show Sent but never Delivered | The seller hasn't reported delivery. Check the **Delivery (sec)** of earlier messages on that route, or test another route. |

## Frequently asked questions

**Q: Where do I connect?**

A: smpp01.telecomsxchange.com, TCP port 2776, bind_transceiver, with the SMPP System Id and SMPP Password of your account. If the account has an IP address or additional allowed IPs, binds are accepted only from those.

**Q: How do I pick which route a message uses?**

A: Put the route's tech prefix in front of the number, for example 80039#447700900123, or a routing group's 444 prefix. A plain number goes to the account's Default Routing Group if one is set, otherwise to the account's default SMS route.

**Q: What am I charged?**

A: The route's per-message price for every segment. A message up to 160 GSM characters (70 in Unicode) is one segment; longer messages are billed per part. The exact amount comes back in the submit_sm_resp and shows in the SDR.

**Q: Why was my message rejected with status 0x45?**

A: Status 69 (ESME_RSUBMITFAIL) means the platform refused it: no route matches the number or prefix, no rate for the destination, the route or account is blocked, the balance is too low, the sender ID isn't allowed, or you exceeded your rate limit. The SDR page shows the reason for failed messages.

**Q: Do I get delivery receipts?**

A: Yes. TelecomsXchange always asks the seller for a receipt and relays it to your bind as a deliver_sm with stat:DELIVRD. The receipt is relayed only if your bind is open at that moment; the delivered status is always recorded in the SDR.
