diff --git a/channels/chan_sip.c b/channels/chan_sip.c
index 50b022995921e698e49998a75718d8cb1060b01c..beb512b2ab4130432dcf079f2f375b58b76fa719 100644
--- a/channels/chan_sip.c
+++ b/channels/chan_sip.c
@@ -26605,7 +26605,14 @@ static int handle_request_invite(struct sip_pvt *p, struct sip_request *req, str
 		if (!error && ast_strlen_zero(pickup.exten) &&
 				ast_channel_state(replaces_chan) != AST_STATE_RINGING &&
 				ast_channel_state(replaces_chan) != AST_STATE_RING &&
-				ast_channel_state(replaces_chan) != AST_STATE_UP) {
+				ast_channel_state(replaces_chan) != AST_STATE_UP &&
+				/*
+				* Check the down state as well because some SIP devices do not
+				* give 180 ringing when they can just give 183 session progress
+				* instead. same fix the one in ast_can_pickup
+				* git show 0a8f9d2cf08
+				*/
+				ast_channel_state(replaces_chan) != AST_STATE_DOWN) {
 			ast_log(LOG_NOTICE, "Supervised transfer attempted to replace non-ringing or active call id (%s)!\n", replace_id);
 			transmit_response_reliable(p, "603 Declined (Replaces)", req);
 			error = 1;
diff --git a/doc/CHANGES-staging/chan_sip_pickup_AST_STATE_DOWN.txt b/doc/CHANGES-staging/chan_sip_pickup_AST_STATE_DOWN.txt
new file mode 100644
index 0000000000000000000000000000000000000000..e658faa52ad74f2661c0ff62dfd2ef08e199b605
--- /dev/null
+++ b/doc/CHANGES-staging/chan_sip_pickup_AST_STATE_DOWN.txt
@@ -0,0 +1,3 @@
+Subject: chan_sip.c
+
+resolve issue with pickup on device that uses "183" and not "180"