diff --git a/lib/models/walletOptions.dart b/lib/models/walletOptions.dart
index c9cab0fce343aa13951c49c680177c276b11dc05..2e16e7023ab2f6e865e32e897bf3aea27c4af923 100644
--- a/lib/models/walletOptions.dart
+++ b/lib/models/walletOptions.dart
@@ -75,7 +75,7 @@ class WalletOptionsProvider with ChangeNotifier {
           'false') {
         this.pubkey.text = _localPubkey;
         isWalletUnlock = true;
-        notifyListeners();
+        // notifyListeners();
 
         return _localDewif;
       } else {
@@ -84,7 +84,7 @@ class WalletOptionsProvider with ChangeNotifier {
     } catch (e) {
       print('ERROR READING FILE: $e');
       this.pubkey.clear();
-      notifyListeners();
+      // notifyListeners();
       return 'bad';
     }
   }
@@ -265,4 +265,8 @@ class WalletOptionsProvider with ChangeNotifier {
         duration: Duration(seconds: 2));
     Scaffold.of(context).showSnackBar(snackBar);
   }
+
+  void reloadBuild() {
+    notifyListeners();
+  }
 }
diff --git a/lib/screens/onBoarding/13_stepThirteen.dart b/lib/screens/onBoarding/13_stepThirteen.dart
index c3514cfcc4282a8cef56dc7f16c877605078b9d8..2c87494cfc016bc2014e0cbb6454a2ce3a8d1e0d 100644
--- a/lib/screens/onBoarding/13_stepThirteen.dart
+++ b/lib/screens/onBoarding/13_stepThirteen.dart
@@ -3,14 +3,12 @@ import 'package:dubp/dubp.dart';
 import 'package:flutter/services.dart';
 import 'package:flutter/material.dart';
 import 'package:gecko/models/generateWallets.dart';
-import 'package:gecko/models/myWallets.dart';
 import 'package:gecko/screens/commonElements.dart';
 import 'package:gecko/screens/onBoarding/14_stepFourteen.dart';
 import 'package:provider/provider.dart';
 
 // ignore: must_be_immutable
 class OnboardingStepThirteen extends StatelessWidget {
-  TextEditingController tplController = TextEditingController();
   NewWallet generatedWallet;
   final int progress = 83;
 
@@ -19,14 +17,23 @@ class OnboardingStepThirteen extends StatelessWidget {
     SystemChrome.setPreferredOrientations([DeviceOrientation.portraitUp]);
     GenerateWalletsProvider _generateWalletProvider =
         Provider.of<GenerateWalletsProvider>(context);
-    MyWalletsProvider myWalletProvider =
-        Provider.of<MyWalletsProvider>(context);
+    // MyWalletsProvider myWalletProvider =
+    //     Provider.of<MyWalletsProvider>(context);
     CommonElements common = CommonElements();
+    _generateWalletProvider.pin.text = '';
+    // _generateWalletProvider.changePinCode(reload: false);
 
     return Scaffold(
         extendBodyBehindAppBar: true,
         body: SafeArea(
           child: Column(children: <Widget>[
+            FutureBuilder(
+                future: _generateWalletProvider.changePinCode(reload: false),
+                // initialData: '...',
+                builder: (context, snapshot) {
+                  generatedWallet = snapshot.data;
+                  return Visibility(visible: false, child: Text(''));
+                }),
             common.onboardingProgressBar('Ma phrase de restauration', progress),
             common.bubbleSpeakRich(<TextSpan>[
               TextSpan(
@@ -100,8 +107,8 @@ class OnboardingStepThirteen extends StatelessWidget {
                     await _generateWalletProvider.storeWallet(
                         generatedWallet, 'Mon portefeuille courant', context,
                         isHD: true);
-                    myWalletProvider.listWallets =
-                        myWalletProvider.getAllWalletsNames();
+                    // myWalletProvider.listWallets =
+                    //     myWalletProvider.getAllWalletsNames();
                     _generateWalletProvider.isAskedWordValid = false;
                     _generateWalletProvider.askedWordColor = Colors.black;
                     Navigator.push(
diff --git a/lib/screens/onBoarding/14_stepFourteen.dart b/lib/screens/onBoarding/14_stepFourteen.dart
index 9ddde6fc43172f744882d60ab4e20d48a19ce95b..ae25c9bf9f45ff835c5bec1d522f28d235e81bdd 100644
--- a/lib/screens/onBoarding/14_stepFourteen.dart
+++ b/lib/screens/onBoarding/14_stepFourteen.dart
@@ -1,20 +1,27 @@
+import 'dart:async';
 import 'dart:ui';
 import 'package:flutter/services.dart';
 import 'package:flutter/material.dart';
-import 'package:gecko/models/generateWallets.dart';
+import 'package:gecko/models/myWallets.dart';
+import 'package:gecko/models/walletOptions.dart';
 import 'package:gecko/screens/commonElements.dart';
+import 'package:pin_code_fields/pin_code_fields.dart';
 import 'package:provider/provider.dart';
 
 // ignore: must_be_immutable
 class OnboardingStepFourteen extends StatelessWidget {
-  TextEditingController tplController = TextEditingController();
   final int progress = 92;
+  final formKey = GlobalKey<FormState>();
+  var pinColor = Color(0xFFA4B600);
+  bool hasError = false;
 
   @override
   Widget build(BuildContext context) {
     SystemChrome.setPreferredOrientations([DeviceOrientation.portraitUp]);
-    GenerateWalletsProvider _generateWalletProvider =
-        Provider.of<GenerateWalletsProvider>(context);
+    // GenerateWalletsProvider _generateWalletProvider =
+    //     Provider.of<GenerateWalletsProvider>(context);
+    WalletOptionsProvider _walletOptions =
+        Provider.of<WalletOptionsProvider>(context);
     CommonElements common = CommonElements();
 
     return Scaffold(
@@ -25,8 +32,94 @@ class OnboardingStepFourteen extends StatelessWidget {
             common.bubbleSpeak(
                 "Avez-vous bien mémorisé votre code secret ?\n\nVérifions ça ensemble !\n\nTapez votre code secret dans le champ ci-dessous (après c’est fini, promis-juré-gecko)."),
             SizedBox(height: 80),
-            common.pinForm(context, 5, 1, 3)
+            pinForm(context, _walletOptions, 5, 1, 3)
           ]),
         ));
   }
+
+  Widget pinForm(context, WalletOptionsProvider _walletOptions, _pinLenght,
+      int _walletNbr, int _derivation) {
+    // var _walletPin = '';
+// ignore: close_sinks
+    StreamController<ErrorAnimationType> errorController =
+        StreamController<ErrorAnimationType>();
+    TextEditingController _enterPin = TextEditingController();
+    MyWalletsProvider _myWalletProvider =
+        Provider.of<MyWalletsProvider>(context);
+
+    return Form(
+      key: formKey,
+      child: Padding(
+          padding: const EdgeInsets.symmetric(vertical: 8.0, horizontal: 30),
+          child: PinCodeTextField(
+            autoFocus: true,
+            appContext: context,
+            pastedTextStyle: TextStyle(
+              color: Colors.green.shade600,
+              fontWeight: FontWeight.bold,
+            ),
+            length: _pinLenght,
+            obscureText: false,
+            obscuringCharacter: '*',
+            animationType: AnimationType.fade,
+            validator: (v) {
+              if (v.length < _pinLenght) {
+                return "Votre code PIN fait $_pinLenght caractères";
+              } else {
+                return null;
+              }
+            },
+            pinTheme: PinTheme(
+              activeColor: pinColor,
+              borderWidth: 4,
+              shape: PinCodeFieldShape.box,
+              borderRadius: BorderRadius.circular(5),
+              fieldHeight: 60,
+              fieldWidth: 50,
+              activeFillColor: hasError ? Colors.blueAccent : Colors.black,
+            ),
+            cursorColor: Colors.black,
+            animationDuration: Duration(milliseconds: 300),
+            textStyle: TextStyle(fontSize: 20, height: 1.6),
+            backgroundColor: Color(0xffF9F9F1),
+            enableActiveFill: false,
+            errorAnimationController: errorController,
+            controller: _enterPin,
+            keyboardType: TextInputType.text,
+            boxShadows: [
+              BoxShadow(
+                offset: Offset(0, 1),
+                color: Colors.black12,
+                blurRadius: 10,
+              )
+            ],
+            onCompleted: (_pin) async {
+              print("Completed");
+              final resultWallet = await _walletOptions.readLocalWallet(
+                  _walletNbr, _pin.toUpperCase(), _pinLenght, _derivation);
+              if (resultWallet == 'bad') {
+                errorController.add(ErrorAnimationType
+                    .shake); // Triggering error shake animation
+                hasError = true;
+                pinColor = Colors.red[600];
+                _walletOptions.reloadBuild();
+              } else {
+                pinColor = Colors.green[500];
+                _myWalletProvider.getAllWalletsNames();
+                _walletOptions.reloadBuild();
+                Navigator.popUntil(
+                  context,
+                  ModalRoute.withName('/'),
+                );
+              }
+            },
+            onChanged: (value) {
+              if (pinColor != Color(0xFFA4B600)) {
+                pinColor = Color(0xFFA4B600);
+              }
+              print(value);
+            },
+          )),
+    );
+  }
 }