diff --git a/include/asterisk/dial.h b/include/asterisk/dial.h
index b61116f8eecffb335343787015bcb14d11bff728..ab92198116ecf7e2bc7a08c92478f3d4b9773113 100644
--- a/include/asterisk/dial.h
+++ b/include/asterisk/dial.h
@@ -45,6 +45,7 @@ enum ast_dial_option {
 	AST_DIAL_OPTION_MUSIC,                   /*!< Play music on hold instead of ringing to the calling channel */
 	AST_DIAL_OPTION_DISABLE_CALL_FORWARDING, /*!< Disable call forwarding on channels */
 	AST_DIAL_OPTION_PREDIAL,                 /*!< Execute a predial subroutine before dialing */
+	AST_DIAL_OPTION_DIAL_REPLACES_SELF,      /*!< The dial operation is a replacement for the requester */
 	AST_DIAL_OPTION_MAX,                     /*!< End terminator -- must always remain last */
 };
 
diff --git a/main/dial.c b/main/dial.c
index 04249fd71dbf60361e3cd61adeae1045e676f61f..a27ac5b59792d27f9cb6312a73ee91c9fa91c3af 100644
--- a/main/dial.c
+++ b/main/dial.c
@@ -205,6 +205,7 @@ static const struct ast_option_types option_types[] = {
 	{ AST_DIAL_OPTION_MUSIC, music_enable, music_disable },                   /*!< Play music to the caller instead of ringing */
 	{ AST_DIAL_OPTION_DISABLE_CALL_FORWARDING, NULL, NULL },                  /*!< Disable call forwarding on channels */
 	{ AST_DIAL_OPTION_PREDIAL, predial_enable, predial_disable },             /*!< Execute a subroutine on the outbound channels prior to dialing */
+	{ AST_DIAL_OPTION_DIAL_REPLACES_SELF, NULL, NULL },                       /*!< The dial operation is a replacement for the requester */
 	{ AST_DIAL_OPTION_MAX, NULL, NULL },                                      /*!< Terminator of list */
 };
 
@@ -344,7 +345,11 @@ static int begin_dial_prerun(struct ast_dial_channel *channel, struct ast_channe
 		ast_connected_line_copy_from_caller(ast_channel_connected(channel->owner), ast_channel_caller(chan));
 
 		ast_channel_language_set(channel->owner, ast_channel_language(chan));
-		ast_channel_req_accountcodes(channel->owner, chan, AST_CHANNEL_REQUESTOR_BRIDGE_PEER);
+		if (channel->options[AST_DIAL_OPTION_DIAL_REPLACES_SELF]) {
+			ast_channel_req_accountcodes(channel->owner, chan, AST_CHANNEL_REQUESTOR_REPLACEMENT);
+		} else {
+			ast_channel_req_accountcodes(channel->owner, chan, AST_CHANNEL_REQUESTOR_BRIDGE_PEER);
+		}
 		if (ast_strlen_zero(ast_channel_musicclass(channel->owner)))
 			ast_channel_musicclass_set(channel->owner, ast_channel_musicclass(chan));