Best Strategy - Multiple Company Trunks and Phone Numbers


We have one PBX that we want to serve 5 small companies. Each company has one phone number, but may need additional numbers per company later. We need to have at least one physical phone with the ability to answer any of the 5 companies phone numbers but we also want to assure that outbound calls are from the individual companies respective phone numbers.

In this situation is it best to have trunks with phone numbers for each company, or can we have one trunk with the 5 companies phone numbers?


If all the numbers are with a single provider I’d expect the calls to come in on a single trunk.

Yes, we can have all the numbers with one provider over a single trunk. How do we handle splitting those numbers to the different companies and keep them separate?

If you are using SIP “trunks”, your problem is allocating incoming calls to trunks anyway. This is covered in some of the other current threads.

OK, Let’s try another way.
I have one SIP trunk and 5 phone numbers. Can I send those numbers to specific extensions and/or call groups?

Write diaplan for the context the calls are delivered to route the calls to the appropriate dialplan or endpoints.

exten => 1234,1,Goto(company1-main,s,1)

exten => 2345,1,Goto(company2-main,s,1)

exten => 2222,1,Dial(PJSIP/company2-2222)

exten => 3434,1,Dial(PJSIP/company1-3434)

exten => s,1,Playback(tt-monkeys)

exten => s,1,Playback(tt-weasels)

1 Like

We are using FreePBX and some of the files have notes in the header to not modify the files as they are managed by the GUI.

How would we do this in the FreePBX GUI?

Wrong place to ask. We don’t, in general know. Peer support for FreePBX is provided at


Here’s what I think your situation is:

You have 1 provider and 5 DIDs. You’d like
a) a single ‘receptionist’ to be able to answer any call
b) you’d like each company to get inbound calls to their extension(s)
c) unstated, but I’m assuming you’d like each company’s outbound calls to show their DID to the called party.

Assuming this is correct, you can solve this easily in freepbx

  1. Set up each company’s extensions in bins.

‘Receptionist’ - Exten 100
Company A - 1000-1999
Company B - 2000-2999
Company C - 3000-3999 (and so on)

Set up RingGroups (this assumes you want the Receptionist to ring on each call) for each Company
RingGroup ‘CompanyA’, might ring 100, 1000, 1100, etc.
RingGroup ‘CompanyB’ might ring 100, 2000, 2100, etc.

Set up your Trunk to use and register the 5 lines with the 1 Provider
Set up 5 Inbound Routes; set the DID number for each to be the DID (business line) for Company’s A, B, C …
Set the Destination as the RingGroup matching Company A, B, C

Now all incoming calls should be routed as you’d like; Company A can also call any extension for any Company (exten 1001 can call 4001).

Outbound - you want anyone dialing out from Company A to have THEIR callerid shown to callers
Define 5 Outbound routes; name them CompanyA, CompanyB, etc.
The first difference will be the callerid the call should originate from, so set the RouteID to that of each company and set it to override the extension.

Next, you need to set the Dial Patterns. Set these up to allow all the call types you would normally want. The normal pattern in this section is:
prepend + prefix match pattern / CallerID

for each Route, use the " / CallerID" section to mark the Company.

So, the pattern for Company A would be 1XXX; for company B, 2XXX, etc.

Let’s say Company A is located in NYC (212 area code) and you want as one of your patterns to allow 7 Digit dialing and you are using FlowRoute which requires 11 digits (the 1 before the 10 digits).

You Dial Plan for that line would be:
1212 in prepend
NXXXXXX in match pattern
1XXX in the “/ CallerID” section

In Trunk Sequence, select the Outbound Trunk for Company A.

For billing/reconciliation of use, you’ll need to use either the provider’s tracking or the CDR report.

If I have a typo or two, please excuse me. I’m using this technique for the two friends who’s lines I host on my PBX.



Thank you for the reply. Yes, you understood the situation correctly. I wish we would have connected sooner, it would have saved me a ton of trial and error. In the end that is almost exactly the same as what I got to work.

One thing to note for any others that encounter a similar situation is that in my case I needed to set the trunk CID Options to “Force Trunk CID”. Without this inbound calls to any of the numbers were not getting through at all. The trunk provider is Twilio for this configuration.

For the outbound routes we set “Override Extension” to yes. Which seemed like the right thing to do unless you know a reason why we should not do that.

We were also able to setup IVR on all DID lines (3 currently). We will probably add some additional features to the IVRs.

Good point on the billing. We will need to visit this and see how to manage that. Since this is a new installation we have yet to figure that out. Any suggestions are appreciated.