diff --git a/main/stasis_bridges.c b/main/stasis_bridges.c
index 7f53bfe2da472c1ebcf84d3f9aef014a423f2a61..d197e4d2d55d1d7078c17272d034d9b70bfa2c22 100644
--- a/main/stasis_bridges.c
+++ b/main/stasis_bridges.c
@@ -868,6 +868,8 @@ static struct ast_json *attended_transfer_to_json(struct stasis_message *msg,
 	if (transfer_msg->transferee) {
 		json_transferee = ast_channel_snapshot_to_json(transfer_msg->transferee, sanitize);
 		if (!json_transferee) {
+			ast_json_unref(json_transferer2);
+			ast_json_unref(json_transferer1);
 			return NULL;
 		}
 	}
@@ -875,6 +877,9 @@ static struct ast_json *attended_transfer_to_json(struct stasis_message *msg,
 	if (transfer_msg->target) {
 		json_target = ast_channel_snapshot_to_json(transfer_msg->target, sanitize);
 		if (!json_target) {
+			ast_json_unref(json_transferee);
+			ast_json_unref(json_transferer2);
+			ast_json_unref(json_transferer1);
 			return NULL;
 		}
 	}
@@ -887,9 +892,12 @@ static struct ast_json *attended_transfer_to_json(struct stasis_message *msg,
 		"result", result_strs[transfer_msg->result],
 		"is_external", ast_json_boolean(transfer_msg->is_external));
 	if (!out) {
+		ast_json_unref(json_target);
+		ast_json_unref(json_transferee);
 		return NULL;
 	}
 	if (json_transferee && ast_json_object_set(out, "transferee", json_transferee)) {
+		ast_json_unref(json_target);
 		return NULL;
 	}
 	if (json_target && ast_json_object_set(out, "transfer_target", json_target)) {