diff --git a/native/dubp_rs/src/secret_code.rs b/native/dubp_rs/src/secret_code.rs
index 3666705c79666fd8334893b676d2199a1d98cbbe..2020b3760c8a97ffb631615bdc35c8e46161e7df 100644
--- a/native/dubp_rs/src/secret_code.rs
+++ b/native/dubp_rs/src/secret_code.rs
@@ -32,7 +32,11 @@ pub(crate) fn compute_secret_code_len(
         }
         SecretCodeType::Letters => {
             if member_wallet {
-                Ok(10)
+                if log_n >= 15 {
+                    Ok(7)
+                } else {
+                    Ok(8)
+                }
             } else if log_n >= 15 {
                 Ok(5)
             } else {
diff --git a/packages/dubp_rs/lib/dubp.dart b/packages/dubp_rs/lib/dubp.dart
index d5efb5c09560edb219965874428ae93ed2a9ea15..d4d41634b1e185c5cccb38d53bf61d89d6fc3499 100644
--- a/packages/dubp_rs/lib/dubp.dart
+++ b/packages/dubp_rs/lib/dubp.dart
@@ -122,6 +122,7 @@ class DubpRust {
     String salt,
     String password,
     SecretCodeType secretCodeType = SecretCodeType.letters,
+    bool isMember = false,
   }) async {
     int ram = SysInfo.getTotalPhysicalMemory();
     print('ram=$ram');
@@ -134,7 +135,7 @@ class DubpRust {
       Utf8.toUtf8(currency),
       Utf8.toUtf8(salt),
       Utf8.toUtf8(password),
-      0,
+      isMember ? 1 : 0,
       secretCodeType.index,
       ram,
     );