diff --git a/src/client/configurationmanager.cpp b/src/client/configurationmanager.cpp
index c947b803cb82def6d179837fa08e48b206e07a2a..c4a5a10d75b3bdfa3b33d92f628c3788fa09ac64 100644
--- a/src/client/configurationmanager.cpp
+++ b/src/client/configurationmanager.cpp
@@ -661,8 +661,13 @@ void
 setCredentials(const std::string& accountID,
                const std::vector<std::map<std::string, std::string>>& details)
 {
-    if (auto sipaccount = ring::Manager::instance().getAccount<SIPAccount>(accountID))
-        sipaccount->setCredentials(details);
+    if (auto sipaccount = ring::Manager::instance().getAccount<SIPAccount>(accountID)) {
+        sipaccount->doUnregister([&](bool /* transport_free */) {
+            sipaccount->setCredentials(details);
+            if (sipaccount->isEnabled())
+                sipaccount->doRegister();
+        });
+    }
 }
 
 } // namespace DRing