SIP 603 Decline is a global failure response — it means the called party refused the call and forking branches should stop. It is widely misused: some endpoints send 603 when they should send 486 Busy Here, and some forking proxies misinterpret 603 as a hint to keep trying.
SIP 603 Decline is a 6xx-class global failure response. The 6xx class as a whole means the request cannot be completed at any location — not just at the destination contacted, but anywhere. 603 specifically means the called party explicitly declined the call.
The intent behind 603 is to tell forking proxies to stop trying. If a call is being forked to multiple endpoints (desk phone, mobile, secondary) and one of them returns 603, the proxy should cancel the other branches and propagate 603 back to the caller. Compare this to 486 Busy Here, which only stops the one branch that returned it.
In practice, 603 is one of the most misused response codes in SIP. Many endpoints and PBXes send 603 when they should send 486, and many forking proxies do not respect the global-failure semantics.
The 6xx class has four members. Each carries different semantic weight:
| Code | Meaning | Forking effect |
|---|---|---|
| 600 Busy Everywhere | The user is busy at all locations | Stop all branches |
| 603 Decline | The user explicitly refused the call | Stop all branches |
| 604 Does Not Exist Anywhere | The user does not exist at any location | Stop all branches |
| 606 Not Acceptable | The session description is unacceptable | Stop all branches |
What separates 6xx from 4xx (which also includes failure responses like 486 Busy Here) is that 6xx is global. A 4xx response only describes the state of the specific endpoint that responded; the proxy may still try other branches. A 6xx response says the call should not be retried anywhere.
The endpoint cannot accept the call right now because it is on another call or otherwise busy. Use this when the user might be reachable on another device. The proxy may still fork to alternate destinations.
A CANCEL arrived before the INVITE got a final response. Use this only after CANCEL is processed. It is not a rejection by the user — it is the protocol confirming that a canceled transaction was terminated.
The user has refused the call and does not want it to ring elsewhere. Use this when the rejection is meaningful at all locations — the user pressed reject specifically, or do-not-disturb is enabled at the user level rather than the device level.
If the user has a desk phone, mobile, and tablet all ringing, and rejects the call from the desk phone, what should the desk phone send? If the rejection means “I don't want to take this call right now on any device,” 603 is correct. If the rejection means “not on this device, try my mobile,” 486 is correct. Many phones default to 603 for simplicity, even when 486 would be more appropriate.
The forking implications of 603 are why getting it right matters. Consider a typical hunt group with three endpoints:
An RFC-compliant proxy treats this as a global failure and:
If the desk phone had returned 486 instead, the proxy would have ignored that branch and waited for mobile or secondary to answer.
This is why 603 is often called a “global reject” or “final reject” in vendor documentation. It carries weight that 486 does not.
When 603 appears in a trace, the questions to ask are about intent and effect:
The most common production fix is reconfiguring endpoints to send 486 instead of 603 when the rejection is local rather than global. This restores expected hunt group and follow-me behavior.
SIP 603 Decline is a global failure response indicating the called party explicitly refused the call. It tells forking proxies to stop trying alternate destinations and propagate the rejection back to the caller. It differs from 486 Busy Here (which only fails one branch) by carrying global meaning across all forking branches.
SIP 486 Busy Here means the specific endpoint cannot accept the call but other endpoints might. The proxy may continue trying alternate branches. SIP 603 Decline means the user has refused the call globally — all forking branches should be canceled and the rejection propagated back to the caller. Many phones incorrectly send 603 when 486 would be more appropriate.
603 is a global failure response. RFC 3261 requires forking proxies to cancel all parallel branches when 603 is received. If your desk phone sends 603 when the user rejects a call, the proxy will stop ringing the mobile and secondary devices. The fix is to configure the desk phone to send 486 Busy Here for local rejections instead of 603.
Paste your SIP trace into SIPSymposium. The analyzer identifies 603 vs 486 misuse, missing CANCEL propagation, and forking-related rejection patterns.