Toll Free Caller ID on a local DID

I’ve got a PBX (FreePBX Distro) that has two DID’s. A toll free and a local. The toll free is only for inbound calls and the local is used for all outbound calls.

The owner wants it so that the CLID of calls they make (outbound) shows the Toll free DID (even though they are calling out through the local DID) so that the local DID remains “hidden.”

As I understand it, this is possible by setting the “from” field as the TF DID and setting the P-Asserted-Identity as the actual local DID CLID.

A) Am I understanding this correctly
B) How do I accomplish this in the FreePBX web UI

I see in advanced sip settings I need to set “SIP sendrpid = pai” but I’ve also read that this only effects NEW extensions. How do I apply this setting to existing extensions (if this even is the proper way to achieve my goal).


After talking with my sip carrier I believe I have a solution.

  1. Add a second local DID to the account and PBX for outbound calls only
  2. Add the following into the PBX extensions_custom.conf

exten => s,1,NoOp(Adding P-Asserted-Identity)
exten => s,n,SipAddHeader(P-Asserted-Identity: “1234567890” )
exten => s,n(done),MacroExit()

note: “1234567890” should be the REAL CLID of the local DID. This is used by the carriers for routing and billing purposes.

  1. Under advanced sip settings, set the SIP sendrpid = pai. This will take care of any future configured extensions

  2. Under existing extensions set “sendrpid = send p-asserted-identity header”

  3. Under the trunk settings for the Local DID set “Outbound CallerID” to what we wan the called party to see (the toll free number).

  4. Under the trunk settings for “CID Options” set “force trunk cid”

What type of trunks do you have?

First, do your trunks allow you to set a CID.

If So, each extension has a field “Outbound CID”. That’s where you’d put the desired CID. There are also similar fields in Route and Trunk setup.

Some carriers allow you to set this with only a CID of a DID you “Own”.