diff --git a/modules/net/srv/dap_chain_net_srv.c b/modules/net/srv/dap_chain_net_srv.c
index 8a997d0319e3778a2a34d13bcdcc0cee112fcc7a..4556ef32e5a89f944b60a2c84dc97aaed2357a19 100644
--- a/modules/net/srv/dap_chain_net_srv.c
+++ b/modules/net/srv/dap_chain_net_srv.c
@@ -252,6 +252,9 @@ static int s_cli_net_srv( int argc, char **argv, char **a_str_reply)
 
         int8_t l_continent_num = dap_chain_net_srv_order_continent_to_num(l_continent_str);
 
+        const char *l_units_str = NULL;
+        dap_cli_server_cmd_find_option_val(argv, arg_index, argc, "-units", &l_units_str);
+
         char *l_order_hash_hex_str;
         char *l_order_hash_base58_str;
         // datum hash may be in hex or base58 format
@@ -467,7 +470,7 @@ static int s_cli_net_srv( int argc, char **argv, char **a_str_reply)
         }else if( dap_strcmp( l_order_str, "create" ) == 0 ){
             const char *l_order_cert_name = NULL;
             dap_cli_server_cmd_find_option_val(argv, arg_index, argc, "-cert", &l_order_cert_name);
-            if ( l_srv_uid_str && l_price_str && l_price_token_str && l_price_unit_str) {
+            if ( l_srv_uid_str && l_price_str && l_price_token_str && l_price_unit_str && l_units_str) {
                 dap_chain_net_srv_uid_t l_srv_uid={{0}};
                 dap_chain_node_addr_t l_node_addr={0};
                 dap_chain_hash_fast_t l_tx_cond_hash={{0}};
@@ -514,6 +517,7 @@ static int s_cli_net_srv( int argc, char **argv, char **a_str_reply)
                     dap_chain_hash_fast_from_str (l_tx_cond_hash_str, &l_tx_cond_hash);
                 l_price = dap_chain_balance_scan(l_price_str);
                 l_price_unit.uint32 = (uint32_t) atol ( l_price_unit_str );
+                uint64_t l_units = atoi(l_units_str);
                 strncpy(l_price_token, l_price_token_str, DAP_CHAIN_TICKER_SIZE_MAX - 1);
                 size_t l_ext_len = l_ext? strlen(l_ext) + 1 : 0;
                 // get cert to order sign
@@ -540,7 +544,7 @@ static int s_cli_net_srv( int argc, char **argv, char **a_str_reply)
                 // create order
                 char * l_order_new_hash_str = dap_chain_net_srv_order_create(
                             l_net,l_direction, l_srv_uid, l_node_addr,l_tx_cond_hash, &l_price, l_price_unit,
-                            l_price_token, l_expires, (uint8_t *)l_ext, l_ext_len, l_region_str, l_continent_num, l_key);
+                            l_price_token, l_expires, (uint8_t *)l_ext, l_ext_len, l_units, l_region_str, l_continent_num, l_key);
                 if(l_cert)
                     dap_cert_delete(l_cert);
                 if (l_order_new_hash_str)
@@ -749,6 +753,51 @@ static bool s_pay_verificator_callback(dap_ledger_t * a_ledger, dap_chain_tx_out
     return true;
 }
 
+int dap_chain_net_srv_price_apply_from_my_order(dap_chain_net_srv_t *a_srv, const char *a_config_section){
+    const char *l_wallet_path = dap_config_get_item_str_default(g_config, "resources", "wallets_path", NULL);
+    const char *l_wallet_name = dap_config_get_item_str_default(g_config, a_config_section, "wallet", NULL);
+    const char *l_net_name = dap_config_get_item_str_default(g_config, a_config_section, "net", NULL);
+    if (!l_wallet_path || !l_wallet_name || l_net_name){
+        return -2;
+    }
+    dap_chain_wallet_t *l_wallet = dap_chain_wallet_open(l_wallet_name, l_wallet_path);
+    if (!l_wallet) {
+        return -3;
+    }
+    dap_chain_net_t *l_net = dap_chain_net_by_name(l_net_name);
+    if (!l_net) {
+        return -4;
+    }
+    a_srv->grace_period = dap_config_get_item_uint32_default(g_config, a_config_section, "grace_period", 60);
+    int l_err_code = 0;
+    dap_chain_node_addr_t *l_node_addr = NULL;
+    l_node_addr = dap_chain_net_get_cur_addr(l_net);
+    if (!l_node_addr)
+        return -1;
+    size_t l_orders_count = 0;
+    char *l_gdb_order_group = dap_chain_net_srv_order_get_gdb_group(l_net);
+    dap_global_db_obj_t *l_orders = dap_global_db_get_all_sync(l_gdb_order_group, &l_orders_count);
+    for (size_t i=0; i < l_orders_count; i++){
+        l_err_code = -4;
+        dap_chain_net_srv_order_t *l_order = dap_chain_net_srv_order_read(l_orders[i].value, l_orders[i].value_len);
+        if (l_order->node_addr.uint64 == l_node_addr->uint64) {
+            l_err_code = 0;
+            dap_chain_net_srv_price_t *l_price = DAP_NEW_Z(dap_chain_net_srv_price_t);
+            l_price->net = l_net;
+            l_price->net_name = dap_strdup(l_net->pub.name);
+            l_price->value_datoshi = l_order->price;
+            dap_stpcpy(l_price->token, l_order->price_ticker);
+            l_price->units = l_order->units;
+            l_price->units_uid = l_order->price_unit;
+            l_price->wallet = l_wallet;
+            break;
+        }
+        DAP_DELETE(l_order);
+    }
+    dap_global_db_objs_delete(l_orders, l_orders_count);
+    return l_err_code;
+}
+
 int dap_chain_net_srv_parse_pricelist(dap_chain_net_srv_t *a_srv, const char *a_config_section)
 {
     int ret = 0;
@@ -878,7 +927,8 @@ dap_chain_net_srv_t* dap_chain_net_srv_add(dap_chain_net_srv_uid_t a_uid,
         l_sdata->uid = l_uid;
         strncpy(l_sdata->name, a_config_section, sizeof(l_sdata->name) - 1);
         l_sdata->srv = l_srv;
-        dap_chain_net_srv_parse_pricelist(l_srv, a_config_section);
+        dap_chain_net_srv_price_apply_from_my_order(l_srv, a_config_section);
+//        dap_chain_net_srv_parse_pricelist(l_srv, a_config_section);
         HASH_ADD(hh, s_srv_list, uid, sizeof(l_srv->uid), l_sdata);
         if (l_srv->pricelist)
             dap_chain_ledger_tx_add_notify(l_srv->pricelist->net->pub.ledger, dap_stream_ch_chain_net_srv_tx_cond_added_cb, NULL);
diff --git a/modules/net/srv/dap_chain_net_srv_order.c b/modules/net/srv/dap_chain_net_srv_order.c
index bc02a41a4c75c52ebf22128cc8053ebf37af163e..0bce760dbe92f80f10ac00d9ce2045d084c69543 100644
--- a/modules/net/srv/dap_chain_net_srv_order.c
+++ b/modules/net/srv/dap_chain_net_srv_order.c
@@ -307,13 +307,14 @@ char * dap_chain_net_srv_order_create(
         dap_time_t a_expires, // TS when the service expires
         const uint8_t *a_ext,
         uint32_t a_ext_size,
+        uint64_t a_units,
         const char *a_region,
         int8_t a_continent_num,
         dap_enc_key_t *a_key
         )
 {
     dap_chain_net_srv_order_t *l_order = dap_chain_net_srv_order_compose(a_net, a_direction, a_srv_uid, a_node_addr, a_tx_cond_hash, a_price,
-                                                                         a_price_unit, a_price_ticker, a_expires, a_ext, a_ext_size,
+                                                                         a_price_unit, a_price_ticker, a_expires, a_ext, a_ext_size, a_units,
                                                                          a_region, a_continent_num, a_key);
     if (!l_order)
         return NULL;
@@ -333,6 +334,7 @@ dap_chain_net_srv_order_t *dap_chain_net_srv_order_compose(dap_chain_net_t *a_ne
         dap_time_t a_expires, // TS when the service expires
         const uint8_t *a_ext,
         uint32_t a_ext_size,
+        uint64_t a_units,
         const char *a_region,
         int8_t a_continent_num,
         dap_enc_key_t *a_key
@@ -381,6 +383,7 @@ dap_chain_net_srv_order_t *dap_chain_net_srv_order_compose(dap_chain_net_t *a_ne
 
     if ( a_price_ticker)
         strncpy(l_order->price_ticker, a_price_ticker, DAP_CHAIN_TICKER_SIZE_MAX - 1);
+    l_order->units = a_units;
     dap_sign_t *l_sign = dap_sign_create(a_key, l_order, sizeof(dap_chain_net_srv_order_t) + l_order->ext_size, 0);
     if (!l_sign) {
         DAP_DELETE(l_order);
@@ -634,6 +637,7 @@ void dap_chain_net_srv_order_dump_to_string(dap_chain_net_srv_order_t *a_order,d
         dap_sign_get_pkey_hash(l_sign, &l_sign_pkey);
         char *l_sign_pkey_hash_str = dap_hash_fast_to_str_new(&l_sign_pkey);
         dap_string_append_printf(a_str_out, "  pkey:             %s\n", l_sign_pkey_hash_str);
+        dap_string_append_printf(a_str_out, "  units:            %zu\n", a_order->units);
         DAP_DELETE(l_sign_pkey_hash_str);
         // order state
 /*        {
diff --git a/modules/net/srv/include/dap_chain_net_srv.h b/modules/net/srv/include/dap_chain_net_srv.h
index 08db33f999802ef1582c25ee15c9d3e5ad283568..db494599b1f98d91e223da0869d1a5dd2d208b40 100755
--- a/modules/net/srv/include/dap_chain_net_srv.h
+++ b/modules/net/srv/include/dap_chain_net_srv.h
@@ -304,6 +304,7 @@ dap_chain_datum_tx_receipt_t * dap_chain_net_srv_issue_receipt(dap_chain_net_srv
                                                                const void * a_ext, size_t a_ext_size);
 uint8_t dap_stream_ch_chain_net_srv_get_id();
 int dap_chain_net_srv_parse_pricelist(dap_chain_net_srv_t *a_srv, const char *a_config_section);
+int dap_chain_net_srv_price_apply_from_my_order(dap_chain_net_srv_t *a_srv, const char *a_config_section);
 
 DAP_STATIC_INLINE const char * dap_chain_net_srv_price_unit_uid_to_str( dap_chain_net_srv_price_unit_uid_t a_uid )
 {
diff --git a/modules/net/srv/include/dap_chain_net_srv_order.h b/modules/net/srv/include/dap_chain_net_srv_order.h
index f6567816284835fc330a92c5831590209fb1d144..8aaed003363eee4eb69d0f6dacf64c46f5cec51c 100644
--- a/modules/net/srv/include/dap_chain_net_srv_order.h
+++ b/modules/net/srv/include/dap_chain_net_srv_order.h
@@ -65,7 +65,8 @@ typedef struct dap_chain_net_srv_order
     uint256_t price; //  service price in datoshi, for SERV_CLASS_ONCE ONCE for the whole service, for SERV_CLASS_PERMANENT  for one unit.
     char price_ticker[DAP_CHAIN_TICKER_SIZE_MAX]; // Token ticker to pay for service
     uint32_t ext_size;
-    byte_t free_space[128];  // for future changes
+    uint64_t units;
+    byte_t free_space[120];  // for future changes
     uint8_t ext_n_sign[];
 } DAP_ALIGN_PACKED dap_chain_net_srv_order_t;
 
@@ -132,6 +133,7 @@ char *dap_chain_net_srv_order_create(dap_chain_net_t * a_net,
         dap_time_t a_expires, // TS when the service expires
         const uint8_t *a_ext,
         uint32_t a_ext_size,
+        uint64_t a_units,
         const char *a_region,
         int8_t a_continent_num,
         dap_enc_key_t *a_key
@@ -149,6 +151,7 @@ dap_chain_net_srv_order_t *dap_chain_net_srv_order_compose(
         dap_time_t a_expires, // TS when the service expires
         const uint8_t *a_ext,
         uint32_t a_ext_size,
+        uint64_t a_units,
         const char *a_region,
         int8_t a_continent_num,
         dap_enc_key_t *a_key
diff --git a/modules/service/datum/dap_chain_net_srv_datum.c b/modules/service/datum/dap_chain_net_srv_datum.c
index f4e35a0afcd926d95e91cde15df89c675908faa5..ed5776f87e777b5bd1b2663f672b0a0f4f892167 100644
--- a/modules/service/datum/dap_chain_net_srv_datum.c
+++ b/modules/service/datum/dap_chain_net_srv_datum.c
@@ -51,7 +51,7 @@ int dap_chain_net_srv_datum_init()
         return -1;
     }
     s_srv_datum->uid.uint64 = DAP_CHAIN_NET_SRV_DATUM_ID;
-    int l_net_count = dap_chain_net_srv_parse_pricelist(s_srv_datum, "srv_datum");
+    dap_chain_net_srv_price_apply_from_my_order(s_srv_datum, "srv_datum");
     dap_chain_net_srv_price_t *l_price;
     DL_FOREACH(s_srv_datum->pricelist, l_price) {
         dap_chain_net_t *l_net = l_price->net;
diff --git a/modules/service/stake/dap_chain_net_srv_stake_pos_delegate.c b/modules/service/stake/dap_chain_net_srv_stake_pos_delegate.c
index 854480ccb02caf2ed4bb48c453404d934caf8433..b09e976a838d742deafaf717216e63736a551fb1 100644
--- a/modules/service/stake/dap_chain_net_srv_stake_pos_delegate.c
+++ b/modules/service/stake/dap_chain_net_srv_stake_pos_delegate.c
@@ -936,7 +936,7 @@ char *s_stake_order_create(dap_chain_net_t *a_net, uint256_t *a_fee, dap_enc_key
     dap_chain_net_srv_uid_t l_uid = { .uint64 = DAP_CHAIN_NET_SRV_STAKE_POS_DELEGATE_ID };
     char *l_order_hash_str = dap_chain_net_srv_order_create(a_net, l_dir, l_uid, *l_node_addr,
                                                             l_tx_hash, a_fee, l_unit, l_native_ticker, 0,
-                                                            NULL, 0, NULL, 0, a_key);
+                                                            NULL, 0, 1, NULL, 0, a_key);
     return l_order_hash_str;
 }
 
diff --git a/modules/service/xchange/dap_chain_net_srv_xchange.c b/modules/service/xchange/dap_chain_net_srv_xchange.c
index d12f23d1a9b6ee25ea058683f3f643f9a0b6b9b9..c7173809ebf11fb40fea3d62509f168b0492ed92 100644
--- a/modules/service/xchange/dap_chain_net_srv_xchange.c
+++ b/modules/service/xchange/dap_chain_net_srv_xchange.c
@@ -910,7 +910,7 @@ char *s_xchange_order_create(dap_chain_net_srv_xchange_price_t *a_price, dap_cha
     uint32_t l_ext_size = sizeof(dap_srv_xchange_order_ext_t);
     char *l_order_hash_str = dap_chain_net_srv_order_create(a_price->net, SERV_DIR_SELL, l_uid, *l_node_addr,
                                                             l_tx_hash, &a_price->datoshi_sell, l_unit, a_price->token_sell, 0,
-                                                            (uint8_t *)&l_ext, l_ext_size, NULL, 0, a_price->wallet_key);
+                                                            (uint8_t *)&l_ext, l_ext_size, 0, NULL, 0, a_price->wallet_key);
     return l_order_hash_str;
 }