diff --git a/lib/providers/generate_wallets.dart b/lib/providers/generate_wallets.dart
index 3cbe93078be0a7974606298ff375c1018a4a6ead..a180d4ddb450045ffce9c7ddbabbba8af2d56c11 100644
--- a/lib/providers/generate_wallets.dart
+++ b/lib/providers/generate_wallets.dart
@@ -23,7 +23,7 @@ class GenerateWalletsProvider with ChangeNotifier {
   bool isAskedWordValid = false;
   int scanedValidWalletNumber = -1;
   int scanedWalletNumber = -1;
-  int numberScan = 20;
+  int numberScan = 60;
 
   late int nbrWord;
   String? nbrWordAlpha;
@@ -301,6 +301,7 @@ class GenerateWalletsProvider with ChangeNotifier {
     bool isAlive = false;
     scanedValidWalletNumber = 0;
     scanedWalletNumber = 0;
+    Map<String, int> addressToScan = {};
     notifyListeners();
 
     if (!sub.nodeConnected) {
@@ -315,37 +316,38 @@ class GenerateWalletsProvider with ChangeNotifier {
       isAlive = true;
     }
 
-    for (var derivationNbr in [for (var i = 0; i < numberScan; i += 1) i]) {
+    for (int derivationNbr in [for (var i = 0; i < numberScan; i += 1) i]) {
       final addressData = await sub.sdk.api.keyring.addressFromMnemonic(
           sub.currencyParameters['ss58']!,
           cryptoType: CryptoType.sr25519,
           mnemonic: generatedMnemonic!,
           derivePath: '//$derivationNbr');
+      addressToScan.putIfAbsent(addressData.address!, () => derivationNbr);
+    }
 
-      final Map balance = await sub.getBalance(addressData.address!).timeout(
-            const Duration(seconds: 1),
-            onTimeout: () => {'transferableBalance': 0},
-          );
-      // const balance = 0;
+    final balanceList =
+        await sub.getBalanceMulti(addressToScan.keys.toList()).timeout(
+              const Duration(seconds: 20),
+              onTimeout: () => {},
+            );
 
-      log.d(
-          "${addressData.address!}: ${balance['transferableBalance']} $currencyName");
-      if (balance['transferableBalance'] != 0) {
+    for (String scannedWallet in balanceList.keys) {
+      if (balanceList[scannedWallet]!['transferableBalance'] != 0) {
         isAlive = true;
         String walletName = scanedValidWalletNumber == 0
             ? 'currentWallet'.tr()
             : '${'wallet'.tr()} ${scanedValidWalletNumber + 1}';
         await sub.importAccount(
             mnemonic: generatedMnemonic!,
-            derivePath: '//$derivationNbr',
+            derivePath: "//${addressToScan[scannedWallet]}",
             password: pin.text);
 
         WalletData myWallet = WalletData(
             chest: currentChestNumber,
-            address: addressData.address!,
+            address: scannedWallet,
             number: scanedValidWalletNumber,
             name: walletName,
-            derivation: derivationNbr,
+            derivation: addressToScan[scannedWallet],
             imageDefaultPath: '${scanedValidWalletNumber % 4}.png',
             isOwned: true);
         await walletBox.put(myWallet.address, myWallet);
@@ -354,6 +356,7 @@ class GenerateWalletsProvider with ChangeNotifier {
       scanedWalletNumber = scanedWalletNumber + 1;
       notifyListeners();
     }
+
     log.d(scanedWalletNumber);
     scanedWalletNumber = -1;
     scanedValidWalletNumber = -1;
@@ -372,8 +375,6 @@ class GenerateWalletsProvider with ChangeNotifier {
           onTimeout: () => {},
         );
 
-    log.d(balance);
-
     log.d(
         "${addressData.address!}: ${balance['transferableBalance']} $currencyName");
     if (balance['transferableBalance'] != 0) {
diff --git a/lib/providers/substrate_sdk.dart b/lib/providers/substrate_sdk.dart
index 48a9fe88754dcb17e3a271c6248acf0ec6906054..511b517e41744853357c049e0a25f6ffaabe65ca 100644
--- a/lib/providers/substrate_sdk.dart
+++ b/lib/providers/substrate_sdk.dart
@@ -236,8 +236,6 @@ class SubstrateSdk with ChangeNotifier {
       nbr++;
     }
 
-    log.i(finalBalancesList);
-
     return finalBalancesList;
   }
 
@@ -275,8 +273,6 @@ class SubstrateSdk with ChangeNotifier {
     final int transferableBalance =
         (balanceGlobal['data']['free'] + unclaimedUds);
 
-    // log.d('udValue: $udValue');
-
     return {
       'transferableBalance': round((transferableBalance / balanceRatio) / 100),
       'free': round((balanceGlobal['data']['free'] / balanceRatio) / 100),
diff --git a/lib/screens/myWallets/wallets_home.dart b/lib/screens/myWallets/wallets_home.dart
index 2882b4db9c6254605f957f4009e883f7f7a43ca2..1da0d0b95ac3e19ea40b2c4d9d72b4b9714d2630 100644
--- a/lib/screens/myWallets/wallets_home.dart
+++ b/lib/screens/myWallets/wallets_home.dart
@@ -467,7 +467,8 @@ class _WalletsHomeState extends State<WalletsHome> {
                     }),
               ),
             Consumer<SubstrateSdk>(builder: (context, sub, _) {
-              return sub.nodeConnected
+              return sub.nodeConnected &&
+                      myWalletProvider.listWallets.length < 30
                   ? addNewDerivation(context)
                   : const Text('');
             }),