diff --git a/modules/net/dap_chain_node_cli_cmd_tx.c b/modules/net/dap_chain_node_cli_cmd_tx.c
index 8f6b7b933c833597348b90bc9f496ca465af833c..af7f13a69b1cde0a8b00eab97c7f8e2a4a731eea 100644
--- a/modules/net/dap_chain_node_cli_cmd_tx.c
+++ b/modules/net/dap_chain_node_cli_cmd_tx.c
@@ -494,7 +494,6 @@ json_object* dap_db_history_addr(dap_chain_addr_t *a_addr, dap_chain_t *a_chain,
                     l_src_str = l_src_addr_str = dap_chain_addr_to_str(l_src_addr);
                 else
                     l_src_str = dap_chain_tx_out_cond_subtype_to_str(l_src_subtype);
-
                 if (l_is_unstake)
                     l_value = l_unstake_value;
                 else if (!dap_strcmp(l_native_ticker, l_noaddr_token)) {
diff --git a/modules/service/stake/dap_chain_net_srv_stake_lock.c b/modules/service/stake/dap_chain_net_srv_stake_lock.c
index bd1fd409b111b0cfc3ec75496c6804cfc65cbd73..619a3e7ebf57b061f8d2ef4322dc00ee63ccec26 100644
--- a/modules/service/stake/dap_chain_net_srv_stake_lock.c
+++ b/modules/service/stake/dap_chain_net_srv_stake_lock.c
@@ -104,7 +104,7 @@ dap_chain_datum_t *s_stake_unlock_datum_create(dap_chain_net_t *a_net, dap_enc_k
                                                dap_hash_fast_t *a_stake_tx_hash, uint32_t a_prev_cond_idx,
                                                const char *a_main_ticker, uint256_t a_value,
                                                uint256_t a_value_fee,
-                                               const char *a_delegated_ticker_str, uint256_t a_delegated_value);
+                                               const char *a_delegated_ticker_str, uint256_t a_delegated_value,int *res);
 // Callbacks
 static void s_stake_lock_callback_updater(dap_ledger_t *a_ledger, dap_chain_datum_tx_t *a_tx, dap_chain_tx_out_cond_t *a_prev_out_item);
 static bool s_stake_lock_callback_verificator(dap_ledger_t *a_ledger, dap_chain_tx_out_cond_t *a_cond, dap_chain_datum_tx_t *a_tx_in, bool a_owner);
@@ -482,10 +482,12 @@ static enum error_code s_cli_take(int a_argc, char **a_argv, int a_arg_index, da
         dap_enc_key_delete(l_owner_key);
         return NOT_ENOUGH_TIME;
     }
-
+    int res = 0;
     l_datum = s_stake_unlock_datum_create(l_net, l_owner_key, &l_tx_hash, l_prev_cond_idx,
                                           l_ticker_str, l_tx_out_cond->header.value, l_value_fee,
-                                          l_delegated_ticker_str, l_value_delegated);
+                                          l_delegated_ticker_str, l_value_delegated,&res);
+    if(res == -3)
+        dap_string_append_printf(output_line, "Total fee more than stake\n");
 
     dap_enc_key_delete(l_owner_key);  // need wallet close??
     // Processing will be made according to autoprocess policy
@@ -1171,11 +1173,11 @@ dap_chain_datum_t *s_stake_unlock_datum_create(dap_chain_net_t *a_net, dap_enc_k
                                                dap_hash_fast_t *a_stake_tx_hash, uint32_t a_prev_cond_idx,
                                                const char *a_main_ticker, uint256_t a_value,
                                                uint256_t a_value_fee,
-                                               const char *a_delegated_ticker_str, uint256_t a_delegated_value)
+                                               const char *a_delegated_ticker_str, uint256_t a_delegated_value,int *result)
 {
     // check valid param
     if (!a_net | !a_key_from || !a_key_from->priv_key_data || !a_key_from->priv_key_data_size || dap_hash_fast_is_blank(a_stake_tx_hash))
-        return NULL;
+        *result = -1;
 
     const char *l_native_ticker = a_net->pub.native_ticker;
     bool l_main_native = !dap_strcmp(a_main_ticker, l_native_ticker);
@@ -1194,27 +1196,11 @@ dap_chain_datum_t *s_stake_unlock_datum_create(dap_chain_net_t *a_net, dap_enc_k
                                                                     &l_addr, l_total_fee, &l_fee_transfer);
             if (!l_list_fee_out) {
                 log_it(L_WARNING, "Not enough funds to pay fee");
-                return NULL;
+                *result = -2;
             }
         } else if (compare256(a_value, l_total_fee) == -1) {
-            uint256_t l_fee_part;
-            SUBTRACT_256_256(l_total_fee, a_value, &l_fee_part);
-            l_list_fee_out = dap_ledger_get_list_tx_outs_with_val(a_net->pub.ledger, l_native_ticker,
-                                                                    &l_addr, l_fee_part, &l_fee_transfer);
-            char *l_total = dap_chain_balance_to_coins(!IS_ZERO_256(l_total_fee) ? l_total_fee : uint256_0);
-            char *l_value = dap_chain_balance_to_coins(a_value);
-            char *l_sub = dap_chain_balance_to_coins(l_fee_part);
-            char *l_transf = dap_chain_balance_to_coins(l_fee_part);
-            log_it(L_WARNING, "Total fee more than stake, total - (%s), stake - (%s), sub - (%s), transf - (%s) ",
-                                                            l_total, l_value, l_sub, l_transf);
-            DAP_DELETE(l_total);
-            DAP_DELETE(l_value);
-            DAP_DELETE(l_sub);
-            DAP_DELETE(l_transf);
-            if (!l_list_fee_out) {
-                log_it(L_WARNING, "Not enough funds to pay fee");
-                return NULL;
-            }
+            log_it(L_WARNING, "Total fee more than stake");
+            *result = -3;
         }
     }
     if (!IS_ZERO_256(a_delegated_value)) {
@@ -1222,7 +1208,7 @@ dap_chain_datum_t *s_stake_unlock_datum_create(dap_chain_net_t *a_net, dap_enc_k
                                                                                  &l_addr, a_delegated_value, &l_value_transfer);
         if(!l_list_used_out) {
             log_it( L_ERROR, "Nothing to transfer (not enough delegated tokens)");
-            return NULL;
+            *result = -4;
         }
     }
 
@@ -1252,7 +1238,7 @@ dap_chain_datum_t *s_stake_unlock_datum_create(dap_chain_net_t *a_net, dap_enc_k
         if(l_net_fee_used){
             if (!dap_chain_datum_tx_add_out_ext_item(&l_tx, &l_addr_fee, l_net_fee, l_native_ticker)){
                 dap_chain_datum_tx_delete(l_tx);
-                return NULL;
+                *result = -5;
             }
             SUM_256_256(l_value_pack, l_net_fee, &l_value_pack);
         }
@@ -1264,23 +1250,34 @@ dap_chain_datum_t *s_stake_unlock_datum_create(dap_chain_net_t *a_net, dap_enc_k
             }
             else {
                 dap_chain_datum_tx_delete(l_tx);
-                return NULL;
+                *result = -6;
             }
         }
         // coin back
-        SUBTRACT_256_256(l_fee_transfer, l_value_pack, &l_value_back);
-        if (l_main_native) {
-            // add unlock value to coin back
-            SUM_256_256(l_value_back, a_value, &l_value_back);
-        } else if (dap_chain_datum_tx_add_out_ext_item(&l_tx, &l_addr, a_value, a_main_ticker)!=1) {
-            dap_chain_datum_tx_delete(l_tx);
-            return NULL;
-        }
-        if(!IS_ZERO_256(l_value_back)) {
-            if (dap_chain_datum_tx_add_out_ext_item(&l_tx, &l_addr, l_value_back, l_native_ticker) != 1) {
+        //SUBTRACT_256_256(l_fee_transfer, l_value_pack, &l_value_back);
+        if(l_main_native){
+            SUBTRACT_256_256(a_value, l_value_pack, &l_value_back);
+            if(!IS_ZERO_256(l_value_back)) {
+                if (dap_chain_datum_tx_add_out_ext_item(&l_tx, &l_addr, l_value_back, a_main_ticker)!=1) {
+                    dap_chain_datum_tx_delete(l_tx);
+                    *result = -7;
+                }
+            }
+        } else {
+            SUBTRACT_256_256(l_fee_transfer, l_value_pack, &l_value_back);
+            if (dap_chain_datum_tx_add_out_ext_item(&l_tx, &l_addr, a_value, a_main_ticker)!=1) {
                 dap_chain_datum_tx_delete(l_tx);
+                *result = -8;
                 return NULL;
             }
+            else
+            {
+                if (dap_chain_datum_tx_add_out_ext_item(&l_tx, &l_addr, l_value_back, l_native_ticker)!=1) {
+                    dap_chain_datum_tx_delete(l_tx);
+                    *result = -9;
+                    return NULL;
+                }
+            }
         }
     }
 
@@ -1289,14 +1286,14 @@ dap_chain_datum_t *s_stake_unlock_datum_create(dap_chain_net_t *a_net, dap_enc_k
         if (dap_chain_datum_tx_add_out_ext_item(&l_tx, &c_dap_chain_addr_blank,
                                                a_delegated_value, a_delegated_ticker_str) != 1) {
             dap_chain_datum_tx_delete(l_tx);
-            return NULL;
+            *result = -10;
         }
         // delegated token coin back
         SUBTRACT_256_256(l_value_transfer, a_delegated_value, &l_value_back);
         if (!IS_ZERO_256(l_value_back)) {
             if (dap_chain_datum_tx_add_out_ext_item(&l_tx, &l_addr, l_value_back, a_delegated_ticker_str) != 1) {
                 dap_chain_datum_tx_delete(l_tx);
-                return NULL;
+                *result = -11;
             }
         }
     }
@@ -1304,7 +1301,7 @@ dap_chain_datum_t *s_stake_unlock_datum_create(dap_chain_net_t *a_net, dap_enc_k
     // add 'sign' items
     if(dap_chain_datum_tx_add_sign_item(&l_tx, a_key_from) != 1) {
         dap_chain_datum_tx_delete(l_tx);
-        return NULL;
+        *result = -12;
     }
 
     size_t l_tx_size = dap_chain_datum_tx_get_size(l_tx);