diff --git a/src/include/switch_types.h b/src/include/switch_types.h
index 701a50c717..f0962e040f 100644
--- a/src/include/switch_types.h
+++ b/src/include/switch_types.h
@@ -532,6 +532,55 @@ typedef enum {
 	SWITCH_EVENT_ALL
 } switch_event_t;
 
+
+typedef enum {
+	SWITCH_CAUSE_UNALLOCATED = 1,
+	SWITCH_CAUSE_NO_ROUTE_TRANSIT_NET = 2,
+	SWITCH_CAUSE_NO_ROUTE_DESTINATION = 3,
+	SWITCH_CAUSE_CHANNEL_UNACCEPTABLE = 6,
+	SWITCH_CAUSE_CALL_AWARDED_DELIVERED = 7,
+	SWITCH_CAUSE_NORMAL_CLEARING = 16,
+	SWITCH_CAUSE_USER_BUSY = 17,
+	SWITCH_CAUSE_NO_USER_RESPONSE = 18,
+	SWITCH_CAUSE_NO_ANSWER = 19,
+	SWITCH_CAUSE_CALL_REJECTED = 21,
+	SWITCH_CAUSE_NUMBER_CHANGED = 22,
+	SWITCH_CAUSE_DESTINATION_OUT_OF_ORDER = 27,
+	SWITCH_CAUSE_INVALID_NUMBER_FORMAT = 28,
+	SWITCH_CAUSE_FACILITY_REJECTED = 29,
+	SWITCH_CAUSE_RESPONSE_TO_STATUS_ENQUIRY = 30,
+	SWITCH_CAUSE_NORMAL_UNSPECIFIED = 31,
+	SWITCH_CAUSE_NORMAL_CIRCUIT_CONGESTION = 34,
+	SWITCH_CAUSE_NETWORK_OUT_OF_ORDER = 38,
+	SWITCH_CAUSE_NORMAL_TEMPORARY_FAILURE = 41,
+	SWITCH_CAUSE_SWITCH_CONGESTION = 42,
+	SWITCH_CAUSE_ACCESS_INFO_DISCARDED = 43,
+	SWITCH_CAUSE_REQUESTED_CHAN_UNAVAIL = 44,
+	SWITCH_CAUSE_PRE_EMPTED = 45,
+	SWITCH_CAUSE_FACILITY_NOT_SUBSCRIBED = 50,
+	SWITCH_CAUSE_OUTGOING_CALL_BARRED = 52,
+	SWITCH_CAUSE_INCOMING_CALL_BARRED = 54,
+	SWITCH_CAUSE_BEARERCAPABILITY_NOTAUTH = 57,
+	SWITCH_CAUSE_BEARERCAPABILITY_NOTAVAIL = 58,
+	SWITCH_CAUSE_BEARERCAPABILITY_NOTIMPL = 65,
+	SWITCH_CAUSE_CHAN_NOT_IMPLEMENTED = 66,
+	SWITCH_CAUSE_FACILITY_NOT_IMPLEMENTED = 69,
+	SWITCH_CAUSE_INVALID_CALL_REFERENCE = 81,
+	SWITCH_CAUSE_INCOMPATIBLE_DESTINATION = 88,
+	SWITCH_CAUSE_INVALID_MSG_UNSPECIFIED = 95,
+	SWITCH_CAUSE_MANDATORY_IE_MISSING = 96,
+	SWITCH_CAUSE_MESSAGE_TYPE_NONEXIST = 97,
+	SWITCH_CAUSE_WRONG_MESSAGE = 98,
+	SWITCH_CAUSE_IE_NONEXIST = 99,
+	SWITCH_CAUSE_INVALID_IE_CONTENTS = 100,
+	SWITCH_CAUSE_WRONG_CALL_STATE = 101,
+	SWITCH_CAUSE_RECOVERY_ON_TIMER_EXPIRE = 102,
+	SWITCH_CAUSE_MANDATORY_IE_LENGTH_ERROR = 103,
+	SWITCH_CAUSE_PROTOCOL_ERROR = 111,
+	SWITCH_CAUSE_INTERWORKING = 127
+} switch_call_cause_t;
+
+
 typedef uint8_t switch_payload_t;
 typedef struct switch_rtp switch_rtp;
 typedef struct switch_core_session_message switch_core_session_message;
diff --git a/src/switch_channel.c b/src/switch_channel.c
index 1d179a8078..d41b9aed6f 100644
--- a/src/switch_channel.c
+++ b/src/switch_channel.c
@@ -47,6 +47,7 @@ struct switch_channel {
 	switch_hash *variables;
 	switch_channel_timetable_t times;
 	void *private_info;
+	switch_call_cause_t hangup_cause;
 	int freq;
 	int bits;
 	int channels;