Skip to content

FreePBX + UnlimCall — Flat-Rate SIP Trunk Setup

FreePBX is the most-deployed open-source PBX on the planet. UnlimCall is a flat-rate outbound SIP trunk that plugs into it in under 30 minutes. One seat price, unlimited outbound minutes, local caller ID in 33 markets.

From $5/agent/day ($99/seat/mo, US/CA)

33 live markets99.99% uptime SLA<50ms edge audioSTIR/SHAKEN signed (US/CA)

Why FreePBX shops move off metered trunks

FreePBX itself is free. The carrier bill is not. A busy outbound floor — 20 agents averaging 5 hours of talk time a day — generates around 6,000 connected minutes daily. At a mid-market DID and per-minute rate of ~$0.009/min that is $54/day, $1,080/mo for 20 seats. At $0.013/min it is $1,560/mo. The variable swings with every campaign push and every productive rep.

UnlimCall collapses that to $99/seat/mo regardless of minutes dialled. Twenty seats: $1,980/mo, fixed. No metered exposure from high-volume campaigns.

How to connect FreePBX to UnlimCall

FreePBX supports PJSIP (recommended) and chan_sip trunks. The steps below use PJSIP, which is the default driver on FreePBX 15 and later.

  1. Gather your trunk details from onboarding. UnlimCall provides a SIP domain (regional), your provisioned local DID(s), and the IP address range to whitelist or credential pair for registration-based auth.
  1. Add a PJSIP trunk in FreePBX admin. Go to Connectivity → Trunks → Add Trunk → Add SIP (chan_pjsip) Trunk.
  1. Configure the General tab. Set a trunk name (e.g. unlimcall-us). Leave the Outbound CallerID field blank here — you will set it per route.
  1. Configure the pjsip Settings → General tab.
  • Username: your assigned trunk username (if using credential auth)
  • Secret: your assigned trunk password
  • Authentication: set to Outbound for registration-based; set to None if using IP-based auth and add your FreePBX server's public IP to your UnlimCall IP whitelist
  • SIP Server: the UnlimCall regional SIP domain supplied at onboarding
  • SIP Server Port: 5060 (UDP) or 5061 (TLS)
  • Contact User: your trunk username
  1. Configure the Codec tab. Enable G.711 µ-law (ulaw) and G.711 a-law (alaw) as primary codecs. OPUS is supported if your FreePBX version and extensions support it. Disable video codecs to reduce SDP negotiation overhead.
  1. Add an outbound route. Go to Connectivity → Outbound Routes → Add Outbound Route. Set the trunk sequence to your UnlimCall trunk. Add a dial pattern matching your outbound destinations — for example 1NXXNXXXXXX for US 10-digit numbers with leading 1, or NXXNXXXXXX for 10-digit without.
  1. Set outbound caller ID. In the outbound route settings, set the CallerID to the local number provisioned by UnlimCall for that market. For US/CA numbers, STIR/SHAKEN signing is applied at the trunk level — no FreePBX-side configuration required.
  1. Apply config and test. Click Apply Config. Place a test call from an extension. Verify the outbound caller ID on the receiving end, check codec negotiation in the FreePBX log (/var/log/asterisk/full), and confirm audio is clean both ways. Setup time on trunk level is typically under 2 seconds from FreePBX's perspective.

chan_sip note: If your FreePBX installation uses the legacy chan_sip driver, the configuration path is Connectivity → Trunks → Add SIP (chan_sip) Trunk. Peer details follow the same structure: host=, username=, secret=, fromuser=, fromdomain=, canreinvite=no, qualify=yes. Codec configuration is in the codecs field (allow=ulaw&alaw).

What you get

FeatureBenefit for FreePBX deployments
Flat $/agent/dayNo per-minute exposure from high-volume campaigns or long-duration calls
Local caller ID, 33 live marketsProvisioned for your account at onboarding; improves answer rates vs. out-of-area numbers
STIR/SHAKEN signed (US/CA)A-level attestation applied at trunk level; no extra FreePBX config
Sub-50ms edge audioReduces jitter artifacts at the Asterisk layer; lower talk-off and dropped audio events
IP or registration authWhitelist your PBX IP for stateless auth, or use SIP registration — both supported
G.711 + OPUS codec supportMatch your endpoint mix without forced transcoding
No channel limits imposed by seat pricingSeat count determines price, not concurrent call caps (subject to your plan terms)

The math: flat-rate vs metered SIP trunk

A 15-agent outbound sales floor on the US/CA plan:

  • UnlimCall: $99/seat/mo × 15 = $1,485/mo, fixed.
  • Metered SIP (illustrative): 15 agents × ~9,000 connected min/mo × ~$0.010/min = $1,350/mo at moderate utilisation — rising to $1,800 at 12,000 min and $2,250 at 15,000 min. (Rate modelled on published competitive SIP trunk pricing; confirm current rates with your provider.)

Break-even sits around 9,900 min/agent/mo. Above that threshold — where productive outbound agents typically land — flat-rate is cheaper and is always more predictable. Run your numbers →

Frequently Asked Questions

Does UnlimCall support FreePBX's PJSIP and the older chan_sip driver? Both are supported. PJSIP is recommended for FreePBX 15 and later due to improved TLS/SRTP support and easier trunk-level debugging. chan_sip configuration is straightforward on older deployments.

Can I run multiple trunks for failover? Yes. Configure a second trunk entry pointing to the UnlimCall secondary SIP endpoint (provided at onboarding) and add it as a secondary trunk in your outbound route. FreePBX will failover automatically on 5xx responses or timeout.

What if my FreePBX is behind NAT? Set nat=yes (chan_sip) or enable the rtp_symmetric and rewrite_contact options in PJSIP. Ensure your FreePBX external IP is correctly declared in SIP settings. UnlimCall's trunk layer handles NAT traversal on the carrier side.

Is there a per-channel or concurrent call limit? Seat pricing determines the base; concurrent call capacity is set at onboarding based on your seat count. If your campaign peaks require burst headroom above the default, contact onboarding before launch.

Ready to move your FreePBX floor to flat-rate?

Drop in the trunk, set the route, dial unlimited. Pick a country → or calculate your pricing →.