What is Q.850?
Q.850 is an ITU-T recommendation titled "Usage of cause and location in the Digital Subscriber Signalling System No. 1 and the Signalling System No. 7 ISDN User Part". In plain English: it's the list of reasons a call can fail or be disconnected, standardized so all telecom equipment speaks the same language. It inherits from Q.931 (ISDN) and ISUP (SS7) and is also carried into SIP via the Reason header (RFC 3326).
Every call release carries two pieces of information: the cause value (the number, e.g. 16 or 41) and the location (where in the network it happened — user, private network, public network, international network). Cause values 1–127 are defined; values are grouped into 5 classes.
The Five Cause Classes
| Class | Values | Meaning |
|---|---|---|
| Class 0 — Normal | 1–15 | Normal, expected outcomes (no route, user busy, etc.) |
| Class 1 — Normal event | 16–31 | User behavior (answered, hung up, rejected) |
| Class 2 — Resource unavailable | 32–47 | Network-side congestion / circuit problems |
| Class 3 — Service or option unavailable | 48–63 | Feature/capability not provisioned |
| Class 4 — Service or option not implemented | 64–79 | Equipment does not support the feature |
| Class 5 — Invalid message | 80–95 | Protocol/format errors |
| Class 6 — Protocol error | 96–111 | Message type or mandatory IE problems |
| Class 7 — Interworking | 112–127 | Generic interworking problems |
The 20 Codes You'll Actually See
Out of 127 defined values, about 20 account for 99% of production traffic. Here they are with plain-English explanations and the typical fix.
Class 0/1 — Normal Clearing (not errors)
| Code | Name | Meaning |
|---|---|---|
| 16 | Normal call clearing | Call ended normally. This is the success case. Nothing to fix. |
| 17 | User busy | Called party is on another call. Returns SIP 486 Busy Here. |
| 18 | No user responding | The called device didn't respond (phone off, no network). SIP 408 Request Timeout. |
| 19 | No answer from user (user alerted) | Phone rang but wasn't answered. SIP 480 Temporarily Unavailable. |
| 20 | Subscriber absent | Mobile subscriber not registered / out of coverage. SIP 480. |
| 21 | Call rejected | User actively declined the call. SIP 603 Decline. |
| 22 | Number changed | Called number has been reassigned. SIP 410 Gone. |
Class 0 — No Route / Unreachable
| Code | Name | Fix |
|---|---|---|
| 1 | Unallocated (unassigned) number | The dialed number doesn't exist. Check dial format, country code, routing table. SIP 404 Not Found. |
| 2 | No route to specified transit network | Intermediate carrier is missing or misconfigured. Check your LCR routes. |
| 3 | No route to destination | Route exists but can't reach. Check interconnect status with downstream carrier. SIP 404. |
| 27 | Destination out of order | Remote equipment is down. Check SBC / gateway at the far end. SIP 502 Bad Gateway. |
| 28 | Invalid number format | Number has wrong format (e.g., missing country code, non-digits). Check your normalization rules. SIP 484 Address Incomplete. |
Class 2 — Network Congestion / Resource Failures
| Code | Name | Fix |
|---|---|---|
| 34 | No circuit/channel available | All trunks are busy. Add capacity or wait. SIP 503 Service Unavailable. |
| 38 | Network out of order | Carrier network is down. Nothing you can do locally — failover to backup route. SIP 503. |
| 41 | Temporary failure | Transient carrier issue. Safe to retry after short backoff. SIP 503. |
| 42 | Switching equipment congestion | Remote switch overloaded. Throttle and retry. |
| 44 | Requested circuit/channel not available | Specific circuit requested is busy. Rare in VoIP; common in TDM/ISDN. |
| 47 | Resource unavailable, unspecified | Generic resource exhaustion. Check CPU/memory on both ends. |
Class 3/4 — Service / Feature Problems
| Code | Name | Fix |
|---|---|---|
| 50 | Requested facility not subscribed | Customer's plan doesn't include the service (e.g., international calling). Check account provisioning. SIP 403 Forbidden. |
| 55 | Incoming calls barred within CUG | Closed User Group blocks inbound. Adjust CUG config. |
| 57 | Bearer capability not authorized | Subscriber not allowed to use the requested bearer (e.g., video on a voice-only plan). SIP 403. |
| 58 | Bearer capability not presently available | Bearer temporarily unavailable. Retry. |
| 63 | Service or option not available, unspecified | Generic service denied. SIP 501 Not Implemented. |
| 65 | Bearer capability not implemented | Equipment doesn't support this bearer. Downgrade codec. |
| 79 | Service or option not implemented, unspecified | Remote doesn't support the feature. SIP 501. |
Class 5/6/7 — Protocol Errors
| Code | Name | Fix |
|---|---|---|
| 95 | Invalid message, unspecified | Malformed message. Enable SIP tracing, look for bad headers. |
| 102 | Recovery on timer expiry | A protocol timer timed out (T301/T310/T305). Check network latency. |
| 111 | Protocol error, unspecified | Generic signaling bug. Collect Wireshark and open vendor ticket. |
| 127 | Interworking, unspecified | Problem bridging two networks (e.g., SIP↔ISDN). Check your SBC/gateway config. |
Q.850 ↔ SIP Response Code Mapping
RFC 3398 defines how SIP responses translate to Q.850 cause codes and vice versa. When a SIP endpoint receives an error from an ISUP gateway, the gateway may include the Q.850 cause in a Reason header:
Reason: Q.850;cause=17;text="User busy"
Common mappings:
| SIP Response | Q.850 | Meaning |
|---|---|---|
| 200 OK | 16 | Success / normal clearing |
| 404 Not Found | 1, 3 | Unassigned / no route |
| 408 Request Timeout | 18, 102 | No response / timer expiry |
| 410 Gone | 22 | Number changed |
| 480 Temporarily Unavailable | 19, 20 | No answer / subscriber absent |
| 484 Address Incomplete | 28 | Invalid format |
| 486 Busy Here | 17 | User busy |
| 487 Request Terminated | 16, 31 | CANCEL received |
| 500 Server Internal Error | 41 | Temporary failure |
| 502 Bad Gateway | 27, 38 | Upstream out of order |
| 503 Service Unavailable | 34, 38, 41 | Network congestion / down |
| 504 Server Timeout | 102 | Timer expiry |
| 603 Decline | 21 | Call rejected by user |
Troubleshooting Workflow
When you see a production call failure, use this flow:
- Collect the release cause from both sides — your SBC/softswitch CDRs or a Wireshark capture.
- Is it class 0/1? (codes 1–31) Usually a user-side issue. Check dialed number, destination plan, subscriber state.
- Is it class 2? (codes 32–47) Network-side congestion or outage. Check interconnect status, monitor CPU/memory on gateways, failover to alternate route.
- Is it class 3/4? (codes 48–79) Provisioning/feature issue. Check account subscription, bearer capabilities, codec.
- Is it class 5/6/7? (codes 80–127) Protocol/interworking bug. Get Wireshark capture, open vendor ticket.
- Check the location field — did the release happen at the user equipment (LPN), private network (PN), or public network (TN)? This localizes where the problem is.
Real-World Examples
Scenario 1: You see lots of cause 41 (Temporary failure) on calls to a specific destination. Meaning: transient carrier issue. Fix: enable failover to secondary carrier for that prefix and open a ticket with the primary.
Scenario 2: Cause 28 (Invalid number format) on all international calls. Meaning: you're probably sending 00 or missing the +. Fix: check your normalization/dial plan.
Scenario 3: Cause 57 (Bearer capability not authorized) only on certain subscribers. Meaning: those subscribers don't have the right plan. Fix: check subscription provisioning in HLR/AAA.
Scenario 4: Cause 34 (No circuit available) during peak hours. Meaning: your trunk group is undersized. Fix: add channels or enable overflow routing.
Key Takeaways
- Q.850 cause codes are the universal language for call failures across ISDN, SS7, and SIP networks.
- Memorize 20 codes and you can triage 99% of incidents.
- Use the class to quickly narrow user-side vs network-side vs protocol problems.
- Pair the cause with the location to pinpoint where the problem originated.
- In SIP, causes ride in the
Reasonheader and map to response codes per RFC 3398.
For the full code-by-code reference with descriptions, see our Q.850 Cause Codes page.
← Back to Blog