diff --git a/src/jamidht/conversation_module.cpp b/src/jamidht/conversation_module.cpp
index 131dfe762e777d098a0c85ff5d507a9ab88232fe..da4957630d3243f76af5fae6c321922ce39f7c14 100644
--- a/src/jamidht/conversation_module.cpp
+++ b/src/jamidht/conversation_module.cpp
@@ -1432,6 +1432,24 @@ ConversationModule::isBannedDevice(const std::string& convId, const std::string&
 void
 ConversationModule::removeContact(const std::string& uri, bool)
 {
+    // Remove linked conversation's requests
+    {
+        std::lock_guard<std::mutex> lk(pimpl_->conversationsRequestsMtx_);
+        auto update = false;
+        auto it = pimpl_->conversationsRequests_.begin();
+        while (it != pimpl_->conversationsRequests_.end()) {
+            if (it->second.from == uri) {
+                emitSignal<DRing::ConversationSignal::ConversationRequestDeclined>(pimpl_->accountId_,
+                                                                                   it->first);
+                update = true;
+                it = pimpl_->conversationsRequests_.erase(it);
+            } else {
+                ++it;
+            }
+        }
+        if (update)
+            pimpl_->saveConvRequests();
+    }
     // Remove related conversation
     auto isSelf = uri == pimpl_->username_;
     std::vector<std::string> toRm;
diff --git a/test/unitTest/conversation/conversationRequest.cpp b/test/unitTest/conversation/conversationRequest.cpp
index f1d965fbad9d84bd83e7030b279cd2f6d41226eb..c1eeb31cb27a047313a17240255979193e510585 100644
--- a/test/unitTest/conversation/conversationRequest.cpp
+++ b/test/unitTest/conversation/conversationRequest.cpp
@@ -63,6 +63,7 @@ public:
     void testRemoveContact();
     void testRemoveConversationUpdateContactDetails();
     void testBanContact();
+    void testBanContactRemoveTrustRequest();
     void testAddOfflineContactThenConnect();
     void testDeclineTrustRequestDoNotGenerateAnother();
     void testRemoveContactRemoveSyncing();
@@ -87,6 +88,7 @@ private:
     CPPUNIT_TEST(testRemoveContact);
     CPPUNIT_TEST(testRemoveConversationUpdateContactDetails);
     CPPUNIT_TEST(testBanContact);
+    CPPUNIT_TEST(testBanContactRemoveTrustRequest);
     CPPUNIT_TEST(testAddOfflineContactThenConnect);
     CPPUNIT_TEST(testDeclineTrustRequestDoNotGenerateAnother);
     CPPUNIT_TEST(testRemoveContactRemoveSyncing);
@@ -695,6 +697,56 @@ ConversationRequestTest::testBanContact()
     CPPUNIT_ASSERT(!fileutils::isDirectory(repoPath));
 }
 
+void
+ConversationRequestTest::testBanContactRemoveTrustRequest()
+{
+    auto aliceAccount = Manager::instance().getAccount<JamiAccount>(aliceId);
+    auto bobAccount = Manager::instance().getAccount<JamiAccount>(bobId);
+    auto bobUri = bobAccount->getUsername();
+    auto aliceUri = aliceAccount->getUsername();
+    std::mutex mtx;
+    std::unique_lock<std::mutex> lk {mtx};
+    std::condition_variable cv;
+    std::map<std::string, std::shared_ptr<DRing::CallbackWrapperBase>> confHandlers;
+    bool conversationReady = false, requestReceived = false, requestDeclined = true;
+    std::string convId = "";
+    confHandlers.insert(DRing::exportable_callback<DRing::ConfigurationSignal::IncomingTrustRequest>(
+        [&](const std::string& account_id,
+            const std::string& /*from*/,
+            const std::string& /*conversationId*/,
+            const std::vector<uint8_t>& /*payload*/,
+            time_t /*received*/) {
+            if (account_id == bobId)
+                requestReceived = true;
+            cv.notify_one();
+        }));
+    confHandlers.insert(DRing::exportable_callback<DRing::ConversationSignal::ConversationReady>(
+        [&](const std::string& accountId, const std::string& conversationId) {
+            if (accountId == aliceId) {
+                convId = conversationId;
+            } else if (accountId == bobId) {
+                conversationReady = true;
+            }
+            cv.notify_one();
+        }));
+    confHandlers.insert(
+        DRing::exportable_callback<DRing::ConversationSignal::ConversationRequestDeclined>(
+            [&](const std::string& accountId, const std::string& conversationId) {
+                if (accountId == bobId)
+                    requestDeclined = true;
+                cv.notify_one();
+            }));
+    DRing::registerSignalHandlers(confHandlers);
+    aliceAccount->addContact(bobUri);
+    aliceAccount->sendTrustRequest(bobUri, {});
+    // Check created files
+    CPPUNIT_ASSERT(cv.wait_for(lk, std::chrono::seconds(30), [&]() { return requestReceived; }));
+    bobAccount->removeContact(aliceUri, true);
+    CPPUNIT_ASSERT(cv.wait_for(lk, std::chrono::seconds(5), [&]() { return requestDeclined; }));
+    auto requests = DRing::getConversationRequests(bobId);
+    CPPUNIT_ASSERT(requests.size() == 0);
+}
+
 void
 ConversationRequestTest::testAddOfflineContactThenConnect()
 {