diff --git a/src/mod/event_handlers/mod_json_cdr/mod_json_cdr.c b/src/mod/event_handlers/mod_json_cdr/mod_json_cdr.c
index 9ffd5121aa..0600607e3a 100644
--- a/src/mod/event_handlers/mod_json_cdr/mod_json_cdr.c
+++ b/src/mod/event_handlers/mod_json_cdr/mod_json_cdr.c
@@ -72,6 +72,7 @@ static struct {
 	int auth_scheme;
 	switch_memory_pool_t *pool;
 	switch_event_node_t *node;
+	int encode_values;
 } globals;
 
 SWITCH_MODULE_LOAD_FUNCTION(mod_json_cdr_load);
@@ -249,24 +250,27 @@ static void set_json_chan_vars(struct json_object *json, switch_channel_t *chann
 
 	for (; hi; hi = hi->next) {
 		if (!zstr(hi->name) && !zstr(hi->value)) {
-			char *data;
-			switch_size_t dlen = strlen(hi->value) * 3;
+			char *data = hi->value;
+			if (globals.encode_values == ENCODING_DEFAULT) {
+				switch_size_t dlen = strlen(hi->value) * 3;
 
-			if ((data = malloc(dlen))) {
-				memset(data, 0, dlen);
-				switch_url_encode(hi->value, data, dlen);
-
-				variable = json_object_new_string(data);
-				if (!is_error(variable)) {
-					json_object_object_add(json, hi->name, variable);
+				if ((data = malloc(dlen))) {
+					memset(data, 0, dlen);
+					switch_url_encode(hi->value, data, dlen);
 				}
-				free(data);
+			}
+
+			variable = json_object_new_string(data);			
+			if (!is_error(variable)) {
+				json_object_object_add(json, hi->name, variable);
+			}
+
+			if (data != hi->value) {
+				switch_safe_free(data);
 			}
 		}
 	}
 	switch_channel_variable_last(channel);
-
-	return;
 }
 
 
@@ -708,7 +712,7 @@ static switch_status_t my_on_reporting(switch_core_session_t *session)
 			}
 
 		} else {
-			headers = curl_slist_append(headers, "Content-Type: application/x-www-form-plaintext");
+			headers = curl_slist_append(headers, "Content-Type: application/json");
 			curl_json_text = (char *)json_text;
 		}
 
@@ -909,6 +913,7 @@ SWITCH_MODULE_LOAD_FUNCTION(mod_json_cdr_load)
 	globals.disable100continue = 0;
 	globals.pool = pool;
 	globals.auth_scheme = CURLAUTH_BASIC;
+	globals.encode_values = ENCODING_DEFAULT;
 
 	switch_thread_rwlock_create(&globals.log_path_lock, pool);
 
@@ -1008,6 +1013,8 @@ SWITCH_MODULE_LOAD_FUNCTION(mod_json_cdr_load)
 				} else if (!strcasecmp(val, "any")) {
 					globals.auth_scheme = CURLAUTH_ANY;
 				}
+			} else if (!strcasecmp(var, "encode-values") && !zstr(val)) {
+				globals.encode_values = switch_true(val) ? ENCODING_DEFAULT : ENCODING_NONE;
 			}
 
 		}