diff --git a/src/usernameregistrationbox.cpp b/src/usernameregistrationbox.cpp
index 2d7df3e03fe76cb31ef8e444d848a9e9d0448f64..8805a67fb5b251a8493992df9039871ed98e424b 100644
--- a/src/usernameregistrationbox.cpp
+++ b/src/usernameregistrationbox.cpp
@@ -305,22 +305,35 @@ button_register_username_clicked(G_GNUC_UNUSED GtkButton* button, UsernameRegist
         return;
     }
 
-    GtkWidget* password_dialog = gtk_message_dialog_new(
-        GTK_WINDOW(gtk_widget_get_toplevel(GTK_WIDGET(view))),
-        (GtkDialogFlags)(GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT),
-        GTK_MESSAGE_QUESTION,
-        GTK_BUTTONS_OK_CANCEL,
-        _("Enter the password of your Jami account")
-    );
-
-    GtkWidget* entry_password = gtk_entry_new();
-    gtk_entry_set_visibility(GTK_ENTRY(entry_password), FALSE);
-    gtk_box_pack_end(GTK_BOX(gtk_dialog_get_content_area(GTK_DIALOG(password_dialog))), entry_password, FALSE, FALSE, 0);
-    gtk_widget_show(entry_password);
-
-    gint result = gtk_dialog_run(GTK_DIALOG(password_dialog));
-    const std::string password = gtk_entry_get_text(GTK_ENTRY(entry_password));
-    gtk_widget_destroy(password_dialog);
+    auto show_password = true;
+    if (*priv->accountInfo_) {
+        std::string accountId = (*priv->accountInfo_)->id;
+        lrc::api::account::ConfProperties_t props;
+        props = (*priv->accountInfo_)->accountModel->getAccountConfig(accountId);
+        show_password = props.archiveHasPassword;
+    }
+
+    std::string password;
+    gint result = GTK_RESPONSE_OK;
+
+    if (show_password) {
+        GtkWidget* password_dialog = gtk_message_dialog_new(
+            GTK_WINDOW(gtk_widget_get_toplevel(GTK_WIDGET(view))),
+            (GtkDialogFlags)(GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT),
+            GTK_MESSAGE_QUESTION,
+            GTK_BUTTONS_OK_CANCEL,
+            _("Enter the password of your Jami account")
+        );
+
+        GtkWidget* entry_password = gtk_entry_new();
+        gtk_entry_set_visibility(GTK_ENTRY(entry_password), FALSE);
+        gtk_box_pack_end(GTK_BOX(gtk_dialog_get_content_area(GTK_DIALOG(password_dialog))), entry_password, FALSE, FALSE, 0);
+        gtk_widget_show(entry_password);
+
+        result = gtk_dialog_run(GTK_DIALOG(password_dialog));
+        password = gtk_entry_get_text(GTK_ENTRY(entry_password));
+        gtk_widget_destroy(password_dialog);
+    }
 
     switch(result)
     {
@@ -352,6 +365,19 @@ button_register_username_clicked(G_GNUC_UNUSED GtkButton* button, UsernameRegist
     }
 }
 
+static void
+username_registration_dialog_error(const char* msg)
+{
+    g_warning("%s", msg);
+    GtkWidget *dialog = gtk_message_dialog_new(NULL,
+                            (GtkDialogFlags)(GTK_DIALOG_MODAL),
+                            GTK_MESSAGE_ERROR, GTK_BUTTONS_CLOSE,
+                            "%s", msg);
+    gtk_window_set_title(GTK_WINDOW(dialog), _("Name registration Error"));
+    gtk_dialog_run(GTK_DIALOG(dialog));
+    gtk_widget_destroy(dialog);
+}
+
 static void
 build_view(UsernameRegistrationBox *view, gboolean register_button)
 {
@@ -404,13 +430,21 @@ build_view(UsernameRegistrationBox *view, gboolean register_button)
                             break;
                         }
                     case lrc::api::account::RegisterNameStatus::INVALID_NAME:
+                        gtk_widget_set_sensitive(priv->button_register_username, TRUE);
+                        username_registration_dialog_error(_("Unable to register name (Invalid name). Your username should contains between 3 and 32 alphanumerics characters (or underscore)."));
+                        break;
                     case lrc::api::account::RegisterNameStatus::WRONG_PASSWORD:
+                        gtk_widget_set_sensitive(priv->button_register_username, TRUE);
+                        username_registration_dialog_error(_("Unable to register name (Wrong password)."));
+                        break;
                     case lrc::api::account::RegisterNameStatus::ALREADY_TAKEN:
+                        gtk_widget_set_sensitive(priv->button_register_username, TRUE);
+                        username_registration_dialog_error(_("Unable to register name (Username already taken)."));
+                        break;
                     case lrc::api::account::RegisterNameStatus::NETWORK_ERROR:
-                        {
-                            gtk_widget_set_sensitive(priv->button_register_username, TRUE);
-                            break;
-                        }
+                        gtk_widget_set_sensitive(priv->button_register_username, TRUE);
+                        username_registration_dialog_error(_("Unable to register name (Network error) - check your connection."));
+                        break;
                     }
                 }
             );