Index: b/channels/chan_sip.c
===================================================================
--- a/channels/chan_sip.c
+++ b/channels/chan_sip.c
@@ -31616,6 +31616,9 @@ static struct sip_peer *temp_peer(const
 
 	ast_copy_string(peer->name, name, sizeof(peer->name));
 
+	if (sip_cfg.autocreate_type) {
+		peer->type = sip_cfg.autocreate_type;
+	}
 	ast_string_field_set(peer, context, sip_cfg.autocreate_context);
 	peer->selfdestruct = TRUE;
 	peer->host_dynamic = TRUE;
@@ -32733,6 +32736,7 @@ static int reload_config(enum channelrel
 	sip_cfg.autocreatepeer = DEFAULT_AUTOCREATEPEER;
 	ast_copy_string(sip_cfg.autocreate_context, DEFAULT_AUTOCREATE_CONTEXT, sizeof(sip_cfg.autocreate_context));
 	ast_copy_string(sip_cfg.autocreate_prefix, DEFAULT_AUTOCREATE_PREFIX, sizeof(sip_cfg.autocreate_prefix));
+	sip_cfg.autocreate_type = 0;
 	global_autoframing = 0;
 	sip_cfg.allowguest = DEFAULT_ALLOWGUEST;
 	global_callcounter = DEFAULT_CALLCOUNTER;
@@ -33069,6 +33073,14 @@ static int reload_config(enum channelrel
 			ast_copy_string(sip_cfg.autocreate_context, v->value, sizeof(sip_cfg.autocreate_context));
 		} else if (!strcasecmp(v->name, "autocreate_prefix")) {
 			ast_copy_string(sip_cfg.autocreate_prefix, v->value, sizeof(sip_cfg.autocreate_prefix));
+		} else if (!strcasecmp(v->name, "autocreate_type")) {
+			if (!strcasecmp(v->value, "peer")) {
+				sip_cfg.autocreate_type = SIP_TYPE_PEER;
+			} else if (!strcasecmp(v->value, "user")) {
+				sip_cfg.autocreate_type = SIP_TYPE_USER;
+			} else if (!strcasecmp(v->value, "friend")) {
+				sip_cfg.autocreate_type = SIP_TYPE_USER | SIP_TYPE_PEER;
+			}
 		} else if (!strcasecmp(v->name, "match_auth_username")) {
 			global_match_auth_username = ast_true(v->value);
 		} else if (!strcasecmp(v->name, "srvlookup")) {
Index: b/channels/sip/include/sip.h
===================================================================
--- a/channels/sip/include/sip.h
+++ b/channels/sip/include/sip.h
@@ -756,6 +756,7 @@ struct sip_settings {
 	enum autocreatepeer_mode autocreatepeer;  /*!< Auto creation of peers at registration? Default off. */
 	char autocreate_context[AST_MAX_CONTEXT];
 	char autocreate_prefix[64]; /*!< Only peer with this prefix will be autocreated */
+	enum sip_peer_type autocreate_type;
 	int srvlookup;              /*!< SRV Lookup on or off. Default is on */
 	int allowguest;             /*!< allow unauthenticated peers to connect? */
 	int alwaysauthreject;       /*!< Send 401 Unauthorized for all failing requests */
