Skip to content

Hangup cause codes

The hangup_cause value appears in CDR responses and webhook payloads (pbx.call.hangup, pbx.cdr.created). Codes follow ITU-T Q.850, mapped from SIP responses by Zorio PBX.

Most common codes

hangup_causeMeaningReal-world scenario
NORMAL_CLEARINGCall ended normallyOne of the two parties hung up after talking
NO_ANSWERRing timeout, nobody picked upThe customer didn't pick up or was away from the phone
USER_BUSYDestination busyThe customer was on another call
CALL_REJECTEDDestination rejected the callThe customer pressed "decline" on their phone
ORIGINATOR_CANCELAgent / system cancelled before answerThe agent changed their mind and hung up while it was still ringing
RECOVERY_ON_TIMER_EXPIRECall hung due to SIP timeoutNetwork or PBX technical issue
hangup_causeMeaning
UNALLOCATED_NUMBERThe number doesn't exist in the network (e.g. 1XX, fake prefixes)
NO_ROUTE_DESTINATIONNo route to destination (e.g. trunk not configured)
NO_ROUTE_TRANSIT_NETThe trunk refused the call
DESTINATION_OUT_OF_ORDERThe destination is offline
INVALID_NUMBER_FORMATBad number format (e.g. extra chars, wrong prefix)
FACILITY_REJECTEDThe carrier refused the route

Call quality codes

hangup_causeMeaning
MEDIA_TIMEOUTRTP packets stopped arriving for N seconds (network dropped)
BEARERCAPABILITY_NOTAVAILCodec mismatch between the two parties
INCOMPATIBLE_DESTINATIONDifferent standards (e.g. analog ↔ SIP can't bridge)
EXCHANGE_ROUTING_ERRORCarrier routing error
hangup_causeMeaning
CALL_REJECTEDHard reject (e.g. DNC list, blacklist)
INTERWORKINGProtocol incompatibility (e.g. ISDN ↔ SIP)
BEARERCAPABILITY_NOTAUTHNot authorized to use this service
CHANNEL_UNACCEPTABLEChannel not ready
hangup_causeMeaning
NORMAL_TEMPORARY_FAILURETemporary failure, retry later
SWITCH_CONGESTIONPlatform overloaded, can't accept more
REQUESTED_CHAN_UNAVAILNo free channels on the trunk
RESOURCE_UNAVAILABLEOut of resources (e.g. SBC)

Internal-system codes

hangup_causeMeaning
LOSE_RACELost the race when two calls hit the same number (only one wins)
MANAGER_REQUESTAdmin / supervisor hung up the call manually via API
SYSTEM_SHUTDOWNSystem is shutting down
BLIND_TRANSFERCall was blind-transferred to another number
ATTENDED_TRANSFERCall was attended-transferred to another number
PICKED_OFFCall was picked off the queue by another extension

Mapping to the result field

The result field in the CDR is a simpler classification so CRMs can aggregate easily. Mapping rules:

Conditionresult
hangup_cause = NORMAL_CLEARING + billsec > 0answered
hangup_cause = NORMAL_CLEARING + billsec = 0no_answer (special case: agent hung up immediately after answering)
hangup_cause = NO_ANSWERno_answer
hangup_cause = USER_BUSYbusy
hangup_cause = CALL_REJECTEDrejected
hangup_cause = ORIGINATOR_CANCELcancelled
Call went to voicemailvoicemail
Anything else (network, routing, system errors)failed

When you see an unknown hangup_cause

If you see a code that isn't listed above (e.g. BIB_NA, XXX_ZZZ), it could be:

  • A carrier-specific extended code (Viettel, Mobifone, ...).
  • A rare infrastructure issue — report it to Zorio support with the call_uuid for tracing.

Full Q.850 reference: ITU-T Q.850.

Cấp phép theo điều khoản sử dụng của Zorio.