Forwarded calls fail when the carrier rejects the CLI

5 min read

Forwarded calls fail when the carrier rejects the CLI

A forward to a mobile stops, and the handset reports that call forwarding failed. On the outbound INVITE the From number was the original caller. The carrier refused that number.

Hosted PBX and white-label operators hit this when a customer forwards a DID to a mobile or another external number. MOR can present a DID you control, or present the original caller and add Diversion or History-Info on that trunk. The carrier decides which INVITE it completes. Test one forward on each trunk.

The carrier sees a number you do not own

Someone calls the customer’s DID. Call Flow, in the PBX Functions add-on, sends the call to a mobile. From on the outbound INVITE is the person who called.

Take one call. +1 202 555 0104 calls the DID +1 202 555 0173. Call Flow forwards to the mobile +1 202 555 0188. The trunk sees an outbound call from +1 202 555 0104. That number is absent from the trunk account. The carrier returns an error. The customer’s phone shows a failed forward.

Confirm it on the outbound leg. Read the SIP response on that provider attempt. A 403 that names the caller ID is this fault. A 404 for an unknown destination, or a codec mismatch, is another fault.

Three ways the call can leave

  1. Present a number you control. On the Forward action, set CallerID to From device or From DID. The mobile shows your number, for example +1 202 555 0173. A carrier that matches caller ID against the account can accept that number.
  1. Present the original caller, and add a header that names the forward. CallerID “Same as comes” leaves +1 202 555 0104 in From. Forward signaling on the provider adds Diversion, History-Info, or both, with a cause for why the call moved.
  1. Present the original caller with no header the carrier accepts. The carrier refuses the call. The customer reports that forwarding failed.

Telnyx rejects an outbound call whose caller ID number is not valid, with 403 Caller Origination Number is Invalid D35. Telnyx reads caller ID from P-Preferred-Identity, then P-Asserted-Identity, then Remote-Party-ID, then From. A correct From can lose to an earlier header.

A forward that keeps the original caller is a second Telnyx check. Caller A rang Telnyx number B, and the switch places a new outbound call from A to C. Telnyx allows that call when the inbound call from A to B is active and the outbound INVITE carries a Diversion header that shows B. In the example, B is +1 202 555 0173. A missing or wrong Diversion header, or no matching active inbound call, gets 403 Unverified origination number D51. Telnyx also rejects outbound calls to international destinations when it treats the caller ID as spoofing, and names 503 as the response, so the switch can try the next provider.

From 3 May 2022, Twilio forwards Diversion headers to the downstream carrier and checks headers that contain the Twilio domain. The number has to be a Twilio number on the account or a verified caller ID. A failed check causes Twilio to remove the header. The call can continue, and the next carrier sees the original number with no Diversion header.

DIDWW asks the PBX to send a Diversion header with the original DID and a diversion reason. DIDWW’s example is Diversion: <sip:+12025550199@sip.didww.com>;reason=unconditional. DIDWW checks that the DID belongs to the account and routes the call on a local route. You turn the diversion service on for that outbound trunk by asking DIDWW support. DIDWW offers this routing in the United States, the United Kingdom, Ireland, Italy, Spain, the Netherlands, and South Africa, and marks further conditions for Germany, Sweden, Switzerland, Thailand, Italy, Poland, and Portugal.

Those checks ask for Diversion. History-Info is absent from them. If the carrier’s own sheet names History-Info, test that value. If the sheet names neither header, test Diversion, then History-Info, then both.

What the two headers tell the carrier

Diversion names a number the call was diverted from, and a reason. History-Info lists the targets the request has passed, in order. The carrier uses the header to separate a forwarded call from a new call that presents someone else’s number.

On an external Call Flow forward, MOR adds the header with a cause from the Call Flow state:

Call Flow state Cause on the INVITE
Before Call 302 (unconditional)
Busy 486
No Answer 408
Failed 404

Before Call runs before the phone rings. Busy, No Answer, and Failed are the other states on that device.

None, the default, adds no header from this option. Diversion adds Diversion. History-Info adds History-Info. Both adds the two headers on the same INVITE.

On the test call, read the INVITE and match the number in the header to the number in that carrier’s document.

Set Forward signaling on the provider

Open Settings → Billing → Providers, edit the trunk, and find Forward signaling after Custom SIP Header. The field is on SIP and PJSIP providers. The values are None, History-Info, Diversion, and Both.

MOR adds the header when Call Flow forwards to an external number. A forward to a local device keeps the previous INVITE. An ordinary outbound call on the same trunk keeps it too. Star codes *72 (Before Call, 302), *52 (No Answer, 408), and *90 (Busy, 486) set an external forward and use this option. Set Failed (404) on the Call Flow screen.

The From number is a separate choice on the Forward action: From device, Same as comes, From DID, or Custom. “Same as comes – with Diversion” adds a Diversion string from the original To URI, and you can edit that string. Forward signaling is the provider option that writes the cause.

The Forward action can add P-Asserted-Identity from the DID or the extension, or add none. Telnyx may read that header before From.

On a PJSIP device, Send History-Info sends Asterisk redirect information. For an external forward with a cause, set Forward signaling on the provider. History-Info or Both on the provider disables Send History-Info and keeps the cause on the INVITE. Diversion on the provider leaves Send History-Info as it was.

A national Diversion number such as 0NNNN can be wrong for a carrier that wants E.164. Set Localize Diversion to Yes on that provider. Source rules then rewrite the Diversion number. The July 2026 development update records that Call Info shows the Diversion number from the CDR. Read the INVITE for the cause.

On M4, Diversion and History-Info are switches on the DID, separate from this provider field.

Test one trunk before the customer does

Place one call per provider, to a mobile you can see.

  1. Set CallerID on the Forward action to the number you want on the mobile.
  2. Set Forward signaling to the header named in that carrier’s document. Start with Diversion when the document names Diversion.
  3. Call the DID from an outside phone and let it forward.
  4. Write down the number on the mobile and the SIP code on the outbound attempt. On Telnyx, use the D35, D51, and 503 meanings above.
  5. Open the INVITE. Match the number inside Diversion or History-Info to the number that carrier asked for.
  6. On a failure, change one setting and call again. Try History-Info, then Both, when the carrier named no single header.

Keep the value that completes the call and shows the number you want. Run the same test on the next trunk. Each provider stores its own Forward signaling value.

Caller ID rules in the US and the UK

In the United States, 47 CFR 64.6301 requires a voice service provider, apart from the cases in 47 CFR 64.6304 and 64.6306, to implement STIR/SHAKEN in its IP networks and to authenticate caller ID on SIP calls it originates. Where the rule treats transmission as feasible, the provider sends that authenticated caller ID to the next provider. The FCC caller ID authentication page describes that obligation for providers on IP networks. Attestation on a forwarded call, and whether the next carrier completes the call, sit outside that rule. Test the trunk.

In the United Kingdom, from 29 January 2025, Ofcom’s note on calls from abroad expects providers to identify and block calls from abroad that display a UK landline number as the Presentation Number, the number the person sees, except a limited set of legitimate cases.

From 15 July 2027, Ofcom’s statement on scam calls from abroad expects the provider at the first UK entry point to mark the Presentation Number withheld on calls from abroad that show a +447 number, unless the call arrives on a channel that verifies it by design. Ofcom dates that change at 15 July 2027 and describes the displayed number as withheld. Whether your trunk treats a forward as one of these calls is that provider’s decision.

When the INVITE matches their document

Send the carrier the SIP response and the INVITE. If Diversion shows the number they asked for, the cause matches the Call Flow state, and the response is 403, this option has done what it can do. Ask which header and which number they accept on a forwarded call, and place the test again with that answer.

Open the provider and place one forward

Open the provider that carries this customer’s external forwards. Set Forward signaling. Call the DID from an outside phone and let it forward to a mobile. Keep the setting that carrier accepts and that shows the number you want.


Test one forward on this trunk

Open the provider, set Forward signaling, place one external forward to a mobile, and keep the setting that carrier accepts.

Contact us

Leave a Reply

Your email address will not be published. Required fields are marked *