---
title: Connect 3CX to TelecomsXchange
url: https://help.telecomsxchange.com/integrations/3cx/
audience: Integrations
summary: In 3CX V20, add a Generic SIP Trunk pointing at sip01.telecomsxchange.com
  port 5060 with authentication set to Do not require (IP based), and authorise 3CX's
  public IP on your TelecomsXchange account. Add an outbound rule that strips + or
  00 and prepends the route's tech prefix, so calls leave as 80039#447700900123.
updated: '2026-10-23'
verified_commit: 83b4ebc96d0081a25213776d5a8871bd04941125
---

# Connect 3CX to TelecomsXchange

> In 3CX V20, add a Generic SIP Trunk pointing at sip01.telecomsxchange.com port 5060 with authentication set to Do not require (IP based), and authorise 3CX's public IP on your TelecomsXchange account. Add an outbound rule that strips + or 00 and prepends the route's tech prefix, so calls leave as 80039#447700900123.

## 3CX to a purchased route

1. **Your 3CX**: Generic SIP trunk, IP based, no registration
2. **TelecomsXchange** (via `80039#447700900123`): sip01, UDP 5060
3. **Seller's route**: The route you purchased

This guide connects 3CX V20 to TelecomsXchange with a generic SIP trunk: outbound calls to a purchased route, and inbound calls on numbers you bought or routes you sell. For the full list of TelecomsXchange values, see [Connect a SIP platform](https://help.telecomsxchange.com/integrations/connect-sip-platforms/).

!!! warning
    TelecomsXchange does not accept SIP REGISTER. Don't pick **Register/Account based** authentication on the trunk. 3CX is recognised by its **source IP**, so set authentication to **Do not require (IP based)**.

## Before you start

- A [SIP account](https://help.telecomsxchange.com/buyers/create-your-first-account/) with 3CX's public IP, for example `203.0.113.10`, in **IP Address** or **Additional Allowed IPs**.
- A [purchased route](https://help.telecomsxchange.com/buyers/find-and-buy-routes/) and its tech prefix from **My Interconnections**, for example `80039#`. In this guide `TECH_PREFIX` stands for that value.
- 3CX V20 with a static public IP (or a fixed NAT address) and a licence that allows a generic SIP trunk.
- To receive calls on numbers you bought: a [phone number](https://help.telecomsxchange.com/buyers/virtual-numbers-dids/) whose SIP endpoint points at 3CX, for example `sip:14165551234@203.0.113.10:5060`.

## How do I send calls to TelecomsXchange?

1. In the 3CX Admin Console, go to **Voice & Chat** and click **Add Trunk**. Choose the **Generic** country and **Generic SIP Trunk** as the provider, enter a **Main Trunk No** (any number you will present, for example one you bought), and click **OK**.
2. On the trunk's **General** tab, enter:

| Field | Value |
|---|---|
| Name | `TelecomsXchange` |
| Registrar/Server/Gateway Hostname or IP | `sip01.telecomsxchange.com` |
| Port | `5060` |
| Outbound Proxy | Leave empty |
| Type of Authentication | **Do not require (IP based)** |
| Authentication ID / Password | Leave empty, or any placeholder if the form requires a value |
| Number of SIM calls | The number of concurrent calls you expect |

3. Under the trunk's options, keep the codecs your route supports (G.729 and G.711, as listed in the Purchased Route Confirmation email). TelecomsXchange doesn't transcode, so the route and 3CX must share a codec. Save the trunk.
4. Go to **Outbound Rules** and click **Add**. Create one rule for numbers dialled with `00` and one for numbers dialled with `+`:

| Field | Rule for `00` | Rule for `+` |
|---|---|---|
| Rule Name | `TCXC 00` | `TCXC plus` |
| Calls to numbers starting with prefix | `00` | `+` |
| Calls from extension(s) | The extensions or groups allowed to call out | Same |
| Route 1 | The `TelecomsXchange` trunk | Same |
| Strip Digits | `2` | `1` |
| Prepend | `80039#` (your `TECH_PREFIX`) | `80039#` |

With these rules, a user who dials `00447700900123` or `+447700900123` sends `80039#447700900123` to TelecomsXchange. 3CX may write the `#` as `%23` in the Request-URI; TelecomsXchange decodes it.

5. Move the rules above any other rule that matches the same numbers. 3CX checks outbound rules from the top and uses the first match.

!!! tip
    To send different destinations to different routes, add one rule per destination prefix (for example `0044`) with that route's tech prefix in **Prepend**. Or prepend a [routing group](https://help.telecomsxchange.com/buyers/routing-groups-and-route-testing/) prefix such as `444101#` and let TelecomsXchange choose the route.

3CX records the number after **Prepend**, so call history and reports show `80039#447700900123`. That is cosmetic: the call is routed correctly.

## How do I receive calls from TelecomsXchange?

Calls on numbers you bought, and on routes you sell, come from `174.136.44.213` over UDP, from source ports 5060 to 5072, with the number in E.164 format such as `14165551234`.

1. Allow `174.136.44.213` on the firewall in front of 3CX for UDP 5060, and forward the 3CX RTP range (by default UDP 9000 to 10999) to 3CX.
2. 3CX matches an incoming INVITE to a trunk by comparing its source IP with the trunk's host. `sip01.telecomsxchange.com` resolves to `174.136.44.213`, so calls from TelecomsXchange land on the `TelecomsXchange` trunk. If they don't, enter `174.136.44.213` as the trunk's **Registrar/Server/Gateway Hostname or IP**.
3. On the trunk's **DIDs** tab, add each number TelecomsXchange delivers, in the E.164 format it arrives in, for example `14165551234`.
4. Assign each DID to its destination: a user, a ring group, a queue or an IVR, in that object's DID settings. In V20 there is no separate inbound rules page; the DID is routed by the object it's assigned to, and unassigned DIDs follow the trunk's default route.

3CX is a PBX, not a softswitch. As a seller, it can terminate calls to its own users and numbers, but it isn't designed to carry wholesale transit traffic on to another carrier.

## How do I receive calls on numbers I bought?

Set the number's **SIP Endpoint (Primary)** in **DID Settings** to 3CX, for example `sip:14165551234@203.0.113.10:5060`. TelecomsXchange sends the INVITE from `174.136.44.213` with `14165551234` in the Request-URI, which 3CX matches against the trunk's **DIDs** tab.

## How do I test it?

1. Place a call from a 3CX extension to an international number covered by the route, for example `00447700900123`.
2. In the Admin Console, open **Advanced → Activity Log** and look for the call: the outbound rule that matched, the trunk it used and the SIP reply.
3. For the full SIP exchange, run a capture from **Advanced → Troubleshooting** (or `tcpdump -n -i any udp port 5060` on a Linux install) and look for the INVITE to `80039#447700900123` (or `80039%23447700900123`).
4. In the TelecomsXchange portal, watch the call in **Live Calls** and find its SIP code in **Logs → CDR (Voice)**.

## What if something goes wrong?

| You see | What to do |
|---|---|
| 401 or 407 from TelecomsXchange, then the call fails | 3CX's source IP isn't authorised, so TelecomsXchange asks for credentials. Add 3CX's public IP to the account's **IP Address** or **Additional Allowed IPs**. |
| 403 Forbidden | The source IP isn't authorised. Compare the public IP in your capture with the account; check the account isn't blocked or out of balance. |
| 404 Not Found | Missing or wrong tech prefix, or `+`/`00` left in the number. Check **Strip Digits** and **Prepend** on the outbound rule and the Request-URI in the capture. |
| 408 Request Timeout | No reply from sip01. Check outbound UDP 5060 on your firewall and that 3CX resolves `sip01.telecomsxchange.com`. |
| 503 Service Unavailable | The route is blocked or failed on the seller's side. Check **My Interconnections**; try another route or a routing group. |
| One-way or no audio | 3CX's public IP is wrong in its network settings, or the RTP range isn't forwarded. Check the public IP 3CX advertises and open UDP 9000 to 10999. |
| Inbound calls rejected with 407 | 3CX didn't match the call to the trunk, so it challenged it; TelecomsXchange doesn't answer challenges. Set the trunk host to `174.136.44.213` and check the firewall. |
| Inbound call arrives but goes nowhere | The number isn't on the trunk's **DIDs** tab in the format it arrives in, or the DID isn't assigned to a destination. |

## References

- [3CX: SIP trunk registration and authentication types](https://www.3cx.com/docs/sip-trunk-registration-authentication/)
- [3CX: Configuring SIP trunks](https://www.3cx.com/docs/manual/sip-trunks/)
- [3CX: Outbound call routing](https://www.3cx.com/docs/manual/outbound-call-routing/)
- [3CX community: V20 inbound rules replaced by DID assignment](https://www.3cx.com/community/threads/v20-inbound-rules.123799/)

## Frequently asked questions

**Q: Can 3CX register to TelecomsXchange?**

A: No. TelecomsXchange is peering only and does not accept REGISTER. Set the trunk's authentication to Do not require (IP based); the Register/Account based option makes 3CX send REGISTER, which TelecomsXchange rejects.

**Q: Can 3CX use the VoIP login and password instead of its IP?**

A: Use IP authentication with 3CX. Its IP-based trunk type is built for providers that recognise the PBX by source IP, and the account-based type registers. If 3CX's public IP changes, add the new one under Additional Allowed IPs.

**Q: Why do my call logs show the tech prefix?**

A: 3CX applies the outbound rule's Prepend before the call is logged, so call history shows 80039#447700900123. It's cosmetic; the call is routed correctly.

**Q: Which 3CX edition do I need?**

A: Generic, non-template SIP trunks are limited on some 3CX editions. Check that your licence allows a generic SIP trunk before you start.
