> Source: https://docs.virtuo.in/vio/telephony/sip-trunks
> Bring your own carrier to Vio over a SIP trunk. Point your carrier or PBX at Vio for inbound, give Vio an outbound host, and attach your own DIDs.
# SIP trunks (BYOC)
**BYOC means "bring your own carrier." A SIP trunk connects your existing carrier or PBX to Vio so calls flow through Vio's agents while you keep your own phone numbers and your negotiated per-minute rates.** If you don't have a carrier to bring and just want to get live fast, import a [**Twilio number**](/vio/telephony/numbers) instead.
## How a SIP trunk works in Vio
You connect **one trunk per carrier**. A trunk carries calls in two directions, and each direction is set up separately:
| Direction | What Vio gives / needs | What it does |
|---|---|---|
| **Inbound** | Vio **issues you credentials**: a **host**, a **username**, and a **password**. | You point your carrier at Vio using them, so calls to your numbers reach your agent. |
| **Outbound** | You give Vio your **outbound host** (where to send calls). | Vio dials through your carrier when running a campaign or a callback. |
Once the trunk is connected, you **attach your DIDs** (your phone numbers) to it. An attached DID behaves just like an imported number: assign it an agent, and it's live.
**A normal phone call is narrowband by nature.** The public phone network (PSTN) carries voice in a compressed, low-bandwidth format, so a call will never sound studio-HD on the line itself — this is true of every phone call, not a Vio limitation. Your agent still comes through clearly. Recordings stored in your [**Call logs**](/vio/call-logs) are captured at higher fidelity than the live phone audio.
## Connect a trunk
### Open the SIP Trunks view
Select **SIP Trunks** in the sidebar and create a trunk for your carrier. Remember: **one trunk per carrier**.
### Set up inbound
Vio issues you an inbound **host**, **username**, and **password**. In your carrier or PBX (for example **FreePBX**), configure a trunk that registers or sends calls to Vio using exactly those credentials. Inbound calls to your numbers now reach Vio.
### Set up outbound
Enter your carrier's **outbound host** — the address Vio should send outgoing calls to. This lets Vio dial through your carrier for campaigns and callbacks.
### Attach your numbers (DIDs)
Attach each DID you want Vio to handle to this trunk. Then assign an agent to each number in the [**Numbers**](/vio/telephony/numbers) view — unassigned numbers fall back to your default agent.
## Managing a trunk
- **Rotate the inbound password.** If a credential is exposed or you rotate secrets on a schedule, generate a new inbound password on the trunk and update your carrier to match.
- **Detach numbers before deleting.** A trunk with DIDs still attached can't be removed. Detach every number first, then delete the trunk — this prevents accidentally cutting off a live line.
Keep your inbound **username and password** private. They authenticate calls into Vio; anyone who has them could send calls to your trunk. If you suspect they've leaked, **rotate the password** immediately.
## Frequently asked
**Q. What does BYOC actually get me over importing Twilio?**
You keep your existing phone numbers and your carrier's per-minute rates, and you can front Vio with a PBX you already run (like **FreePBX**). Twilio import is faster to set up; BYOC gives you continuity and control over telephony costs.
**Q. Can one trunk carry both inbound and outbound?**
Yes. A single trunk handles both directions — inbound via the credentials Vio issues you, outbound via the host you provide. You configure each side once.
**Q. How many trunks do I need?**
One per carrier. If all your numbers are with a single carrier, one trunk is enough. Add another trunk only when you bring a second, separate carrier.
**Q. Why won't Vio let me delete my trunk?**
Because numbers are still attached to it. **Detach the DIDs first**, then delete. This guard exists so you don't accidentally take a live line offline.
## Next step
Attached your numbers? Assign agents in [**Phone numbers**](/vio/telephony/numbers), then start dialing with an [**Outbound campaign**](/vio/telephony/outbound-campaigns).