All buyer guides
Send SMS over SMPP and read your SDRs
In short: 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
- Your SMPP clientBinds as transceiver to smpp01, TCP 2776
- then, 80039#447700900123, TelecomsXchangeChecks sender ID and balance, bills per segment
- then, chosen route, Seller's SMSCDelivers the message and reports back
- then, stat:DELIVRD, Delivery receiptRelayed to your open bind, logged in SDR
On this page
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 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: in Market View, switch to SMS Market. The first SMS route you buy on an account becomes that account's Default Route.
- Add funds to the account. Messages are refused when the balance plus credit limit can't cover them.
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+or00. - A routing group's prefix:
444123#447700900123sends through the group, which picks a route by its rules. See Routing groups. - The plain number:
447700900123goes 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 for the SMPP endpoint. They appear in the SDR with the route Inbound DID.
How do I read the SMS Detail Records?#
- Go to Logs → SDR (SMS).
- 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.
- Click Search SMS.
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: <number>, which opens HLR Lookup with the number filled in.
Download <n> 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. 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. |
Common questions
Where do I connect?
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.
How do I pick which route a message uses?
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.
What am I charged?
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.
Why was my message rejected with status 0x45?
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.
Do I get delivery receipts?
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.
- Where do I connect?
- 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.
- How do I pick which route a message uses?
- 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.
- What am I charged?
- 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.
- Why was my message rejected with status 0x45?
- 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.
- Do I get delivery receipts?
- 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.
Finished this guide?
This guide matches platform build 83b4ebc9. Markdown version.