diff --git a/res/res_pjsip_outbound_authenticator_digest.c b/res/res_pjsip_outbound_authenticator_digest.c
index 64238a868f6243e922ebd7fe415c5a0fba330aad..35e59f21ad00e1b5c307dab5b53dffa7460f00da 100644
--- a/res/res_pjsip_outbound_authenticator_digest.c
+++ b/res/res_pjsip_outbound_authenticator_digest.c
@@ -105,6 +105,7 @@ static int digest_create_request_with_auth(const struct ast_sip_auth_vector *aut
 		pjsip_transaction *tsx, pjsip_tx_data **new_request)
 {
 	pjsip_auth_clt_sess auth_sess;
+	pjsip_cseq_hdr *cseq;
 
 	if (pjsip_auth_clt_init(&auth_sess, ast_sip_get_pjsip_endpoint(),
 				tsx->pool, 0) != PJ_SUCCESS) {
@@ -120,6 +121,15 @@ static int digest_create_request_with_auth(const struct ast_sip_auth_vector *aut
 	switch (pjsip_auth_clt_reinit_req(&auth_sess, challenge,
 				tsx->last_tx, new_request)) {
 	case PJ_SUCCESS:
+		/* PJSIP creates a new transaction for new_request (meaning it creates a new
+		 * branch). However, it recycles the Call-ID, from-tag, and CSeq from the
+		 * original request. Some SIP implementations will not process the new request
+		 * since the CSeq is the same as the original request. Incrementing it here
+		 * fixes the interop issue
+		 */
+		cseq = pjsip_msg_find_hdr((*new_request)->msg, PJSIP_H_CSEQ, NULL);
+		ast_assert(cseq != NULL);
+		++cseq->cseq;
 		return 0;
 	case PJSIP_ENOCREDENTIAL:
 		ast_log(LOG_WARNING, "Unable to create request with auth."