diff --git a/modules/net/dap_chain_ledger.c b/modules/net/dap_chain_ledger.c
index 2b6e49df66c572470ad1d2c1185fa581d01eb2fb..1175e39508913ef9da5a303c96b276dbc9f3737d 100644
--- a/modules/net/dap_chain_ledger.c
+++ b/modules/net/dap_chain_ledger.c
@@ -4705,7 +4705,7 @@ int dap_ledger_tx_add(dap_ledger_t *a_ledger, dap_chain_datum_tx_t *a_tx, dap_ha
     l_tx_item->cache_data.multichannel = l_multichannel;
     l_tx_item->ts_added = dap_nanotime_now();
     pthread_rwlock_wrlock(&l_ledger_pvt->ledger_rwlock);
-    if (dap_chain_net_get_load_mode(a_ledger->net))
+    if (dap_chain_net_get_load_mode(a_ledger->net) || dap_chain_net_get_state(a_ledger->net) == NET_STATE_SYNC_CHAINS)
         HASH_ADD(hh, l_ledger_pvt->ledger_items, tx_hash_fast, sizeof(dap_chain_hash_fast_t), l_tx_item);
     else
         HASH_ADD_INORDER(hh, l_ledger_pvt->ledger_items, tx_hash_fast, sizeof(dap_chain_hash_fast_t),
diff --git a/modules/net/dap_chain_net.c b/modules/net/dap_chain_net.c
index 909692910a3e6492361c5a6db9db0c8d1d197723..4ba06647b8635c3beddbc5125ae6ab692884ab2c 100644
--- a/modules/net/dap_chain_net.c
+++ b/modules/net/dap_chain_net.c
@@ -677,6 +677,8 @@ static bool s_net_states_proc(void *a_arg)
     dap_chain_net_pvt_t *l_net_pvt = PVT(l_net);
     assert(l_net_pvt);
     if (l_net_pvt->state_target == NET_STATE_OFFLINE) {
+        if(l_net_pvt->state == NET_STATE_SYNC_CHAINS)
+            dap_leger_load_end(l_net->pub.ledger);
         l_net_pvt->state = NET_STATE_OFFLINE;
     }
 
@@ -686,8 +688,11 @@ static bool s_net_states_proc(void *a_arg)
             log_it(L_NOTICE,"%s.state: NET_STATE_OFFLINE", l_net->pub.name);
             // delete all links
             if ( l_net_pvt->state_target != NET_STATE_OFFLINE ){
+                dap_chain_net_state_t l_prev_state = l_net_pvt->state;
                 l_net_pvt->state = NET_STATE_LINKS_PREPARE;
                 l_repeat_after_exit = true;
+                if(l_prev_state == NET_STATE_SYNC_CHAINS)
+                    dap_leger_load_end(l_net->pub.ledger);
             }
             l_net_pvt->last_sync = 0;
         } break;
@@ -2588,10 +2593,13 @@ static void s_sync_timer_callback(void *a_arg)
             l_net_pvt->sync_context.cur_chain = l_net_pvt->sync_context.cur_chain->next;
             log_it(L_DEBUG, "[%s:%d] Go to next chain %p", __FUNCTION__, __LINE__, l_net_pvt->sync_context.cur_chain);
             if (!l_net_pvt->sync_context.cur_chain) {
+                dap_chain_net_state_t l_prev_state = l_net_pvt->state;
                 if (l_net_pvt->sync_context.last_state == SYNC_STATE_SYNCED) {
                     l_net_pvt->state = NET_STATE_ONLINE;
                     l_net_pvt->sync_context.state = l_net_pvt->sync_context.last_state = SYNC_STATE_IDLE;
                     s_net_states_proc(l_net);
+                    if(l_prev_state == NET_STATE_SYNC_CHAINS)
+                        dap_leger_load_end(l_net->pub.ledger);
                 } else
                     l_net_pvt->sync_context.state = l_net_pvt->sync_context.last_state = SYNC_STATE_WAITING;
                 return;
@@ -2968,6 +2976,8 @@ void dap_chain_net_set_state(dap_chain_net_t *l_net, dap_chain_net_state_t a_sta
     if(a_state == PVT(l_net)->state){
         return;
     }
+    if(PVT(l_net)->state == NET_STATE_SYNC_CHAINS)
+        dap_leger_load_end(l_net->pub.ledger);
     PVT(l_net)->state = a_state;
     dap_proc_thread_callback_add(NULL, s_net_states_proc, l_net);
 }