diff --git a/modules/net/dap_chain_node_cli.c b/modules/net/dap_chain_node_cli.c
index 95917a8314a40a1c0757cbde63ba043782a5b3ba..b6300743314daad2ff03f8437be9c5e747326596 100644
--- a/modules/net/dap_chain_node_cli.c
+++ b/modules/net/dap_chain_node_cli.c
@@ -126,7 +126,8 @@ int dap_chain_node_cli_init(dap_config_t * g_config)
                             "wallet new -w <wallet_name> [-sign <sign_type>] [-restore <hex_value>] [-net <net_name>] [-force] [-password <password>] [-restore <hash>]\n"
                             "wallet info {-addr <addr> | -w <wallet_name>} -net <net_name>\n"
                             "wallet activate -w <wallet_name> -password <password> [-ttl <password_ttl_in_minutes>]\n"
-                            "wallet deactivate -w <wallet_name> -password <password>\n");
+                            "wallet deactivate -w <wallet_name> -password <password>\n"
+                            "wallet convert -w <wallet_name> -password <password>\n");
 
 
     // Token commands
diff --git a/modules/net/dap_chain_node_cli_cmd.c b/modules/net/dap_chain_node_cli_cmd.c
index bcc6e38b71906f36d019177016aa4c855fc2795a..219a07b85ce7aab76d5aab715ba9bcacc1c2e3ef 100644
--- a/modules/net/dap_chain_node_cli_cmd.c
+++ b/modules/net/dap_chain_node_cli_cmd.c
@@ -67,6 +67,7 @@
 #include "dap_file_utils.h"
 #include "dap_enc_base58.h"
 #include "dap_chain_wallet.h"
+#include "dap_chain_wallet_internal.h"
 #include "dap_chain_node.h"
 #include "dap_global_db.h"
 #include "dap_global_db_driver.h"
@@ -1831,7 +1832,7 @@ int com_help(int a_argc, char **a_argv, char **a_str_reply)
 int com_tx_wallet(int a_argc, char **a_argv, char **a_str_reply)
 {
 const char *c_wallets_path = dap_chain_wallet_get_path(g_config);
-enum { CMD_NONE, CMD_WALLET_NEW, CMD_WALLET_LIST, CMD_WALLET_INFO, CMD_WALLET_ACTIVATE, CMD_WALLET_DEACTIVATE };
+enum { CMD_NONE, CMD_WALLET_NEW, CMD_WALLET_LIST, CMD_WALLET_INFO, CMD_WALLET_ACTIVATE, CMD_WALLET_DEACTIVATE, CMD_WALLET_CONVERT };
 int l_arg_index = 1, l_rc, cmd_num = CMD_NONE;
 char    l_buf[1024];
 
@@ -1847,6 +1848,8 @@ char    l_buf[1024];
         cmd_num = CMD_WALLET_ACTIVATE;
     else if(dap_cli_server_cmd_find_option_val(a_argv, l_arg_index, min(a_argc, l_arg_index + 1), "deactivate", NULL))
         cmd_num = CMD_WALLET_DEACTIVATE;
+    else if(dap_cli_server_cmd_find_option_val(a_argv, l_arg_index, min(a_argc, l_arg_index + 1), "convert", NULL))
+        cmd_num = CMD_WALLET_CONVERT;
 
     l_arg_index++;
 
@@ -2030,7 +2033,7 @@ char    l_buf[1024];
                             dap_chain_addr_t *l_addr = l_net? dap_chain_wallet_get_addr(l_wallet, l_net->pub.id) : NULL;
                             char *l_addr_str = dap_chain_addr_to_str(l_addr);
 
-                            dap_string_append_printf(l_l_string_ret, "Wallet: %s%s\n", l_wallet->name,
+                            dap_string_append_printf(l_l_string_ret, "Wallet: %.*s%s\n", (int) l_file_name_len - 8, l_file_name,
                                 (l_wallet->flags & DAP_WALLET$M_FL_ACTIVE) ? " (Active)" : "");
 
                             if (l_addr_str)
@@ -2042,6 +2045,8 @@ char    l_buf[1024];
                             dap_chain_wallet_close(l_wallet);
 
                         } else dap_string_append_printf(l_l_string_ret, "Wallet: %.*s (non-Active)\n", (int) l_file_name_len - 8, l_file_name);
+                    } else if ((l_file_name_len > 7) && (!strcmp(l_file_name + l_file_name_len - 7, ".backup"))) {
+                        dap_string_append_printf(l_l_string_ret, "Wallet: %.*s (Backup)\n", (int) l_file_name_len - 7, l_file_name);
                     }
                 }
                 closedir(l_dir);
@@ -2134,6 +2139,53 @@ char    l_buf[1024];
             }
         }
         break;
+
+        // convert wallet
+        case CMD_WALLET_CONVERT: {
+            dap_chain_wallet_t *l_wallet = NULL;
+            dap_cli_server_cmd_find_option_val(a_argv, l_arg_index, a_argc, "-password", &l_pass_str);
+
+            if(!l_wallet_name) {
+                dap_cli_server_cmd_set_reply_text(a_str_reply, "Wallet name option <-w>  not defined");
+                return -EINVAL;
+            }
+
+            if(!l_pass_str) {
+                dap_cli_server_cmd_set_reply_text(a_str_reply, "Wallet password option <-password>  not defined");
+                return -EINVAL;
+            }
+
+            l_wallet = dap_chain_wallet_open(l_wallet_name, c_wallets_path);
+            if (!l_wallet) {
+                dap_cli_server_cmd_set_reply_text(a_str_reply, "wrong password");
+                return -1;
+            } else if (l_wallet->flags & DAP_WALLET$M_FL_ACTIVE) {
+                dap_cli_server_cmd_set_reply_text(a_str_reply, "Wallet can't be converted twice");
+                return  -1;
+            }
+            // create wallet backup
+            dap_chain_wallet_internal_t* l_file_name = DAP_CHAIN_WALLET_INTERNAL(l_wallet);
+            time_t rawtime;  // add timestamp to filename
+            char l_timestamp[16];
+            time(&rawtime);
+            strftime(l_timestamp,16,"%G%m%d%H%M%S", localtime (&rawtime));
+            snprintf(l_file_name->file_name, sizeof(l_file_name->file_name)  - 1, "%s/%s_%s%s", c_wallets_path, l_wallet_name, l_timestamp,".backup");
+            if ( dap_chain_wallet_save(l_wallet, NULL) ) {
+                dap_cli_server_cmd_set_reply_text(a_str_reply, "Can't create backup wallet file because of internal error");
+                return  -1;
+            }
+            // change to old filename
+            snprintf(l_file_name->file_name, sizeof(l_file_name->file_name)  - 1, "%s/%s%s", c_wallets_path, l_wallet_name, ".dwallet");
+            if ( dap_chain_wallet_save(l_wallet, l_pass_str) ) {
+                dap_cli_server_cmd_set_reply_text(a_str_reply, "Wallet is not converted because of internal error");
+                return  -1;
+            }
+
+            log_it(L_INFO, "Wallet %s has been converted", l_wallet_name);
+            dap_string_append_printf(l_l_string_ret, "Wallet: %s successfully converted\n", l_wallet_name);
+            dap_chain_wallet_close(l_wallet);
+        }
+        break;
     }
 
     *a_str_reply = dap_string_free(l_l_string_ret, false);
diff --git a/modules/wallet/dap_chain_wallet.c b/modules/wallet/dap_chain_wallet.c
index db0b7c4c42d31458945660aca581f3e29b958ff5..1c02e0be223b8dbb2f77526aa8032f26dd13cc27 100644
--- a/modules/wallet/dap_chain_wallet.c
+++ b/modules/wallet/dap_chain_wallet.c
@@ -609,7 +609,7 @@ if ( a_pass )
         .signature  = DAP_CHAIN_WALLETS_FILE_SIGNATURE,
         .version    = a_pass ? DAP_WALLET$K_VER_2 : DAP_WALLET$K_VER_1,
         .type       = a_pass ? DAP_WALLET$K_TYPE_GOST89 : DAP_WALLET$K_TYPE_PLAIN,
-        .wallet_len = strnlen(l_cp, DAP_WALLET$SZ_NAME) + 1
+        .wallet_len = strnlen(l_cp, DAP_WALLET$SZ_NAME)
     };
 
     iovec_t l_iov[] = {