Creating Trunks SIP & IAX2

A trunk is the connection between VoicerOnePBX and a telephony provider (your phone company) — the pipe that carries your calls to and from the outside world. VoicerOnePBX speaks two calling "languages": the widely-used SIP, and IAX2, which sends everything down a single connection and so is often easier to get working through an office router (a challenge known as NAT).

Adding a trunk

Open the Trunks tab and click Add Trunk. Choose the protocol, then fill in the details your provider gave you. Trunk passwords are stored in the macOS Keychain, never in plain configuration files.

SIP trunk fields

FieldWhat to enter
NameA friendly label, e.g. voip.ms — Main.
Host / ServerYour provider's SIP server, e.g. toronto.voip.ms.
UsernameThe SIP account / sub-account username.
PasswordThe account secret (kept in Keychain).
RegisterOn for most providers — the PBX registers so inbound calls can find it and the office router (its NAT) keeps a path open.
Caller IDOptional per-trunk outbound caller ID (see below).

IAX2 trunk fields

IAX2 carries both call setup and voice on a single connection (4569), which makes it simple to firewall and robust behind NAT. Fields mirror SIP: host, username, secret and register. VoicerOnePBX implements IAX2 natively (RFC 5456) — no add-on required — and negotiates G.711 with zero transcoding for clean audio.

voip.ms sub-accounts

With voip.ms, inbound calls are delivered to the sub-account that owns the DID. Make sure the trunk you register matches the sub-account your numbers are pointed at, and honour the provider's registration refresh interval so the trunk never drops.

Registration & health

Once saved, the trunk attempts to register. The Trunks tab shows a live status; a healthy trunk reads Registered with a countdown to its next refresh. VoicerOnePBX caps the registration TTL and runs an expiry sweep, so a trunk that briefly drops re-registers on its own, and a genuinely dead trunk is marked unreachable (never mid-call — an active call keeps a trunk "in use").

Registration diagnostics

If a trunk won't register, open its Diagnostics. VoicerOnePBX captures the live REGISTER exchange and gives a plain-language verdict — wrong credentials, unreachable host, provider rejecting the auth realm, and so on — plus a Copy for support button that bundles the details for your provider.

One trunk marked unreachable during a call?

VoicerOnePBX will not flag a trunk unreachable while it is carrying an active call, even if a registration refresh is briefly late — this prevents a live call from being torn down by a transient blip.

Outbound caller ID

Each trunk can assert its own outbound caller ID. When Send own caller ID is enabled, the outbound INVITE carries your chosen number in the From user and a P-Asserted-Identity header, so the called party sees the number you intend (subject to your provider allowing it).

Outbound routing & forced trunks

Outbound calls are matched to a trunk by the outbound routes (dial patterns → trunk). You can also pin a specific extension to a specific trunk — useful, for example, to send a fax extension out a dedicated fax sub-account. Set this per extension in Edit Extension → Force outbound trunk.

Dial patterns & the outside-line prefix

If you use a leading 9 for an outside line, VoicerOnePBX strips it only when the remainder is a dialable number — so a bare 10-digit number that happens to start with 9 (e.g. a 905 area code) still routes correctly.

Where inbound calls go

Registering a trunk brings calls in, but you decide what happens to them on the Inbound Routes page — send each DID to an extension, an auto attendant, a ring group, a queue, a conference, voicemail, or the Fax Center.

Rate decks & least-cost routing optional

Upload your provider's rate CSVs to attach a cost to every call for reporting, and to drive least-cost routing when you have more than one trunk that can reach a destination.