diff --git a/lib/data/models/multi_wallet_transaction_cubit.dart b/lib/data/models/multi_wallet_transaction_cubit.dart
index 1ba5cc4f0a8eaebab13bc432c875ed866cad8805..e4e0a33b12062b4e695ed9274052d243a7168d12 100644
--- a/lib/data/models/multi_wallet_transaction_cubit.dart
+++ b/lib/data/models/multi_wallet_transaction_cubit.dart
@@ -22,7 +22,6 @@ import 'transaction.dart';
 import 'transaction_state.dart';
 import 'transaction_type.dart';
 import 'transactions_bloc.dart';
-import 'utxo_cubit.dart';
 
 class MultiWalletTransactionCubit
     extends HydratedCubit<MultiWalletTransactionState> {
@@ -122,7 +121,7 @@ class MultiWalletTransactionCubit
   String _getTxKey(Transaction t) => '${t.to.pubKey}-${t.comment}-${t.amount}';
 
   Future<List<Transaction>> fetchTransactions(
-      NodeListCubit cubit, UtxoCubit utxoCubit, AppCubit appCubit,
+      NodeListCubit cubit, AppCubit appCubit,
       {int retries = 5, int? pageSize, String? cursor, String? pubKey}) async {
     pubKey = _defKey(pubKey);
     final TransactionState currentState = _getStateOfWallet(pubKey);
@@ -166,6 +165,8 @@ class MultiWalletTransactionCubit
 
       TransactionState currentModifiedState = newState;
 
+      resetCurrentGvaNode(newState, cubit);
+
       logger(
           'Last received notification: ${currentModifiedState.latestReceivedNotification.toIso8601String()})}');
       logger(
@@ -220,6 +221,32 @@ class MultiWalletTransactionCubit
     return <Transaction>[];
   }
 
+  void resetCurrentGvaNode(TransactionState newState, NodeListCubit cubit) {
+    final List<Transaction> pendingTransactions = newState.pendingTransactions;
+
+    bool shouldResetGvaNode = pendingTransactions.isEmpty ||
+        pendingTransactions
+            .every((Transaction transaction) => transaction.isFailed);
+
+    if (!shouldResetGvaNode) {
+      final Transaction? oldestPendingTransaction = pendingTransactions
+              .isNotEmpty
+          ? pendingTransactions.reduce(
+              (Transaction a, Transaction b) => a.time.isBefore(b.time) ? a : b)
+          : null;
+
+      if (oldestPendingTransaction != null &&
+          oldestPendingTransaction.time
+              .isBefore(DateTime.now().subtract(const Duration(hours: 1)))) {
+        shouldResetGvaNode = true;
+      }
+    }
+
+    if (shouldResetGvaNode) {
+      cubit.resetCurrentGvaNode();
+    }
+  }
+
   TransactionState _checkPendingTx(
       String? cursor, TransactionState newState, String myPubKey, Node node) {
     // Check pending transactions