diff --git a/lib/providers/substrate_sdk.dart b/lib/providers/substrate_sdk.dart
index 1770abefdbc1685bba203fa4c2096748a2d8bfa9..7a2d89f1ee801d54b665042f445b021dcbe7ca26 100644
--- a/lib/providers/substrate_sdk.dart
+++ b/lib/providers/substrate_sdk.dart
@@ -265,37 +265,49 @@ class SubstrateSdk with ChangeNotifier {
     } else {
       balance = -1;
     }
+
+    await getUnclaimedUd(address);
     return balance;
   }
 
   Future<double> getUnclaimedUd(String address) async {
-// TODO: Implement unclaimedUd evaluation
-// Pour ce faire, il vous faut requêter cinq éléments de storage :
-
-//     system.account(address)
-//     identity.identityIndexOf(address)
-//     identity.identities(idtyIndex)
-//     universalDividend.currentUdIndex()
-//     universalDividend.pastReevals()
-
-// const api = await ApiPromise.create(...);
-// const { data: balance } = await api.query.system.account(address);
-// const idtyIndex = await api.query.identity.identityIndexOf(address);
-// const { data: idtyData } = await api.query.identity.identies(idtyIndex);
-// const currentUdIndex = await api.query.universalDividend.currentUdIndex();
-// const pastReevals = await api.query.universalDividend.pastReevals();
-
-// let newUdsAmount = computeClaimUds(currentUdIndex, idtyData.firstEligibleUd, pastReevals);
-// let transferableBalance = balance.free + newUdsAmount;
-// let potentialBalance = balance.reserved + transferableBalance;
+    final balanceGlobal = await sdk.webView!
+        .evalJavascript('api.query.system.account("$address")');
 
-    double balance = 0.0;
+    final idtyIndex = await sdk.webView!
+        .evalJavascript('api.query.identity.identityIndexOf("$address")');
+    final idtyData = await sdk.webView!
+        .evalJavascript('api.query.identity.identities($idtyIndex)');
 
-    final brutBalance = await sdk.api.account.queryBalance(address);
-    // log.d(brutBalance?.toJson());
-    balance = int.parse(brutBalance!.freeBalance) / 100;
+    final int currentUdIndex = int.parse(await sdk.webView!
+        .evalJavascript('api.query.universalDividend.currentUdIndex()'));
 
-    return balance;
+    final List pastReevals = await sdk.webView!
+        .evalJavascript('api.query.universalDividend.pastReevals()');
+
+    log.d(
+        'DEBUGG ${getShortPubkey(address)} : $balanceGlobal |---| $idtyIndex |---| $idtyData |---| $currentUdIndex |---| $pastReevals');
+
+    final int newUdsAmount = _computeClaimUds(currentUdIndex,
+        idtyData?['data']?['firstEligibleUd'] ?? 0, pastReevals);
+
+    final double transferableBalance =
+        (balanceGlobal['data']['free'] + newUdsAmount) / 100;
+    final double potentialBalance =
+        (balanceGlobal['data']['reserved'] + transferableBalance) / 100;
+
+    log.i(
+        'transferableBalance: $transferableBalance --- potentialBalance: $potentialBalance');
+
+    return transferableBalance;
+  }
+
+  int _computeClaimUds(
+      int currentUdIndex, int firstEligibleUd, List pastReevals) {
+    // TODO: Implement _computeClaimUds
+
+    log.d('DEBUGGG: $currentUdIndex - $firstEligibleUd - $pastReevals');
+    return 0;
   }
 
   Future<double> subscribeBalance(String address, {bool isUd = false}) async {