# 3CX

Add Vonyx to 3CX V20 as a generic SIP trunk for inbound and outbound calls.

Add your Vonyx trunk to 3CX as a generic SIP trunk. Your extensions can then call out on your Vonyx numbers, and calls to those numbers ring in 3CX.

## Before you start

- A Vonyx [SIP trunk](/docs/console/sip-trunks) with a [number](/docs/console/numbers) attached
- 3CX V20 and access to its Admin console
- For an on-premise or self-hosted 3CX: your firewall forwards SIP (UDP `5060`) and RTP (UDP `9000–10999`, the 3CX default) to 3CX, and SIP ALG is off on your router

## Outbound calls

<Steps>
<Step>

### Add the trunk

In the Admin console, go to **Admin > Voice & Chat** and click **Add Trunk**. Pick your country, and for the provider pick **Generic SIP Trunk (IP-Based)**. Click **OK**.

Vonyx checks your username and password on each call. It does not need 3CX to register.

</Step>
<Step>

### Fill in the General tab

| Field | Value |
| --- | --- |
| Name | `Vonyx` |
| Default route | The extension, ring group or IVR that takes calls to numbers you haven't assigned |
| Create an outbound rule for this SIP Trunk | On |
| Main Trunk Number | Your Vonyx number, `91XXXXXXXXXX` |
| Registrar/Server | `43.204.9.41` |
| Port | `5060` |
| Auto-discovery | Off |
| Outbound Proxy | Leave empty |
| Type of authentication | `Do not require - IP based` |
| Authentication ID | `your_trunk_username` |
| Authentication password | `your_trunk_password` |
| Number of SIM Calls | `1` (your Vonyx channel limit) |

</Step>
<Step>

### Add your numbers

Open the **DID Numbers** tab, click **+Add** and enter each Vonyx number on this trunk as `91XXXXXXXXXX`.

</Step>
<Step>

### Set codecs and transport

Open the **Options** tab:

- Under codec priority, keep only **G.711 U-law (PCMU)** and **G.711 A-law (PCMA)**. Vonyx supports no other codecs.
- If advanced options are shown, set **Transport Protocol** to `UDP` and leave **SRTP Mode** at `Disabled`. Vonyx has no TLS or SRTP.

Click **Save**.

</Step>
<Step>

### Create the outbound rule

After you save the trunk, 3CX opens the outbound rule page. (Later you can find it under **Outbound Rules > Add**.)

| Field | Value |
| --- | --- |
| Name | `Vonyx India` |
| Calls to numbers starting with prefix | `91` |
| Calls to numbers with a length of | `12` |
| Make outbound calls on | Route 1: the `Vonyx` trunk |
| Strip Digits / Prepend | Leave empty if users dial `91XXXXXXXXXX` |
| Outbound Caller ID | Your Vonyx number, `91XXXXXXXXXX` |

Click **Save**. Rules apply top to bottom, so move this rule above any broader rule with **Move Up**.

Vonyx only accepts one of your Vonyx numbers as caller ID. 3CX uses the main trunk number by default, or the extension's assigned DID. Make sure both are Vonyx numbers.

</Step>
</Steps>

## Inbound calls

<Steps>
<Step>

### Route each number

- To an IVR, ring group or queue: **Admin > Call Handling**, open it and pick the number under **Assigned DID Number(s)**.
- To a user: **Admin > Users**, open the user, and on the **General** tab pick the number under **Assigned DID Number(s)**.

Numbers you don't assign go to the trunk's **Default route**.

</Step>
<Step>

### Point Vonyx at 3CX

In the Vonyx console, open the trunk, turn on **Inbound calls**, and set **Inbound address** to your 3CX FQDN or public IP with its SIP port, for example `pbx.example.com:5060`. See [Inbound calls](/docs/console/inbound-calls).

Calls arrive from `43.204.9.41`. Allow that address on UDP `5060` and on your 3CX RTP ports.

</Step>
</Steps>

## Test the connection

1. Go to **Admin > Voice & Chat** and choose **Check SIP Trunk** for the Vonyx trunk.
2. For the inbound test, call your Vonyx number from a mobile, answer on a web client extension, and stay on the call for at least 40 seconds.
3. For the outbound test, click **Start**, enter a mobile number as `91XXXXXXXXXX`, and keep the call up for more than 32 seconds after it's answered.

An IP-based trunk always shows green in **Voice & Chat**, because 3CX can't tell whether it is up. Only a test call proves it works.

## Limitations

- DTMF and call transfer are not available on Vonyx yet. IVR menus that need key presses from callers and transfers out to external numbers won't work.
- New accounts make 1 call at a time ([raise limits](/docs/sip/limits)).
- No TLS or SRTP: use UDP or TCP on port `5060`.

## Troubleshooting

| Problem | Fix |
| --- | --- |
| Outbound call fails with `401` or `407`, or is rejected | Check the Authentication ID and password. Check that the caller ID is a Vonyx number. |
| Outbound call says no route | Check that the outbound rule matches the dialled number (prefix `91`, 12 digits) and sits above broader rules. |
| Trunk is red and calls skip it | 3CX skips unregistered trunks. Use the IP-based provider, not the registration one. |
| Inbound calls fail in the VoIP Provider Checker | Check the DID is entered as Vonyx sends it, and see the event log under the Dashboard. |
| Codec mismatch warning | Keep only PCMU and PCMA in the trunk's codec priority. |
| One-way or no audio | Open your 3CX RTP ports (UDP `9000–10999` by default) to `43.204.9.41`, and turn off SIP ALG. Vonyx sends RTP from UDP `10000–20000`. |

More in [SIP troubleshooting](/docs/sip/troubleshooting).
