diff --git a/src/sip/sipcall.cpp b/src/sip/sipcall.cpp
index 6dc20a7e0be740661d6df00ada82a491cffc9f57..38ddfa3fb8ee89462fc7ff62c106c36028ca7fad 100644
--- a/src/sip/sipcall.cpp
+++ b/src/sip/sipcall.cpp
@@ -1283,7 +1283,7 @@ SIPCall::transfer(const std::string& to)
     if (Call::isRecording())
         stopRecording();
 
-    auto uri = Uri(to);
+    auto uri = Uri(account->getToUri(to));
     const pj_str_t dst(CONST_PJ_STR(uri.authority()));
     JAMI_DBG("[call:%s] Transferring to %.*s", getCallId().c_str(), (int) dst.slen, dst.ptr);
 
diff --git a/src/uri.cpp b/src/uri.cpp
index dbefe056bfbc92f3c3607099af453c0e7329d99e..2b2a4077a48ff10f32ee57267e912fcc6a1778e8 100644
--- a/src/uri.cpp
+++ b/src/uri.cpp
@@ -49,6 +49,10 @@ Uri::Uri(const std::string_view& uri)
     } else {
         authority_ = uri;
     }
+    auto posParams = authority_.find(';');
+    if (posParams != std::string::npos) {
+        authority_ = authority_.substr(0, posParams);
+    }
 }
 
 const std::string&