diff --git a/src/include/switch_types.h b/src/include/switch_types.h
index ae073108f1..b49d74cbc3 100644
--- a/src/include/switch_types.h
+++ b/src/include/switch_types.h
@@ -783,6 +783,7 @@ typedef enum {
 
 typedef enum {
 	SWITCH_CAUSE_UNALLOCATED = 0,
+	SWITCH_CAUSE_SUCCESS = 1,
 	SWITCH_CAUSE_NO_ROUTE_TRANSIT_NET = 2,
 	SWITCH_CAUSE_NO_ROUTE_DESTINATION = 3,
 	SWITCH_CAUSE_CHANNEL_UNACCEPTABLE = 6,
diff --git a/src/switch_channel.c b/src/switch_channel.c
index c69cd810e7..1bd3f65a5e 100644
--- a/src/switch_channel.c
+++ b/src/switch_channel.c
@@ -40,6 +40,7 @@ struct switch_cause_table {
 
 static struct switch_cause_table CAUSE_CHART[] = {
 	{ "UNALLOCATED", SWITCH_CAUSE_UNALLOCATED },
+	{ "SUCCESS", SWITCH_CAUSE_SUCCESS },
 	{ "NO_ROUTE_TRANSIT_NET", SWITCH_CAUSE_NO_ROUTE_TRANSIT_NET },
 	{ "NO_ROUTE_DESTINATION", SWITCH_CAUSE_NO_ROUTE_DESTINATION },
 	{ "CHANNEL_UNACCEPTABLE", SWITCH_CAUSE_CHANNEL_UNACCEPTABLE },
diff --git a/src/switch_ivr.c b/src/switch_ivr.c
index 6af32747f6..92d1455b21 100644
--- a/src/switch_ivr.c
+++ b/src/switch_ivr.c
@@ -2893,6 +2893,7 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_originate(switch_core_session_t *sess
 				switch_channel_set_variable(caller_channel, "originate_disposition", "call accepted");
 			}
 			switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Originate Resulted in Success: [%s]\n", switch_channel_get_name(peer_channel));
+            *cause = SWITCH_CAUSE_SUCCESS;
 		} else {
 			if (peer_channel) {
 				*cause = switch_channel_get_cause(peer_channel);