What are Q.850 Cause Codes? Q.850 cause codes are standardized numeric values used in Cisco CDRs to explain why a call ended. They are derived from ISDN signaling and appear in CUCM, SIP, and H.323 environments. These codes help determine whether a call ended normally, failed due to user behavior, or was impacted by network conditions.
When a call ends in Cisco Unified Communications Manager (CUCM), the system records why the call terminated. These Call Detail Records (CDRs) provide the essential DNA of every voice interaction through numeric cause codes.
This page serves as a technical reference for interpreting Cisco CDR termination codes—specifically origCause, destCause, and OnBehalfOf
fields—to help engineers diagnose dropped calls, network congestion, and signaling failures.
A cause code is a numeric value that describes the signaling reason a call ended. Cisco CUCM derives these values from Q.850 / ISDN cause codes, which are also used in SIP and H.323 signaling. Cause codes appear in CDRs as integers and must be translated to understand whether a call ended normally, failed due to network conditions, or was rejected by a device.
Cisco records termination reasons from both sides of the call leg. A single call is often split into two "legs"—the originating side and the terminating side.
origCause_value → The reason the call cleared on the originating (caller) side.destCause_value → The reason the call cleared on the destination (callee) side.Differences between these values often indicate mid-call failures, one-sided disconnects or signaling mismatches.
Example: origCause = 16, destCause = 34. This indicates the caller hung up normally, bu the nework failed on the destination side. This comparison is critical for isolating where the failure occurred.
Cisco utilizes the ITU-T Q.850 standard for cause codes. These integers must be translated to understand whether a call failed due to network conditions, user behavior, or device rejection.
| Code | Definition | What This Means | Troubleshooting Context / Likely Culprit |
|---|---|---|---|
| 1 | Unallocated Number | Invalid number | Check dial plan |
| 16 | Normal Call Clearing | Call ended normally | No issue |
| 17 | User Busy | Line is busy | Check user/device |
| 18 | No User Responding | No answer | Check endpoint |
| 21 | Call Rejected | User declined | Check DND/settings |
| 34 | No Circuit Available | Network congestion | Check SIP trunk |
| 38 | Network Out of Order | Network failure | Investigate infrastructure |
| 41 | Temporary Failure | Transient issue | Retry / monitor |
| 47 | Resources Unavailable | No media resources | Check CUCM resources |
Cause code 16 indicates that a call was successfully established and then intentionally ended by one of the participants. In other words, the call worked and ended normally.
Common Scenarios:
Troubleshooting Impact: Cause code 16 is NOT a network issue and should not be treated as a failure.
Cause code 17 means the destination device was busy and unable to accept the call.
Troubleshooting Impact: This is not a network issue. Check user availability, call waiting settings, or routing logic.
Cause code 34 indicates that the network could not allocate a channel for the call. The network did not have enough capacity to complete the call.
Common Causes:
Troubleshooting Impact: This is a network-related issue and should be investigated at the trunk or provider level.
Cause codes should never be interpreted in isolation. Engineers must correlate them with call timing and routing fields.
Cause 16 + duration > 0 → normal completed call
Cause 16 + duration = 0 → abandoned or unanswered call
Cause 34 or 41 → network or capacity-related issue
Comparing origCause and destCause helps determine whether the failure occurred before, during, or after call setup.
Cause codes are most valuable when used as part of a structured troubleshooting approach.
Step 1: Identify Who Terminated the Call
origCause_value → originating side
destCause_value → destination side
Step 2: Interpret the Cause Code
16 → Normal call (not a failure)
17 → User/device issue
34 → Network or carrier issue)
41 → Temporary network condition
Step 3: Eliminate the Network as the Root Cause
If cause code = 16: → The network is NOT the issue
If cause code = 34: → Investigate SIP trunk capacity, carrier, or routing
Step 4: Correlate with Duration
Duration > 0 → Call was connected
Duration = 0 → Call failed before connection
This structured approach helps isolate whether the issue is user-related, system-related, or network-related.
While cause codes explain why a call ended, the OnBehalfOf fields explain what entity triggered the termination.
Code 1 (Station): A user physically ended the call on their device.
Code 2 (Trunk/Gateway): The PSTN or SIP Provider terminated the connection.
Code 4 (Voicemail): Terminated by Unity Connection (e.g., after leaving a message).
Code 12 (Call Manager): Indicates a system action like a transfer, park, or resume.
Used alongside cause codes, this provides a complete picture of call termination.
In transfers, hunt groups, and forwarded calls, CUCM generates multiple call legs. Each leg has its own cause codes.
This means:
One leg may end with cause 16 (normal clearing)
Another leg may end with a failure code
To understand the full call outcome, engineers must correlate records using globalCallID_callId.
Hunt groups generate multiple CDR rows as CUCM attempts delivery to different members. Cause codes explain why each attempt failed or succeeded.
Common patterns include:
Cause 17: Busy or rejected by a specific hunt member.
Timeouts: Leading to the next member in the sequence.
Cause 16: Recorded once a member finally answers and eventually disconnects.
Cause codes describe signaling outcomes, not user intent. They do not capture media quality (use CMRs for that) or explain why a user chose to disconnect.
Analyzing cause codes manually can be time-consuming, especially across large environments. And Manually interpreting thousands of records is prone to error.
Advanced analytics platforms can automatically correlate:
Call paths
Cause codes
User experience
Metropolis Corp's Expo XT UC Analytics Software automates this process, normalizing raw CDR data into plain English and providing dashboards for call completion rates and failure reasons. This significantly reduces troubleshooting time and improves visibility.