diff --git a/lib/providers/substrate_sdk.dart b/lib/providers/substrate_sdk.dart
index 8856ce0d9dacc2f808daa17d7bfef62af7200424..c2b89f3eeba97f6a7a8c293700fa3aa8eb2b0a7c 100644
--- a/lib/providers/substrate_sdk.dart
+++ b/lib/providers/substrate_sdk.dart
@@ -213,7 +213,7 @@ class SubstrateSdk with ChangeNotifier {
   Future<List<int>> getCerts(String address) async {
     final idtyIndex = await sdk.webView!
         .evalJavascript('api.query.identity.identityIndexOf("$address")');
-    log.d(idtyIndex);
+    log.d('u32: ' + idtyIndex.toString());
 
     final _certsReceiver = await sdk.webView!
             .evalJavascript('api.query.cert.storageIdtyCertMeta($idtyIndex)') ??
@@ -222,6 +222,23 @@ class SubstrateSdk with ChangeNotifier {
     return [_certsReceiver['receivedCount'], _certsReceiver['issuedCount']];
   }
 
+  Future<Map> getCertData(String from, String to) async {
+    final idtyIndexFrom = await sdk.webView!
+        .evalJavascript('api.query.identity.identityIndexOf("$from")');
+
+    final idtyIndexTo = await sdk.webView!
+        .evalJavascript('api.query.identity.identityIndexOf("$to")');
+
+    final _certData = await sdk.webView!.evalJavascript(
+            'api.query.cert.storageCertsByIssuer($idtyIndexFrom, $idtyIndexTo)') ??
+        '';
+
+    log.d(_certData);
+    if (_certData == '') return {};
+
+    return _certData;
+  }
+
   // Future<bool> isAccountExit(String address) async {
   //   final _accountInfo = await sdk.webView!
   //       .evalJavascript('api.query.system.account("$address")');
@@ -527,6 +544,34 @@ class SubstrateSdk with ChangeNotifier {
     return await idtyStatus(address) == 'Validated';
   }
 
+  Future<bool> canCertify(String from, String to) async {
+    bool _result = false;
+    if (from != to && await isMember(from)) {
+      final _certData = await getCertData(from, to);
+      final _certMeta = await getCertMeta(from);
+      final int _removableOn = _certData['removableOn'] ?? 0;
+      final int _nextIssuableOn = _certMeta['nextIssuableOn'] ?? 0;
+      log.d(_removableOn);
+      if (_removableOn == 0 && _nextIssuableOn == 0) {
+        _result = true;
+      }
+    }
+    return _result;
+  }
+
+  Future<Map> getCertMeta(String address) async {
+    var idtyIndex = await sdk.webView!
+        .evalJavascript('api.query.identity.identityIndexOf("$address")');
+
+    final _certMeta = await sdk.webView!
+            .evalJavascript('api.query.cert.storageIdtyCertMeta($idtyIndex)') ??
+        '';
+    // if (_certMeta['nextIssuableOn'] != 0) return {};
+
+    log.d(_certMeta);
+    return _certMeta;
+  }
+
   Future<String> derive(
       BuildContext context, String address, int number, String password) async {
     final keypair = getKeypair(address);
diff --git a/lib/screens/myWallets/wallet_options.dart b/lib/screens/myWallets/wallet_options.dart
index 2578e6a300c95bdae404f0ca8b94d73124037fe0..04d4ba84de00b979df4b56933a02a1a2e8703891 100644
--- a/lib/screens/myWallets/wallet_options.dart
+++ b/lib/screens/myWallets/wallet_options.dart
@@ -169,8 +169,8 @@ class WalletOptions extends StatelessWidget {
                   width: 110,
                 )
               : Container(
-                  width: 120,
-                  height: 120,
+                  width: 180,
+                  height: 180,
                   decoration: BoxDecoration(
                     shape: BoxShape.circle,
                     color: Colors.transparent,
diff --git a/lib/screens/transaction_in_progress.dart b/lib/screens/transaction_in_progress.dart
index 63bfb45a781d95d289639041648a0127160aadc8..8a5e54f9958b981cb4316969c87412bf6ee67354 100644
--- a/lib/screens/transaction_in_progress.dart
+++ b/lib/screens/transaction_in_progress.dart
@@ -76,7 +76,28 @@ class TransactionInProgress extends StatelessWidget {
           if (_result.contains('blockHash: ')) {
             _resultText = '$_actionName validé !';
           } else {
-            _resultText = "Une erreur s'est produite:\n\n$_result";
+            _resultText = "Une erreur s'est produite:\n";
+            final String _exception = _result.split('Exception: ')[1];
+            switch (_exception) {
+              case 'cert.NotRespectCertPeriod':
+              case 'identity.CreatorNotAllowedToCreateIdty':
+                {
+                  _resultText +=
+                      "Vous devez attendre 24h entre chaque certification";
+                }
+                break;
+              case 'cert.CannotCertifySelf':
+                {
+                  _resultText +=
+                      "Vous ne pouvez pas vous certifier\nvous même ...";
+                }
+                break;
+              default:
+                {
+                  _resultText += "\n$_exception";
+                }
+                break;
+            }
           }
         }
     }
diff --git a/lib/screens/wallet_view.dart b/lib/screens/wallet_view.dart
index 92b6455825582083ddad883e1561584c75c2ca9f..18d143866779df57b9d018c54552195425ee59c8 100644
--- a/lib/screens/wallet_view.dart
+++ b/lib/screens/wallet_view.dart
@@ -9,6 +9,7 @@ import 'package:gecko/providers/my_wallets.dart';
 import 'package:gecko/models/wallet_data.dart';
 import 'package:gecko/providers/wallets_profiles.dart';
 import 'package:gecko/screens/avatar_fullscreen.dart';
+import 'package:gecko/screens/common_elements.dart';
 import 'package:gecko/screens/myWallets/choose_wallet.dart';
 import 'package:gecko/screens/myWallets/unlocking_wallet.dart';
 import 'package:gecko/screens/transaction_in_progress.dart';
@@ -108,7 +109,7 @@ class WalletViewScreen extends StatelessWidget {
                 WalletData? _defaultWallet =
                     _myWalletProvider.getDefaultWallet();
                 return FutureBuilder(
-                  future: _sub.isMember(_defaultWallet.address!),
+                  future: _sub.canCertify(_defaultWallet.address!, pubkey!),
                   builder: (context, AsyncSnapshot<bool?> snapshot) {
                     return Visibility(
                       visible: (snapshot.data ?? false),
@@ -128,38 +129,44 @@ class WalletViewScreen extends StatelessWidget {
                                             'assets/gecko_certify.png')),
                                   ),
                                   onTap: () async {
-                                    String? _pin;
-                                    if (_myWalletProvider.pinCode == '') {
-                                      _pin = await Navigator.push(
+                                    final bool? _result = await confirmPopup(
                                         context,
-                                        MaterialPageRoute(
-                                          builder: (homeContext) {
-                                            return UnlockingWallet(
-                                                wallet: defaultWallet);
-                                          },
-                                        ),
-                                      );
-                                    }
-                                    if (_pin != null ||
-                                        _myWalletProvider.pinCode != '') {
-                                      WalletsProfilesProvider
-                                          _walletViewProvider =
-                                          Provider.of<WalletsProfilesProvider>(
-                                              context,
-                                              listen: false);
-                                      final acc = _sub.getCurrentWallet();
-                                      _sub.certify(
-                                          acc.address!,
-                                          _pin ?? _myWalletProvider.pinCode,
-                                          _walletViewProvider.address!);
+                                        "Êtes-vous certain de vouloir certifier l'adresse:\n\n${getShortPubkey(pubkey!)}");
 
-                                      Navigator.push(
-                                        context,
-                                        MaterialPageRoute(builder: (context) {
-                                          return const TransactionInProgress(
-                                              transType: 'cert');
-                                        }),
-                                      );
+                                    if (_result ?? false) {
+                                      String? _pin;
+                                      if (_myWalletProvider.pinCode == '') {
+                                        _pin = await Navigator.push(
+                                          context,
+                                          MaterialPageRoute(
+                                            builder: (homeContext) {
+                                              return UnlockingWallet(
+                                                  wallet: defaultWallet);
+                                            },
+                                          ),
+                                        );
+                                      }
+                                      if (_pin != null ||
+                                          _myWalletProvider.pinCode != '') {
+                                        WalletsProfilesProvider
+                                            _walletViewProvider = Provider.of<
+                                                    WalletsProfilesProvider>(
+                                                context,
+                                                listen: false);
+                                        final acc = _sub.getCurrentWallet();
+                                        _sub.certify(
+                                            acc.address!,
+                                            _pin ?? _myWalletProvider.pinCode,
+                                            _walletViewProvider.address!);
+
+                                        Navigator.push(
+                                          context,
+                                          MaterialPageRoute(builder: (context) {
+                                            return const TransactionInProgress(
+                                                transType: 'cert');
+                                          }),
+                                        );
+                                      }
                                     }
                                   }),
                             ),