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.
| Class | Meaning | Final? | Wholesale reading |
|---|---|---|---|
| 1xx | Provisional – still working | No | Progress: the call is moving. Watch the time between INVITE and the first 18x (that is your PDD). |
| 2xx | Success | Yes | The call is answered and billing starts. Make sure it is a real answer (see FAS in Lesson 7). |
| 3xx | Redirect | Yes | Rare between carriers. Most switches either ignore it or treat it as a failure. |
| 4xx | Client / request problem | Yes | Something about this request or number is wrong, or the subscriber is unavailable. |
| 5xx | Server problem | Yes | The remote platform could not handle the call. Often a reason to try another vendor. |
| 6xx | Global failure | Yes | The answer is final everywhere – do not retry the same number. |
Provisional responses (1xx)
- 100 Trying – the next hop received the INVITE. It stops retransmissions but says nothing about the far end. If you only ever get 100 and then silence, the problem is further down the chain.
- 180 Ringing – the called phone is alerting. Your switch usually plays its own ringback tone to the caller.
- 183 Session Progress – carries SDP so the caller can hear early media: real ringback, an announcement, or a recorded message. Many routes send 183 instead of 180. A long early-media phase followed by a 200 OK with no ringing is one of the signatures of false answer supervision.
The 4xx codes that matter
| Code | What it usually means between carriers | First action |
|---|---|---|
| 400 Bad Request | Malformed message, often a header the far end cannot parse | Compare a working and a failing INVITE header by header |
| 401 / 407 | Authentication challenge (Unauthorized / Proxy Authentication Required) | Normal for credential-based trunks; repeated challenges mean wrong username or password |
| 402 Payment Required | Some platforms use it for “no balance” | Check prepaid balance on both sides |
| 403 Forbidden | Not allowed: IP, account, destination or balance | See the 403 order of checks in Lesson 9 |
| 404 Not Found | Number unknown or no route for the prefix | Check number format and tech prefix first |
| 408 Request Timeout | No final answer in time | Look for a slow or unreachable hop; compare with PDD |
| 410 Gone | Number used to exist, now disconnected | Treat like an invalid number; do not retry |
| 480 Temporarily Unavailable | Subscriber not reachable – or a vendor hiding a capacity problem | Check whether 480s are spread across numbers or concentrated on one vendor |
| 481 Call/Transaction Does Not Exist | A BYE or re-INVITE for a call the other side has forgotten | Usually a timer or NAT issue mid-call; check session timers |
| 482 / 483 | Loop Detected / Too Many Hops | Routing loop: two partners sending the same call back and forth |
| 484 Address Incomplete | Number too short for the destination | Customer is sending incomplete numbers or a digit was stripped |
| 486 Busy Here | Subscriber genuinely busy | Pass back to the caller, do not fail over |
| 487 Request Terminated | Caller hung up (CANCEL) before answer | Normal; a very high share can mean long PDD or no ringback |
| 488 Not Acceptable Here | No codec or media format in common | Compare the SDP codec lists on both legs |
The 5xx and 6xx codes
| Code | What it usually means | First action |
|---|---|---|
| 500 Server Internal Error | Fault on the remote platform | Fail over; ticket the vendor if it repeats |
| 502 Bad Gateway | The vendor’s own upstream failed | Fail over; ask which leg failed |
| 503 Service Unavailable | Overload, channel limit reached, or route down | Fail over; check your concurrent calls against the agreed limit |
| 504 Server Time-out | The vendor did not hear back from its upstream | Fail over; rising 504s often precede a full outage |
| 600 Busy Everywhere | Busy on every device of the subscriber | Do not retry |
| 603 Decline | Called party or network refused the call | Do not retry; many in a row can mean the destination network is blocking your CLI |
| 604 Does Not Exist Anywhere | Number does not exist | Do not retry; check number format |
| 606 Not Acceptable | Session description not acceptable anywhere | Treat 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.
| Cause | Name | Usually appears as |
|---|---|---|
| 1 | Unallocated number | 404 |
| 16 | Normal call clearing | BYE after an answered call |
| 17 | User busy | 486 |
| 18 / 19 | No user responding / no answer | 408 or 480 |
| 21 | Call rejected | 403 or 603 |
| 28 | Invalid number format | 484 |
| 34 | No circuit available | 503 |
| 38 / 41 | Network out of order / temporary failure | 503 or 500 |
| 127 | Interworking, unspecified | 500 |
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.
Practical rules most carriers end up with:
- Never fail over on 486, 487 or 6xx. The answer would be the same on any route.
- 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.
- Fail over on 5xx. These describe the vendor, not the subscriber.
- Treat 480 and 403 per vendor. Some vendors use them honestly, others to mean “no capacity”. Decide based on evidence from your CDRs.
- Cap the attempts. Two or three vendors per call and an overall time budget (for example 15–20 seconds) keep PDD under control.
- 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.
Related reading
- Lesson 9: Troubleshooting common VoIP issues
- How to check VoIP route quality: ASR, ACD, PDD, MOS and packet loss (blog)
- VoxInspector – VoIP monitoring, FAS detection and route testing for VOS3000
- All training lessons · VoxComms home
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.