Home / Training / Lesson 11
VoIP Training · Lesson 11 of 15

SIP response codes reference for wholesale VoIP

What each SIP response class means between carriers, the codes that matter, how they map to Q.850 causes, and when to fail over.

By VoxComms · · 6 min read

Every failed call in a wholesale network leaves a three-digit footprint: the SIP final response that ended it. Lesson 9 showed how to work the handful of codes you meet every day. This lesson is the reference you keep open next to the CDR screen: what each class of response means, the codes that matter in carrier traffic, how they map to telephone-network cause values, and — most important — whether the switch should try another vendor or stop.

How to read a response code

The first digit gives the class. The other two narrow it down. A device that receives a code it does not recognise is supposed to treat it like the x00 of the same class, so an unknown 499 behaves like 400.

ClassMeaningFinal?Wholesale reading
1xxProvisional – still workingNoProgress: the call is moving. Watch the time between INVITE and the first 18x (that is your PDD).
2xxSuccessYesThe call is answered and billing starts. Make sure it is a real answer (see FAS in Lesson 7).
3xxRedirectYesRare between carriers. Most switches either ignore it or treat it as a failure.
4xxClient / request problemYesSomething about this request or number is wrong, or the subscriber is unavailable.
5xxServer problemYesThe remote platform could not handle the call. Often a reason to try another vendor.
6xxGlobal failureYesThe answer is final everywhere – do not retry the same number.

Provisional responses (1xx)

The 4xx codes that matter

CodeWhat it usually means between carriersFirst action
400 Bad RequestMalformed message, often a header the far end cannot parseCompare a working and a failing INVITE header by header
401 / 407Authentication challenge (Unauthorized / Proxy Authentication Required)Normal for credential-based trunks; repeated challenges mean wrong username or password
402 Payment RequiredSome platforms use it for “no balance”Check prepaid balance on both sides
403 ForbiddenNot allowed: IP, account, destination or balanceSee the 403 order of checks in Lesson 9
404 Not FoundNumber unknown or no route for the prefixCheck number format and tech prefix first
408 Request TimeoutNo final answer in timeLook for a slow or unreachable hop; compare with PDD
410 GoneNumber used to exist, now disconnectedTreat like an invalid number; do not retry
480 Temporarily UnavailableSubscriber not reachable – or a vendor hiding a capacity problemCheck whether 480s are spread across numbers or concentrated on one vendor
481 Call/Transaction Does Not ExistA BYE or re-INVITE for a call the other side has forgottenUsually a timer or NAT issue mid-call; check session timers
482 / 483Loop Detected / Too Many HopsRouting loop: two partners sending the same call back and forth
484 Address IncompleteNumber too short for the destinationCustomer is sending incomplete numbers or a digit was stripped
486 Busy HereSubscriber genuinely busyPass back to the caller, do not fail over
487 Request TerminatedCaller hung up (CANCEL) before answerNormal; a very high share can mean long PDD or no ringback
488 Not Acceptable HereNo codec or media format in commonCompare the SDP codec lists on both legs

The 5xx and 6xx codes

CodeWhat it usually meansFirst action
500 Server Internal ErrorFault on the remote platformFail over; ticket the vendor if it repeats
502 Bad GatewayThe vendor’s own upstream failedFail over; ask which leg failed
503 Service UnavailableOverload, channel limit reached, or route downFail over; check your concurrent calls against the agreed limit
504 Server Time-outThe vendor did not hear back from its upstreamFail over; rising 504s often precede a full outage
600 Busy EverywhereBusy on every device of the subscriberDo not retry
603 DeclineCalled party or network refused the callDo not retry; many in a row can mean the destination network is blocking your CLI
604 Does Not Exist AnywhereNumber does not existDo not retry; check number format
606 Not AcceptableSession description not acceptable anywhereTreat like 488

SIP codes and Q.850 cause values

Calls that leave the IP world and enter a mobile or fixed network are cleared with a numeric cause value (from the ITU-T Q.850 list). Gateways translate between the two, and many vendors add the original cause in a Reason header, for example Reason: Q.850;cause=17. That header is often more honest than the SIP code itself.

CauseNameUsually appears as
1Unallocated number404
16Normal call clearingBYE after an answered call
17User busy486
18 / 19No user responding / no answer408 or 480
21Call rejected403 or 603
28Invalid number format484
34No circuit available503
38 / 41Network out of order / temporary failure503 or 500
127Interworking, unspecified500

Exact mappings differ between vendors. Learn each partner’s habits and write them down.

Fail over or stop? A decision guide

Every failure code is a routing decision. Retry the wrong ones and you add seconds of post-dial delay, pay for useless attempts and annoy subscribers who are simply busy. Retry too few and you lose calls a second vendor could have completed.

Vendor returnsa final failure About the subscriberor the number? Stop: return code486, 404, 484, 410, 487, 6xx Try next vendor500, 502, 503, 504, 408* yes no
A simple rule: failures about the subscriber stop; failures about the vendor fail over. (*408 only if PDD budget remains.)

Practical rules most carriers end up with:

  1. Never fail over on 486, 487 or 6xx. The answer would be the same on any route.
  2. Usually stop on 404, 410 and 484. The number is wrong. Exception: if one vendor returns 404 for a range that others complete, that vendor simply lacks the route — fail over and ticket them.
  3. Fail over on 5xx. These describe the vendor, not the subscriber.
  4. Treat 480 and 403 per vendor. Some vendors use them honestly, others to mean “no capacity”. Decide based on evidence from your CDRs.
  5. Cap the attempts. Two or three vendors per call and an overall time budget (for example 15–20 seconds) keep PDD under control.
  6. Return a clean code to the customer. If every vendor failed, pass back the most meaningful code (often the last one, or a 503) rather than a confusing internal one.

Reading codes as a pattern

A single code tells you about one call; the mix tells you about a route. A short report of final codes per vendor and destination for the last hour often finds problems before KPIs move. For example, with invented numbers:

Vendor X → Country Z mobile, last 60 min, 1,200 attempts
  200 OK ............ 492  (41%)
  486 Busy .......... 118  (10%)
  487 Cancelled ..... 230  (19%)
  480 Unavailable ...  96  ( 8%)
  503 Unavailable ... 264  (22%)   ← normally under 2%

Busy and cancelled shares look normal for mobiles; the 503 share is not. That points to a capacity limit or a fault at Vendor X, not to the destination.

Key takeaways

  • The first digit is the class: 1xx progress, 2xx answer, 4xx request or subscriber, 5xx server, 6xx global.
  • 183 carries early media; a long 183 followed by an instant answer can indicate FAS.
  • The Reason header with a Q.850 cause is often more precise than the SIP code.
  • Do not fail over on 486, 487 or 6xx; do fail over on 5xx; decide 403 and 480 per vendor.
  • Watch the mix of final codes per vendor – a rising 503 share is an early warning.

Quick quiz

1. A vendor answers with 486 Busy Here. Should the switch try the next vendor?

No. The subscriber is busy; another route would get the same answer and only add delay and cost.

2. What does Reason: Q.850;cause=34 tell you?

No circuit available – a capacity problem, usually shown as 503, and a good reason to fail over.

3. Two partners keep sending the same call to each other. Which codes might you see?

482 Loop Detected or 483 Too Many Hops.

Examples in this course use invented names (Vendor X, Customer Y, Country Z) and documentation IP ranges. Menu names and options differ between softswitch versions; always check your own system and vendor documentation.