Presenting Original Caller ID on Diverted (Call-Forwarded) Calls
1 of 1 rows
| Topic | Presenting a calling number that is not allocated to you, where the call results from a call forward or diversion |
1. What you can do
Where one of your numbers receives a call and forwards it elsewhere, you may present the original caller's number to the final recipient rather than your own forwarding number.
Two conditions apply:
- The call must be a genuine diversion of a real inbound call.
- It must carry a SIP
Diversionheader naming the number that was called and forwarded, and that number must be one you hold on the Atom network.
Without the
Diversion header we cannot tell a genuine forward from a customer simply presenting a number they don't hold. Those calls are rejected or have the CLI replaced.Read Section 6 before you build to this - there are things about the regulatory position you should know, and they affect how much protection this pattern actually gives you.
2. What to send us
All requirements apply to the forwarded (outbound) leg you send to Atom.
2.1 Headers
5 of 5 rows
From | The original caller's number - unless the caller withheld their CLI, in which case see Section 3. |
P-Asserted-Identity | The original caller's number. Where From carries the number, the user parts must match. |
Diversion | Mandatory. The diverting number - your number that received and forwarded the call - with a reason parameter. Must be a number you hold on our network. |
Privacy | Required where the original caller withheld their CLI. See Section 3. |
To / Request-URI | The final destination. |
2.2 Number format
Use the format in your interconnect schedule. Unless it says otherwise, that is E.164 with the
61 country code, no leading +, no spaces or punctuation - for example 61491570006.Do not present:
- 13, 1300, 1800 or 1900 numbers as the calling number. This is prohibited outright, including on diverted calls. If the original caller presented one of these to you, you cannot pass it through - present your diverting number instead and keep the
Diversionheader. - Numbers from unallocated ranges, including the ranges reserved for film and television use.
- Numbers that cannot receive a return call.
- Extension-length or otherwise non-conformant digit strings.
2.3 The reason parameter
Set
reason to the value that reflects what actually happened. The defined values are:unknown, user-busy, no-answer, unavailable, unconditional, time-of-day, do-not-disturb, deflection, follow-me, out-of-service, awayUse
unknown only where your platform genuinely doesn't have the condition. Don't default everything to unconditional for convenience - we rely on this when investigating CLI complaints raised against your traffic.2.4 Chained diversions
Where a call is forwarded more than once,
Diversion headers stack: each diverting party is added as an additional header (or an additional entry in a comma-separated header), most recent first. Don't collapse the chain to a single header, and don't overwrite an inbound Diversion header with your own.2.5 History-Info
We use
Diversion as the primary diversion indication. History-Info may be sent in addition and will be preserved, but it is not accepted in place of Diversion unless agreed in your interconnect schedule.3. Privacy - withheld numbers
If the original caller withheld their number, that suppression must survive the diversion. Omitting the number from your own display logic is not enough; the restriction has to be signalled onward so no downstream network presents it.
Privacy: id on its own is not sufficient. It only withholds P-Asserted-Identity at the trust boundary — it does nothing about From or Contact. A call that sets Privacy: id while leaving the caller's number in the From URI still discloses it in cleartext.On the forwarded leg:
- Anonymise the
FromandContactURIs - conventionally"Anonymous" <sip:anonymous@anonymous.invalid>. Alternatively sendPrivacy: user;idand rely on us to anonymiseFrom; confirm which applies to your trunk before deploying. - Include
Privacy: id. - Keep
P-Asserted-Identitywith the original caller's number so the call can be traced if required. Mark it private - don't delete it. - Don't populate any display name that gives away the withheld identity.
This breaks most often when a platform rebuilds the outbound INVITE rather than relaying it, and the inbound privacy indication is lost in the rebuild. Test this path explicitly.
4. Worked example
0491 570 006 calls (02) 5550 1234, which forwards unconditionally to 0491 570 156. The recipient should see 0491 570 006.Numbers below are from the ACMA film/TV reserved ranges and IPs are from the documentation range, so this exact INVITE would fail the validation in Section 5. Substitute live numbers when testing.
text
INVITE sip:61491570156@[provider-sbc]:5060 SIP/2.0
Via: SIP/2.0/UDP 203.0.113.10:5060;branch=z9hG4bK7a1c3e...
Max-Forwards: 69
From: <sip:61491570006@203.0.113.10>;tag=b00286f5d2c9f07d
To: <sip:61491570156@[provider-sbc]>
Call-ID: 30d79b547e329d0f3bf2dec353b56eb4@203.0.113.10
CSeq: 200 INVITE
Contact: <sip:61491570006@203.0.113.10:5060>
Diversion: <sip:61255501234@203.0.113.10>;reason=unconditional
P-Asserted-Identity: <sip:61491570006@203.0.113.10>
Content-Type: application/sdp
Content-Length: 257From and P-Asserted-Identity carry the original caller. Diversion carries your number, evidencing that this is a forward. No Privacy header because the caller didn't withhold.4.1 Defects to look for in your own traffic
- A display name of
Anonymousnext to a visible number, with noPrivacyheader - e.g.Contact: Anonymous <sip:61491570006@...>. This almost always means an inbound privacy request was half-dropped in a B2BUA rebuild: the display name survived, the privacy indication and URI anonymisation didn't. Trace the inbound leg; if the caller withheld, apply §3 in full. Privacy: idset but the number still in theFromURI. See Section 3.- One
Diversionheader on a multi-hop diversion. See Section 2.4. reason=unconditionalon everything. See Section 2.3.- A
Diversionnumber in a range you don't hold. Rejected at validation.
5. What we won't carry
We validate diverted calls before carriage. Where a call presents a number you don't hold:
7 of 7 rows
No Diversion header | Rejected, or CLI replaced with your allocated number |
Diversion number isn't one you hold on our network | Rejected |
| No correlating inbound call for the asserted diversion | Rejected; referred for investigation |
| Calling number is 13, 1300, 1800 or 1900 | Rejected |
| Calling number is in an unallocated or non-conformant range | Rejected |
| Malformed or non-E.164 format | Rejected |
| Inbound privacy indication not carried forward | Rejected, or privacy re-applied |
Repeated non-compliant diverted traffic is treated as suspected CLI spoofing. We are obliged to investigate it, notify others in the call chain, and report to the ACMA.
6. What you should understand about the compliance position
This section is short but it matters. Don't treat the pattern above as a regulatory safe harbour.
There is no rule that authorises this. No Australian legislation, code or guideline says a diverted call should present the original caller's number, and none mentions the
Diversion header at all. The Diversion header comes from an IETF specification (RFC 5806), not from anything Australian. What exists is a carve-out in industry code C661:2022 that relieves transit and terminating carriers of the duty to validate calling number accuracy on calls "received via call redirection or call forwarding from a B-Party." That carve-out clearly assumes original-number pass-through happens - but it doesn't mandate it, and it doesn't authorise it.The general rule still applies to you. C661 requires originating providers to prevent carriage of calls where the caller doesn't hold rights of use to the number presented. If a forwarded call is characterised as a new origination by your platform rather than a genuine diversion, that rule bites in full and the overstamp is prohibited.
So everything turns on whether the diversion is real. That is why we require the
Diversion header and why we correlate it against an inbound call. It's the evidence that distinguishes your traffic from spoofing.The line you must not cross. Spoofing under C661 means unauthorised use of a number combined with an attempt to mask or mislead the recipient about who is calling. A genuine forward showing the genuine original caller does neither - nothing is masked, and the recipient sees the person who actually called. But a
Diversion header naming a number you don't hold, or asserting a forward that never happened, supplies both limbs of that definition. The header is not a formality.Our requirements are contractual. Because the regulatory position is thin, the requirements in Section 2 and Section 3 are [Provider]'s interconnect terms rather than restatements of a rule. Other carriers may require something different - don't assume a configuration that works with us will be accepted elsewhere.
On privacy specifically. The requirement in Section 3 is ours. The industry guideline on Calling Number Display recommends that a caller's number blocking survives a diversion, but it is a guideline drafted as "should", not a binding code. We enforce it as a contractual requirement, and we'd expect any well-run network to do the same.
7. Your obligations
By sending diverted calls with an overstamped calling number over our network, you warrant on each call that:
- The call is a genuine diversion of an inbound call to the number in the
Diversionheader. - You hold rights of use to that number.
- The number presented as the calling number is what you received from the original caller, unaltered.
- Any caller-applied CLI restriction has been carried forward per Section 3.
- You'll retain records sufficient to demonstrate the above and provide them on request within your interconnect schedule's timeframes, including in response to an ACMA enquiry.
You remain responsible for your own downstream customers and resellers in respect of the traffic you send us.
8. FAQ
Can I present any number I like as long as I add a
Diversion header?
No. The header asserts that a specific number you hold forwarded a specific call, and we validate both. Asserting a diversion that didn't happen is spoofing and is escalated as such.The recipient is seeing my forwarding number instead of the original caller.
Either the
Diversion header was missing and we substituted a compliant number, or your platform is putting the diverting number in From and P-Asserted-Identity instead of the original caller. Check Section 2.1, then raise a ticket with a SIP trace of the outbound INVITE.Can I use
History-Info instead of Diversion?
Not by default. See Section 2.5.What about overstamping that isn't a diversion - a contact centre presenting one 1300 callback number, say?
Different situation, different rules, and note that 13/1300/1800/1900 numbers can't be used as a calling number at all. Talk to us before configuring it.
Does the original caller's number need to be Australian?
Internationally-originated calls are handled differently. Talk to us before diverting them with the original number presented.
My platform can't populate the
Diversion header.
Then present a number you hold - typically the diverting number - until it can. We can't carry an unvalidated overstamped calling number.9. Further reading
- C661:2022 Reducing Scam Calls and Scam SMs - the relevant provisions are clause 4.2.1 and its NOTE, clause 4.2.4, and the definition of CLI Spoofing - https://www.austelco.org.au/wp-content/uploads/2025/06/C661_2022.pdf
- G522:2016 Calling Number Display, clause 3.1.10 (privacy across diversions) - https://www.austelco.org.au/wp-content/uploads/2025/06/G522_2016.pdf
- IGN 009 CLI Management (Industry Guidance Note, 2020) - https://www.austelco.org.au/wp-content/uploads/2025/06/IGN009-CLI-Management_-2020.pdf
- C566:2023 Number Management - Use of Numbers by Customers - rights of use
- RFC 5806 Diversion Indication in SIP - https://datatracker.ietf.org/doc/html/rfc5806
- RFC 3325 - defines
Privacy: id - ACMA - Caller ID scams - https://www.acma.gov.au/caller-id-scams
This article sets out Atom's interconnect requirements and our reading of the applicable framework. It is not legal advice. Where it conflicts with your interconnect schedule, the schedule prevails.
