diff --git a/lib/data/models/transaction.dart b/lib/data/models/transaction.dart
index 1a4bbfb2293d1f2d434869e5844b8e0c57071417..d2f849b846b8253fe7c0a4c3f6a89f261fcf0f79 100644
--- a/lib/data/models/transaction.dart
+++ b/lib/data/models/transaction.dart
@@ -67,20 +67,32 @@ class Transaction extends Equatable {
 @JsonSerializable()
 @CopyWith()
 class TransactionsAndBalanceState extends Equatable {
-  const TransactionsAndBalanceState({
-    required this.transactions,
-    required this.balance,
-    required this.lastChecked,
-  });
+  const TransactionsAndBalanceState(
+      {required this.transactions,
+      required this.balance,
+      required this.lastChecked,
+      this.lastSent,
+      this.lastReceived,
+      this.lastReceivedNotif});
 
   factory TransactionsAndBalanceState.fromJson(Map<String, dynamic> json) =>
       _$TransactionsAndBalanceStateFromJson(json);
   final List<Transaction> transactions;
   final double balance;
   final DateTime lastChecked;
+  final DateTime? lastSent;
+  final DateTime? lastReceived;
+  final DateTime? lastReceivedNotif;
 
   Map<String, dynamic> toJson() => _$TransactionsAndBalanceStateToJson(this);
 
   @override
-  List<Object?> get props => <dynamic>[transactions, balance, lastChecked];
+  List<Object?> get props => <dynamic>[
+        transactions,
+        balance,
+        lastChecked,
+        lastSent,
+        lastReceived,
+        lastReceivedNotif
+      ];
 }
diff --git a/lib/data/models/transaction.g.dart b/lib/data/models/transaction.g.dart
index 9442400adfcbe57bd654f92e99fb55f6ed6dad22..8014175d5f93a109a78e09b1bd2ad2e590a7ab16 100644
--- a/lib/data/models/transaction.g.dart
+++ b/lib/data/models/transaction.g.dart
@@ -161,6 +161,12 @@ abstract class _$TransactionsAndBalanceStateCWProxy {
 
   TransactionsAndBalanceState lastChecked(DateTime lastChecked);
 
+  TransactionsAndBalanceState lastSent(DateTime? lastSent);
+
+  TransactionsAndBalanceState lastReceived(DateTime? lastReceived);
+
+  TransactionsAndBalanceState lastReceivedNotif(DateTime? lastReceivedNotif);
+
   /// This function **does support** nullification of nullable fields. All `null` values passed to `non-nullable` fields will be ignored. You can also use `TransactionsAndBalanceState(...).copyWith.fieldName(...)` to override fields one at a time with nullification support.
   ///
   /// Usage
@@ -171,6 +177,9 @@ abstract class _$TransactionsAndBalanceStateCWProxy {
     List<Transaction>? transactions,
     double? balance,
     DateTime? lastChecked,
+    DateTime? lastSent,
+    DateTime? lastReceived,
+    DateTime? lastReceivedNotif,
   });
 }
 
@@ -192,6 +201,18 @@ class _$TransactionsAndBalanceStateCWProxyImpl
   TransactionsAndBalanceState lastChecked(DateTime lastChecked) =>
       this(lastChecked: lastChecked);
 
+  @override
+  TransactionsAndBalanceState lastSent(DateTime? lastSent) =>
+      this(lastSent: lastSent);
+
+  @override
+  TransactionsAndBalanceState lastReceived(DateTime? lastReceived) =>
+      this(lastReceived: lastReceived);
+
+  @override
+  TransactionsAndBalanceState lastReceivedNotif(DateTime? lastReceivedNotif) =>
+      this(lastReceivedNotif: lastReceivedNotif);
+
   @override
 
   /// This function **does support** nullification of nullable fields. All `null` values passed to `non-nullable` fields will be ignored. You can also use `TransactionsAndBalanceState(...).copyWith.fieldName(...)` to override fields one at a time with nullification support.
@@ -204,6 +225,9 @@ class _$TransactionsAndBalanceStateCWProxyImpl
     Object? transactions = const $CopyWithPlaceholder(),
     Object? balance = const $CopyWithPlaceholder(),
     Object? lastChecked = const $CopyWithPlaceholder(),
+    Object? lastSent = const $CopyWithPlaceholder(),
+    Object? lastReceived = const $CopyWithPlaceholder(),
+    Object? lastReceivedNotif = const $CopyWithPlaceholder(),
   }) {
     return TransactionsAndBalanceState(
       transactions:
@@ -220,6 +244,18 @@ class _$TransactionsAndBalanceStateCWProxyImpl
               ? _value.lastChecked
               // ignore: cast_nullable_to_non_nullable
               : lastChecked as DateTime,
+      lastSent: lastSent == const $CopyWithPlaceholder()
+          ? _value.lastSent
+          // ignore: cast_nullable_to_non_nullable
+          : lastSent as DateTime?,
+      lastReceived: lastReceived == const $CopyWithPlaceholder()
+          ? _value.lastReceived
+          // ignore: cast_nullable_to_non_nullable
+          : lastReceived as DateTime?,
+      lastReceivedNotif: lastReceivedNotif == const $CopyWithPlaceholder()
+          ? _value.lastReceivedNotif
+          // ignore: cast_nullable_to_non_nullable
+          : lastReceivedNotif as DateTime?,
     );
   }
 }
@@ -278,6 +314,15 @@ TransactionsAndBalanceState _$TransactionsAndBalanceStateFromJson(
           .toList(),
       balance: (json['balance'] as num).toDouble(),
       lastChecked: DateTime.parse(json['lastChecked'] as String),
+      lastSent: json['lastSent'] == null
+          ? null
+          : DateTime.parse(json['lastSent'] as String),
+      lastReceived: json['lastReceived'] == null
+          ? null
+          : DateTime.parse(json['lastReceived'] as String),
+      lastReceivedNotif: json['lastReceivedNotif'] == null
+          ? null
+          : DateTime.parse(json['lastReceivedNotif'] as String),
     );
 
 Map<String, dynamic> _$TransactionsAndBalanceStateToJson(
@@ -286,4 +331,7 @@ Map<String, dynamic> _$TransactionsAndBalanceStateToJson(
       'transactions': instance.transactions,
       'balance': instance.balance,
       'lastChecked': instance.lastChecked.toIso8601String(),
+      'lastSent': instance.lastSent?.toIso8601String(),
+      'lastReceived': instance.lastReceived?.toIso8601String(),
+      'lastReceivedNotif': instance.lastReceivedNotif?.toIso8601String(),
     };
diff --git a/lib/data/models/transaction_cubit.dart b/lib/data/models/transaction_cubit.dart
index fb54f6a35f3bb8a94d74f287b8e7f733885a0847..4d11e687beff135b571d017dd60dc7373ce94390 100644
--- a/lib/data/models/transaction_cubit.dart
+++ b/lib/data/models/transaction_cubit.dart
@@ -2,6 +2,7 @@ import 'package:hydrated_bloc/hydrated_bloc.dart';
 
 import '../../../g1/api.dart';
 import '../../../g1/transaction_parser.dart';
+import '../../notification_controller.dart';
 import '../../shared_prefs.dart';
 import '../../ui/logger.dart';
 import 'node_list_cubit.dart';
@@ -41,6 +42,16 @@ class TransactionsCubit extends HydratedCubit<TransactionsAndBalanceState> {
         transactions: state.transactions,
         balance: state.balance,
         lastChecked: state.lastChecked));
+    final DateTime? lastReceived = state.lastReceived;
+    final DateTime lastReceivedNotification =
+        state.lastReceivedNotif ?? DateTime(1970);
+    // final DateTime? lastSent = transBalanceState.lastSent;
+    if (lastReceived != null &&
+        lastReceivedNotification.compareTo(lastReceived) == 1) {
+      // Notify
+      NotificationController.createNewNotification(
+          lastReceived.millisecondsSinceEpoch.toString());
+    }
   }
 
   @override