diff --git a/modules/net/srv/dap_chain_net_srv_order.c b/modules/net/srv/dap_chain_net_srv_order.c
index 21a665550d5fa377c00ad442429ade10acd9aa1a..55763796b9ec381f5a29447cb356cd95d8425944 100644
--- a/modules/net/srv/dap_chain_net_srv_order.c
+++ b/modules/net/srv/dap_chain_net_srv_order.c
@@ -30,6 +30,7 @@
 #include "dap_enc_base58.h"
 #include "dap_global_db.h"
 #include "dap_chain_net_srv_countries.h"
+#include "dap_chain_net_srv_stake_pos_delegate.h"
 
 #define LOG_TAG "dap_chain_net_srv_order"
 
@@ -617,6 +618,22 @@ static void s_srv_order_callback_notify(dap_global_db_context_t *a_context, dap_
                     log_it(L_ERROR, "Order unverified, err %d", l_verify);
                     dap_global_db_del_unsafe(l_gdb_context, a_obj->group, a_obj->key);
                 }
+                // Check new order is signs delegated key
+                for (size_t l_offset = 0; l_offset < l_max_size;) {
+                    dap_sign_t *l_tmp_sign = (dap_sign_t*)(l_sign + l_offset);
+                    l_offset += dap_sign_get_size(l_tmp_sign);
+                    dap_hash_fast_t l_pkey_hash = {0};
+                    dap_sign_get_pkey_hash(l_sign, &l_pkey_hash);
+                    dap_chain_addr_t l_addr = {0};
+                    dap_chain_addr_fill(&l_addr, l_tmp_sign->header.type, &l_pkey_hash, l_net->pub.id);
+                    if (!dap_chain_net_srv_stake_key_delegated(&l_addr)) {
+                        char *l_pkey_hash_str = dap_hash_fast_to_str_new(&l_pkey_hash);
+                        log_it(L_ERROR, "Order %s signed by the non-delegated public key %s.", a_obj->key, l_pkey_hash_str);
+                        DAP_DELETE(l_pkey_hash_str);
+                        dap_global_db_del_unsafe(l_gdb_context, a_obj->group, a_obj->key);
+                        break;
+                    }
+                }
                 /*dap_chain_hash_fast_t l_pkey_hash;
                 if (!dap_sign_get_pkey_hash(l_sign, &l_pkey_hash)) {
                     dap_global_db_gr_del(dap_strdup(a_key), a_group);
diff --git a/modules/service/stake_pos_delegate/include/dap_chain_net_srv_stake_pos_delegate.h b/modules/service/stake_pos_delegate/include/dap_chain_net_srv_stake_pos_delegate.h
index 2f940c6e074ddfa5bc332a882f6318dc751a15f8..e54785d97c881dd05b5c34dd5b704da8c909ec49 100644
--- a/modules/service/stake_pos_delegate/include/dap_chain_net_srv_stake_pos_delegate.h
+++ b/modules/service/stake_pos_delegate/include/dap_chain_net_srv_stake_pos_delegate.h
@@ -74,3 +74,4 @@ void dap_chain_net_srv_stake_get_fee_validators(dap_chain_net_t *a_net, dap_stri
 
 int dap_chain_net_srv_stake_load_cache(dap_chain_net_t *a_net);
 void dap_chain_net_srv_stake_cache_purge(dap_chain_net_t *a_net);
+