diff --git a/modules/common/dap_chain_datum.c b/modules/common/dap_chain_datum.c
index 7cd147dee2503cc39b68cd5f73ce1477831c261a..da5b9e9d81bd476a6556a0edd34a50fda5610771 100644
--- a/modules/common/dap_chain_datum.c
+++ b/modules/common/dap_chain_datum.c
@@ -887,7 +887,7 @@ void dap_chain_datum_dump_json(json_object  *a_obj_out, dap_chain_datum_t *a_dat
                             json_object_object_add(json_obj_datum,"auth signs total",json_object_new_uint64(l_token->signs_total));
                             json_object_object_add(json_obj_datum,"total_supply",json_object_new_string(dap_uint256_to_char(l_token->total_supply, NULL)));
 
-                            dap_chain_datum_token_flags_dump_to_json(json_obj_datum,l_token->header_private_update.flags);
+                            dap_chain_datum_token_flags_dump_to_json(json_obj_datum,l_token->header_private_decl.flags);
                             dap_datum_token_dump_tsd_to_json(json_obj_datum,l_token, l_token_size, a_hash_out_type);               
                             size_t l_certs_field_size = l_token_size - sizeof(*l_token) - l_token->header_private_update.tsd_total_size;
                             dap_chain_datum_token_certs_dump_to_json(json_obj_datum,l_token->tsd_n_signs + l_token->header_private_update.tsd_total_size,
@@ -926,7 +926,6 @@ void dap_chain_datum_dump_json(json_object  *a_obj_out, dap_chain_datum_t *a_dat
                             json_object_object_add(json_obj_datum,"auth signs total",json_object_new_uint64(l_token->signs_total));
                             json_object_object_add(json_obj_datum,"total_supply",json_object_new_string(dap_uint256_to_char(l_token->total_supply, NULL)));
                             
-                            dap_chain_datum_token_flags_dump_to_json(json_obj_datum, l_token->header_private_update.flags);
                             dap_datum_token_dump_tsd_to_json(json_obj_datum, l_token, l_token_size, a_hash_out_type);
                             size_t l_certs_field_size = l_token_size - sizeof(*l_token) - l_token->header_private_update.tsd_total_size;
                             dap_chain_datum_token_certs_dump_to_json(json_obj_datum, l_token->tsd_n_signs + l_token->header_private_update.tsd_total_size,
@@ -939,7 +938,6 @@ void dap_chain_datum_dump_json(json_object  *a_obj_out, dap_chain_datum_t *a_dat
                             json_object_object_add(json_obj_datum,"auth signs total",json_object_new_uint64(l_token->signs_total));
                             json_object_object_add(json_obj_datum,"total_supply",json_object_new_string(dap_uint256_to_char(l_token->total_supply, NULL)));
                             
-                            dap_chain_datum_token_flags_dump_to_json(json_obj_datum, l_token->header_native_update.flags);
                             dap_datum_token_dump_tsd_to_json(json_obj_datum, l_token, l_token_size, a_hash_out_type);
                             size_t l_certs_field_size = l_token_size - sizeof(*l_token) - l_token->header_native_update.tsd_total_size;
                             dap_chain_datum_token_certs_dump_to_json(json_obj_datum, l_token->tsd_n_signs + l_token->header_native_update.tsd_total_size,
diff --git a/modules/common/dap_chain_datum_token.c b/modules/common/dap_chain_datum_token.c
index 3dbb112d9375e75e874d9daa728cf622fc907a9d..30a7eccab318c9d17f95c5b733ddc152cc7ac322 100644
--- a/modules/common/dap_chain_datum_token.c
+++ b/modules/common/dap_chain_datum_token.c
@@ -113,7 +113,6 @@ dap_chain_datum_token_t *dap_chain_datum_token_read(const byte_t *a_token_serial
         *l_token = (dap_chain_datum_token_t) {
                 .type       = DAP_CHAIN_DATUM_TOKEN_TYPE_UPDATE,
                 .subtype    = DAP_CHAIN_DATUM_TOKEN_SUBTYPE_PRIVATE,
-                .header_private_update.flags            = l_token_old->header_private_update.flags,
                 .header_private_update.tsd_total_size   = l_token_old->header_private_update.tsd_total_size,
                 .header_private_update.decimals         = l_token_old->header_private_update.decimals
         };
@@ -133,7 +132,6 @@ dap_chain_datum_token_t *dap_chain_datum_token_read(const byte_t *a_token_serial
         *l_token = (dap_chain_datum_token_t) {
                 .type       = DAP_CHAIN_DATUM_TOKEN_TYPE_UPDATE,
                 .subtype    = DAP_CHAIN_DATUM_TOKEN_SUBTYPE_NATIVE,
-                .header_native_update.flags             = l_token_old->header_native_update.flags,
                 .header_native_update.tsd_total_size    = l_token_old->header_native_update.tsd_total_size,
                 .header_native_update.decimals          = l_token_old->header_native_update.decimals
         };
diff --git a/modules/common/include/dap_chain_datum_token.h b/modules/common/include/dap_chain_datum_token.h
index 0ca591b61e41fca0575a5ce2451d86c6ae9fa7da..fbd34ed4db77ed1dbaa60977c7121170eedcedd0 100644
--- a/modules/common/include/dap_chain_datum_token.h
+++ b/modules/common/include/dap_chain_datum_token.h
@@ -108,13 +108,13 @@ typedef struct dap_chain_datum_token {
         } DAP_ALIGN_PACKED header_native_decl;
         // Private token update
         struct {
-            uint16_t flags; // Token declaration flags
+            uint16_t padding; // OLD token declaration flags
             uint64_t tsd_total_size; // Data size section with values in key-length-value list trailing the signs section
             uint16_t decimals;
         } DAP_ALIGN_PACKED header_private_update;
         // native token update
         struct {
-            uint16_t flags; // Token declaration flags
+            uint16_t padding; // OLD Token declaration flags
             uint64_t tsd_total_size; // Data size section with values in key-length-value list trailing the signs section
             uint16_t decimals;
         } DAP_ALIGN_PACKED header_native_update;
diff --git a/modules/net/dap_chain_node_cli_cmd.c b/modules/net/dap_chain_node_cli_cmd.c
index 2f80da55f3bd3943a1a03295dc3dd14fc76b3d49..a1777fa114e544b8e024d44d1963faa7dccb5b5d 100644
--- a/modules/net/dap_chain_node_cli_cmd.c
+++ b/modules/net/dap_chain_node_cli_cmd.c
@@ -4119,7 +4119,7 @@ static int s_parse_common_token_decl_arg(int a_argc, char ** a_argv, void **a_st
     return 0;
 }
 
-static int s_parse_additional_token_decl_arg(int a_argc, char ** a_argv, void **a_str_reply, dap_sdk_cli_params* a_params)
+static int s_parse_additional_token_decl_arg(int a_argc, char ** a_argv, void **a_str_reply, dap_sdk_cli_params* a_params, bool a_update_token)
 {
     dap_cli_server_cmd_find_option_val(a_argv, 0, a_argc, "-flags", &a_params->ext.flags);
     dap_cli_server_cmd_find_option_val(a_argv, 0, a_argc, "-total_signs_valid", &a_params->ext.total_signs_valid);
@@ -4141,19 +4141,58 @@ static int s_parse_additional_token_decl_arg(int a_argc, char ** a_argv, void **
     char ** l_str_flags = NULL;
     a_params->ext.parsed_tsd_size = 0;
 
-    if (a_params->ext.flags){   // Flags
-         l_str_flags = dap_strsplit(a_params->ext.flags,",",0xffff );
-         while (l_str_flags && *l_str_flags){
-             uint16_t l_flag = dap_chain_datum_token_flag_from_str(*l_str_flags);
-             if (l_flag == DAP_CHAIN_DATUM_TOKEN_FLAG_UNDEFINED ){
-                 dap_cli_server_cmd_set_reply_text(a_str_reply, "Flag can't be \"%s\"",*l_str_flags);
-                 return -20;
-             }
-             l_flags |= l_flag; // if we have multiple flags
-             l_str_flags++;
+    if (!a_update_token) {
+        if (a_params->ext.flags){   // Flags
+            l_str_flags = dap_strsplit(a_params->ext.flags,",",0xffff );
+            while (l_str_flags && *l_str_flags){
+                uint16_t l_flag = dap_chain_datum_token_flag_from_str(*l_str_flags);
+                if (l_flag == DAP_CHAIN_DATUM_TOKEN_FLAG_UNDEFINED ){
+                    dap_cli_server_cmd_set_reply_text(a_str_reply, "Flag can't be \"%s\"",*l_str_flags);
+                    return -20;
+                }
+                l_flags |= l_flag; // if we have multiple flags
+                l_str_flags++;
+            }
+        }
+        a_params->ext.parsed_flags = l_flags;
+    } else {
+        const char *l_set_flags = NULL;
+        const char *l_unset_flags = NULL;
+        dap_cli_server_cmd_find_option_val(a_argv, 0, a_argc, "-flag_set", &l_set_flags);
+        dap_cli_server_cmd_find_option_val(a_argv, 0, a_argc, "-flag_unset", &l_unset_flags);
+        if (l_set_flags) {
+            l_str_flags = dap_strsplit(l_set_flags,",",0xffff );
+            while (l_str_flags && *l_str_flags){
+                uint16_t l_flag = dap_chain_datum_token_flag_from_str(*l_str_flags);
+                if (l_flag == DAP_CHAIN_DATUM_TOKEN_FLAG_UNDEFINED ){
+                    dap_cli_server_cmd_set_reply_text(a_str_reply, "Flag can't be \"%s\"",*l_str_flags);
+                    return -20;
+                }
+                l_flags |= l_flag; // if we have multiple flags
+                l_str_flags++;
+            }
+            dap_tsd_t *l_flag_set_tsd = dap_tsd_create_scalar(DAP_CHAIN_DATUM_TOKEN_TSD_TYPE_SET_FLAGS, l_flags);
+            l_flags = 0;
+            l_tsd_list = dap_list_append(l_tsd_list, l_flag_set_tsd);
+            l_tsd_total_size += dap_tsd_size(l_flag_set_tsd);
+        }
+        if (l_unset_flags) {
+            l_str_flags = dap_strsplit(l_unset_flags,",",0xffff );
+            while (l_str_flags && *l_str_flags){
+                uint16_t l_flag = dap_chain_datum_token_flag_from_str(*l_str_flags);
+                if (l_flag == DAP_CHAIN_DATUM_TOKEN_FLAG_UNDEFINED ){
+                    dap_cli_server_cmd_set_reply_text(a_str_reply, "Flag can't be \"%s\"",*l_str_flags);
+                    return -20;
+                }
+                l_flags |= l_flag; // if we have multiple flags
+                l_str_flags++;
+            }
+            dap_tsd_t *l_flag_unset_tsd = dap_tsd_create_scalar(DAP_CHAIN_DATUM_TOKEN_TSD_TYPE_UNSET_FLAGS, l_flags);
+            l_flags = 0;
+            l_tsd_list = dap_list_append(l_tsd_list, l_flag_unset_tsd);
+            l_tsd_total_size += dap_tsd_size(l_flag_unset_tsd);
         }
     }
-    a_params->ext.parsed_flags = l_flags;
 
     const char* l_new_certs_str = NULL;
     const char* l_remove_signs = NULL;
@@ -4233,7 +4272,7 @@ static int s_token_decl_check_params(int a_argc, char **a_argv, void **a_str_rep
     if (l_parse_params)
         return l_parse_params;
 
-    l_parse_params = s_parse_additional_token_decl_arg(a_argc,a_argv,a_str_reply,a_params);
+    l_parse_params = s_parse_additional_token_decl_arg(a_argc,a_argv,a_str_reply,a_params, a_update_token);
     if (l_parse_params)
         return l_parse_params;
 
@@ -4730,7 +4769,7 @@ int com_token_update(int a_argc, char ** a_argv, void **a_str_reply)
             if (l_params->subtype == DAP_CHAIN_DATUM_TOKEN_SUBTYPE_NATIVE) {
                 log_it(L_DEBUG,"Prepared TSD sections for CF20 token on %zd total size", l_params->ext.tsd_total_size);
                 snprintf(l_datum_token->ticker, sizeof(l_datum_token->ticker), "%s", l_ticker);
-                l_datum_token->header_native_update.flags = l_params->ext.parsed_flags;
+                // l_datum_token->header_native_update.flags = l_params->ext.parsed_flags;
                 l_datum_token->total_supply = l_total_supply;
                 l_datum_token->signs_valid = l_signs_emission;
                 l_datum_token->header_native_update.tsd_total_size = l_params->ext.tsd_total_size;
@@ -4739,7 +4778,7 @@ int com_token_update(int a_argc, char ** a_argv, void **a_str_reply)
             } else { // if (l_params->type == DAP_CHAIN_DATUM_TOKEN_TYPE_PRIVATE_UPDATE) {
                 log_it(L_DEBUG,"Prepared TSD sections for private token on %zd total size", l_params->ext.tsd_total_size);
                 snprintf(l_datum_token->ticker, sizeof(l_datum_token->ticker), "%s", l_ticker);
-                l_datum_token->header_private_update.flags = l_params->ext.parsed_flags;
+                // l_datum_token->header_private_update.flags = l_params->ext.parsed_flags;
                 l_datum_token->total_supply = l_total_supply;
                 l_datum_token->signs_valid = l_signs_emission;
                 l_datum_token->header_private_update.tsd_total_size = l_params->ext.tsd_total_size;