diff --git a/modules/chain/dap_chain_ledger.c b/modules/chain/dap_chain_ledger.c
index c8b41104cee4810cb297e0d5463ed41c891c8cb1..fa171cb1b43c8064f775b710e2e4a41c93a6a9a8 100644
--- a/modules/chain/dap_chain_ledger.c
+++ b/modules/chain/dap_chain_ledger.c
@@ -1081,7 +1081,7 @@ int dap_chain_ledger_tx_add(dap_ledger_t *a_ledger, dap_chain_datum_tx_t *a_tx)
     if( (l_ret_check = dap_chain_ledger_tx_cache_check(
              a_ledger, a_tx, &l_list_bound_items, &l_list_tx_out)) < 0){
         log_it (L_WARNING, "dap_chain_ledger_tx_add() tx %s not passed the check: code %d ",l_tx_hash_str, l_ret_check);
-        return -1;
+        return l_ret_check*100;
     }
     log_it ( L_DEBUG, "dap_chain_ledger_tx_add() check passed for tx %s",l_tx_hash_str);
 
diff --git a/modules/channel/chain/dap_stream_ch_chain.c b/modules/channel/chain/dap_stream_ch_chain.c
index 27e9d17d4c1de614755cf6cbc72720b54a983b7b..28e07814004ca1acc1605b5a46f3a77c9337dcc1 100644
--- a/modules/channel/chain/dap_stream_ch_chain.c
+++ b/modules/channel/chain/dap_stream_ch_chain.c
@@ -247,10 +247,12 @@ bool s_chain_pkt_callback(dap_proc_thread_t *a_thread, void *a_arg)
                         do{
                             size_t l_atom_treshold_size;
                             // add into ledger
+                            log_it(L_DEBUG, "Try to add atom from treshold");
                             l_atom_treshold = l_chain->callback_atom_add_from_treshold(l_chain, &l_atom_treshold_size);
                             // add into file
                             if(l_atom_treshold) {
                                 int l_res = dap_chain_cell_file_append(l_cell, l_atom_treshold, l_atom_treshold_size);
+                                log_it(L_DEBUG, "Added atom from treshold");
                                 if(l_res < 0) {
                                     log_it(L_ERROR, "Can't save event 0x%x from treshold to the file '%s'",
                                             l_atom_treshold, l_cell ? l_cell->file_storage_path : "[null]");
@@ -513,7 +515,7 @@ void s_stream_ch_packet_in(dap_stream_ch_t* a_ch, void* a_arg)
                 memcpy(&l_ch_chain->request_net_id, &l_chain_pkt->hdr.net_id, sizeof(dap_chain_net_id_t));
                 memcpy(&l_ch_chain->request_chain_id, &l_chain_pkt->hdr.chain_id, sizeof(dap_chain_id_t));
                 memcpy(&l_ch_chain->request_cell_id, &l_chain_pkt->hdr.cell_id, sizeof(dap_chain_cell_id_t));
-                l_ch_chain->pkt_data = DAP_CALLOC(1, l_chain_pkt_data_size);
+                l_ch_chain->pkt_data = DAP_NEW_SIZE(byte_t, l_chain_pkt_data_size);
                 memcpy(l_ch_chain->pkt_data, l_chain_pkt->data, l_chain_pkt_data_size);
                 l_ch_chain->pkt_data_size = l_chain_pkt_data_size;
                 dap_events_socket_remove_from_worker_unsafe(a_ch->stream->esocket, a_ch->stream_worker->worker);
diff --git a/modules/channel/chain/include/dap_stream_ch_chain.h b/modules/channel/chain/include/dap_stream_ch_chain.h
index 17992a7de03552522bdae7834a2ddf6703cf74a4..931d2b9714da6e70195299854d5fffbf8bef4712 100644
--- a/modules/channel/chain/include/dap_stream_ch_chain.h
+++ b/modules/channel/chain/include/dap_stream_ch_chain.h
@@ -54,7 +54,7 @@ typedef struct dap_stream_ch_chain {
     dap_stream_ch_chain_state_t state;
 
     dap_chain_atom_iter_t * request_atom_iter;
-    uint8_t *pkt_data;
+    byte_t *pkt_data;
     uint64_t pkt_data_size;
     uint64_t stats_request_atoms_processed;
     uint64_t stats_request_gdb_processed;
diff --git a/modules/type/dag/dap_chain_cs_dag.c b/modules/type/dag/dap_chain_cs_dag.c
index e4a1c6f2eca226f83fb5f512487dff3fa40ec7c3..1d79b82d487a8be52ee6672f98b65f8ba6b06a7e 100644
--- a/modules/type/dag/dap_chain_cs_dag.c
+++ b/modules/type/dag/dap_chain_cs_dag.c
@@ -265,19 +265,20 @@ static int s_dap_chain_add_atom_to_ledger(dap_chain_cs_dag_t * a_dag, dap_ledger
       break;
     case DAP_CHAIN_DATUM_TX: {
       dap_chain_datum_tx_t *l_tx = (dap_chain_datum_tx_t*) l_datum->data;
+      // don't save bad transactions to base
+      int l_ret = dap_chain_ledger_tx_add(a_ledger, l_tx);
+      if( l_ret !=0 ) {
+        return l_ret;
+      }
       dap_chain_cs_dag_event_item_t * l_tx_event= DAP_NEW_Z(dap_chain_cs_dag_event_item_t);
       l_tx_event->ts_added = a_event_item->ts_added;
       l_tx_event->event = a_event_item->event;
       l_tx_event->event_size = a_event_item->event_size;
       memcpy(&l_tx_event->hash, &a_event_item->hash, sizeof (l_tx_event->hash) );
 
-
       HASH_ADD(hh,PVT(a_dag)->tx_events,hash,sizeof (l_tx_event->hash),l_tx_event);
 
-      // don't save bad transactions to base
-      if(dap_chain_ledger_tx_add(a_ledger, l_tx) != 1) {
-        return -1;
-      }
+
     }
       break;
     default:
@@ -375,8 +376,11 @@ static dap_chain_atom_verify_res_t s_chain_callback_atom_add(dap_chain_t * a_cha
         int l_consensus_check = s_dap_chain_add_atom_to_events_table(l_dag, a_chain->ledger, l_event_item);
         if(!l_consensus_check){
              log_it(L_DEBUG, "... added");
+        }else if (l_consensus_check == -5){
+            log_it(L_DEBUG, "... tresholded");
+            ret = ATOM_MOVE_TO_THRESHOLD;
         }else{
-             log_it(L_DEBUG, "... error adding");
+             log_it(L_DEBUG, "... error adding (code %d)", l_consensus_check);
              ret = ATOM_REJECT;
         }
     }