SIP GLOSSARY TROUBLESHOOTING

SIP Response Codes: The Operator's Reference

SIPNEX ·

SIP response codes are the three-digit status codes a SIP server returns for every request, grouped into six classes: 1xx provisional, 2xx success, 3xx redirection, 4xx client error, 5xx server error, and 6xx global failure. The first digit tells you who failed and whether retrying makes sense; the specific code tells you why. The tables below cover every code you will realistically see in production — what the RFC actually says each one means, and what it usually means when your carrier sends it. For how these responses fit into the INVITE/200/ACK flow itself, start with what SIP is and how a call sets up.

The six response classes

The class — the first digit — carries most of the routing decision. Defined in RFC 3261:

ClassNameWhat it tells you
1xxProvisionalRequest received, still being processed. Informational — the call is progressing.
2xxSuccessThe request succeeded.
3xxRedirectionTry a different location for this user.
4xxClient errorThe request failed at this server. Fix the request or try another route — a modified retry can succeed.
5xxServer errorThe server itself failed. The request may be valid; another server may handle it.
6xxGlobal failureThe server has definitive information about the user, not just this route. Retrying elsewhere is expected to fail — do not route-advance.

The 4xx/6xx distinction is the one that matters for dialer and failover logic: a 4xx failed here, a 6xx failed everywhere.

The codes you will actually see on a trunk

RFC 3261 defines dozens of codes. These are the ones that show up in real trunk CDRs and SIP traces, with the RFC meaning and the usual trunk-context cause.

Call progress and success

CodeRFC meaningOn a trunk, usually
100 TryingNext hop received the request and is processing; stops INVITE retransmissionsNormal — the carrier acknowledged your INVITE
180 RingingThe user agent is alerting the user; may trigger local ringbackNormal — far end ringing
183 Session ProgressCall-progress information not otherwise classified; often carries early media SDPIn-band ringback or announcements from the carrier
200 OKRequest succeededCall answered; REGISTER or OPTIONS accepted

4xx — request failures

CodeRFC meaningOn a trunk, usually
401 UnauthorizedRequest requires authentication (from a UAS or registrar; proxies use 407)Normal digest-auth challenge — resend with credentials. Repeated 401s mean wrong password
403 ForbiddenServer understood but refuses; authorization will not help, do not repeatBad trunk credentials or IP ACL, blocked destination (e.g., international), unfunded account
404 Not FoundUser does not exist at the domain in the Request-URIInvalid or unallocated number; wrong dial plan or number format
408 Request TimeoutServer could not respond in time; client may retry laterFar end unresponsive; a SIP ALG or firewall eating responses; carrier timeout
480 Temporarily UnavailableCallee contacted but currently unavailable; may carry Retry-AfterUnregistered endpoint behind the number; invalid forwarding target; mobile off-network
486 Busy HereCallee not willing or able to take additional calls at this end systemGenuine busy; all channels or call-appearance slots in use at that endpoint
487 Request TerminatedRequest ended by a BYE or CANCELCaller hung up before answer — normal in dialer traffic, not an error
488 Not Acceptable HereSame meaning as 606, but only for this Request-URI; may succeed elsewhereCodec/SDP mismatch on this hop; SRTP or T.38 negotiation failure
491 Request PendingUAS had a pending request in the same dialog (glare)Simultaneous re-INVITEs — hold/transfer races

Less common but legitimate: 405 Method Not Allowed, 407 Proxy Authentication Required (the proxy-side twin of 401), 410 Gone, and 484 Address Incomplete (short-dialed or overlap-dialed numbers).

5xx — server failures

CodeRFC meaningOn a trunk, usually
500 Server Internal ErrorUnexpected condition; client may retry after several secondsCarrier SBC or switch fault; a malformed-but-parseable request tripping the far end
502 Bad GatewayGateway or proxy received an invalid response downstreamBroken downstream or PSTN gateway interop
503 Service UnavailableTemporary overload or maintenance; client should try an alternate server; may carry Retry-AfterCarrier congestion or capacity cap, maintenance windows — the expected trigger for failover routing

501 Not Implemented and 504 Server Time-out round out the class.

6xx — global failures

CodeRFC meaningOn a trunk, usually
600 Busy EverywhereBusy at all end systems; sent only when no other endpoint (e.g., voicemail) will answerRare on trunks — busy with global knowledge
603 DeclineCallee contacted but explicitly will not or cannot participate; may carry Retry-AfterHistorically a hard reject or DND. On US networks today: overwhelmingly analytics-based call blocking — check the reason phrase
604 Does Not Exist AnywhereAuthoritative: the user does not exist anywhereRare; a definitively bad number
606 Not AcceptableUser’s agent reached, but the session description (media, bandwidth, addressing) is not acceptable anywhereGlobal SDP/codec incompatibility — fix the offer, do not re-route

Because 6xx is a global failure, route-advancing on any of these wastes attempts and looks like redial abuse to analytics engines. Fail the call and diagnose.

Two codes that changed, and where to go deeper

603 no longer means what RFC 3261 says it means. Since March 25, 2026, per FCC order 25-15, the required notification when a US provider blocks a call based on analytics is SIP 603 with the reason phrase “Network Blocked” plus a Reason header — the variant known as 603+. Plain 603, 607, and 608 may no longer be used for that purpose. If your outbound traffic is drawing 603s, the reason phrase and Reason header tell you whether a human declined or a blocking engine did — and the header carries a redress contact. Full breakdown, including what to do about it, in our guide to SIP 603, 603+, and analytics blocking.

606 is the “fix your SDP” code. It shares its meaning with 488 — the offered media was not acceptable — but the scope differs: 488 says this hop cannot take the offer and the call may succeed elsewhere; 606 says no endpoint for this user will accept it. Codec lists, media types, and negotiation fixes are covered in the SIP 606 Not Acceptable troubleshooting guide.

How to triage an unfamiliar response

  1. Read the class first. 4xx: fix the request or try another route. 5xx: the far-end server broke; failover is reasonable, especially on 503. 6xx: definitive — stop retrying.
  2. Read the reason phrase and headers. A 603 with “Network Blocked” is analytics blocking, not a decline. A 606 or 488 may carry a Warning header naming the unacceptable media attribute. 480, 486, 500, and 503 may carry Retry-After.
  3. Confirm who sent it. A response generated by your own SBC or a mid-path proxy points at different fixes than one from the terminating carrier. The Via stack in the trace tells you.
  4. Correlate across calls. One 503 is noise; a burst of 503s on one route is a capacity event. Rising 603s concentrated on specific calling numbers is a caller ID reputation problem, not a signaling problem.

Frequently asked questions

What are SIP response codes?

SIP response codes are three-digit status codes defined in RFC 3261 that a SIP server returns for every request. They are grouped into six classes by first digit: 1xx provisional, 2xx success, 3xx redirection, 4xx client error, 5xx server error, and 6xx global failure. The class tells you where the failure sits and whether a retry makes sense; the individual code narrows down why.

What is the difference between a 4xx and a 6xx failure?

Scope. A 4xx means the request failed at the specific server that answered — a modified request or a different route can still succeed. A 6xx means the server has definitive information about the user: no route to that user will succeed, so route-advancing is pointless. That is why 488 (this hop cannot accept your media) and 606 (no endpoint anywhere will) are separate codes with the same underlying reason.

What does SIP 603 mean today?

RFC 3261 defines 603 Decline as the called party explicitly refusing the call. On US networks since March 25, 2026, however, FCC order 25-15 requires providers that block calls based on analytics to signal it with SIP 603 carrying the reason phrase “Network Blocked” and a Reason header — the 603+ variant. So a 603 in your CDRs today is far more likely to be a blocking engine than a human. Check the reason phrase and Reason header to tell the two apart.

Should my dialer retry on a 5xx response?

Cautiously. RFC 3261 allows a retry after several seconds on a 500, and 503 explicitly invites trying an alternate server — 503 is the standard trigger for failover routing, and it may carry a Retry-After header telling you how long to wait. What you should not do is hammer the same route immediately, and you should never auto-retry a 6xx response at all: it is a global failure, and repeated attempts read as redial abuse.

Why do I see 487 in my CDRs so often?

Because 487 Request Terminated is not an error. It is returned when a request ends via CANCEL or BYE before answer — in practice, the caller (or the dialer) abandoned the attempt while the far end was still ringing. In outbound dialer traffic a healthy share of 487s is normal. Treat a sudden change in the 487 rate as a signal about pacing or answer timing, not as a trunk fault.


Every code in this reference shows up in the real-time CDRs on SIPNEX SIP trunks — we are an FCC-licensed carrier, so the responses you reconcile are the responses we log. If you are staring at a trace full of 603s or 606s, the deep dives above will get you most of the way — and if the problem is your current route, test a SIPNEX trunk against it or compare our published rates.

SIPNEX

The carrier built by operators, for operators.

FCC-licensed carrier with its own STIR/SHAKEN SP certificate. Operator-owned. SIP trunks built for operators who dial at volume.