diff --git a/lib/models/queries_indexer.dart b/lib/models/queries_indexer.dart
index a361750225b4261aac953bd6437d67e9631a1c01..6e467525b8757223051c2efe5de02143bdf124b3 100644
--- a/lib/models/queries_indexer.dart
+++ b/lib/models/queries_indexer.dart
@@ -54,6 +54,10 @@ query ($address: String!, $first: Int!, $after: String) {
             name
           }
         }
+        comment {
+          remark
+          type
+        }
       }
     }
     pageInfo {
diff --git a/lib/models/transaction.dart b/lib/models/transaction.dart
new file mode 100644
index 0000000000000000000000000000000000000000..a74649bc1c5affbd114e6e217106449765883aab
--- /dev/null
+++ b/lib/models/transaction.dart
@@ -0,0 +1,17 @@
+class Transaction {
+  final DateTime timestamp;
+  final String address;
+  final String username;
+  final double amount;
+  final String comment;
+  final bool isReceived;
+
+  Transaction({
+    required this.timestamp,
+    required this.address,
+    required this.username,
+    required this.amount,
+    required this.comment,
+    required this.isReceived,
+  });
+}
diff --git a/lib/providers/duniter_indexer.dart b/lib/providers/duniter_indexer.dart
index a2cb30dfc3ce04ef8a844b2f95f110065c9d392b..d4d5c6fd1c09b8a656d83fc81e1aa64bb345d7cc 100644
--- a/lib/providers/duniter_indexer.dart
+++ b/lib/providers/duniter_indexer.dart
@@ -11,12 +11,13 @@ import 'package:gecko/providers/substrate_sdk.dart';
 import 'package:gecko/utils.dart';
 import 'package:graphql_flutter/graphql_flutter.dart';
 import 'package:provider/provider.dart';
+import 'package:gecko/models/transaction.dart';
 
 class DuniterIndexer with ChangeNotifier {
   Map<String, String?> walletNameIndexer = {};
   String? fetchMoreCursor;
   Map? pageInfo;
-  List? transBC;
+  List<Transaction>? transBC;
   List listIndexerEndpoints = [];
   bool isLoadingIndexer = false;
   Future<QueryResult<Object?>?> Function()? refetch;
@@ -207,32 +208,44 @@ class DuniterIndexer with ChangeNotifier {
     }
   }
 
-  List parseHistory(List blockchainTX, String address) {
-    List transBC = [];
-    int i = 0;
+  List<Transaction> parseHistory(List blockchainTX, String address) {
+    // Create a list to store Transaction objects
+    List<Transaction> transactions = [];
 
     for (final transactionNode in blockchainTX) {
       final transaction = transactionNode['node'];
-      final direction = transaction['fromId'] != address ? 'RECEIVED' : 'SENT';
+      final isReceived = transaction['fromId'] != address;
 
-      transBC.add(i);
-      transBC[i] = [];
-      transBC[i].add(DateTime.parse(transaction['timestamp']));
+      // Calculate amount
       final amountBrut = transaction['amount'];
       final amount = removeDecimalZero(amountBrut / 100);
-      if (direction == "RECEIVED") {
-        transBC[i].add(transaction['fromId']);
-        transBC[i].add(transaction['from']['identity']?['name'] ?? '');
-      } else if (direction == "SENT") {
-        transBC[i].add(transaction['toId']);
-        transBC[i].add(transaction['to']['identity']?['name'] ?? '');
+      final comment = transaction['comment']?['remark'] ?? '';
+      final commentType = transaction['comment']?['type'] ?? '';
+
+      // Determine counterparty based on direction
+      final String counterPartyId;
+      final String counterPartyName;
+      if (isReceived) {
+        counterPartyId = transaction['fromId'];
+        counterPartyName = transaction['from']['identity']?['name'] ?? '';
+      } else {
+        counterPartyId = transaction['toId'];
+        counterPartyName = transaction['to']['identity']?['name'] ?? '';
       }
-      transBC[i].add(amount);
-      transBC[i].add(direction);
 
-      i++;
+      // Create and add new Transaction object
+      transactions.add(
+        Transaction(
+          timestamp: DateTime.parse(transaction['timestamp']),
+          address: counterPartyId,
+          username: counterPartyName,
+          amount: amount,
+          comment: commentType == 'ASCII' ? comment : '',
+          isReceived: isReceived,
+        ),
+      );
     }
-    return transBC;
+    return transactions;
   }
 
   FetchMoreOptions? mergeQueryResult(QueryResult result, FetchMoreOptions? opts, String address, int nRepositories) {
@@ -313,11 +326,11 @@ class DuniterIndexer with ChangeNotifier {
     return indexerClient.subscribe(options);
   }
 
-  Map computeHistoryView(repository, String address) {
+  Map computeHistoryView(Transaction transaction, String address) {
     final bool isUdUnit = configBox.get('isUdUnit') ?? false;
     late double amount;
     late String finalAmount;
-    final DateTime date = repository[0];
+    final DateTime date = transaction.timestamp;
 
     final dateForm = "${date.day} ${monthsInYear[date.month]!.substring(0, {1, 2, 7, 9}.contains(date.month) ? 4 : 3)}";
 
@@ -352,7 +365,7 @@ class DuniterIndexer with ChangeNotifier {
 
     final dateDelimiter = getDateDelimiter();
 
-    amount = repository[4] == 'RECEIVED' ? repository[3] : repository[3] * -1;
+    amount = transaction.isReceived ? transaction.amount : transaction.amount * -1;
 
     if (isUdUnit) {
       amount = round(amount / balanceRatio);
diff --git a/lib/widgets/history_view.dart b/lib/widgets/history_view.dart
index fc11437323be7bf38858d3b9491abe6e149b0767..50af7b41f4c74e6ee8c5d94afc724d4d9f79c3e1 100644
--- a/lib/widgets/history_view.dart
+++ b/lib/widgets/history_view.dart
@@ -41,8 +41,8 @@ class HistoryView extends StatelessWidget {
           ])
         : Column(children: <Widget>[
             Column(
-                children: duniterIndexer.transBC!.map((repository) {
-              final answer = duniterIndexer.computeHistoryView(repository, address);
+                children: duniterIndexer.transBC!.map((transaction) {
+              final answer = duniterIndexer.computeHistoryView(transaction, address);
               pastDelimiters.add(answer['dateDelimiter']);
 
               bool isMigrationTime = false;
@@ -78,7 +78,7 @@ class HistoryView extends StatelessWidget {
                 TransactionTile(
                     keyID: keyID,
                     avatarSize: avatarSize,
-                    repository: repository,
+                    transaction: transaction,
                     dateForm: answer['dateForm'],
                     finalAmount: answer['finalAmount'],
                     duniterIndexer: duniterIndexer,
diff --git a/lib/widgets/transaction_tile.dart b/lib/widgets/transaction_tile.dart
index a1fc3bff014ad6387bf1ceb8d9aea2e3830489a2..3d48015e550f6f73111f7f8dbd98d47d0b32f336 100644
--- a/lib/widgets/transaction_tile.dart
+++ b/lib/widgets/transaction_tile.dart
@@ -1,5 +1,6 @@
 import 'package:flutter/material.dart';
 import 'package:gecko/models/scale_functions.dart';
+import 'package:gecko/models/transaction.dart';
 import 'package:gecko/models/widgets_keys.dart';
 import 'package:gecko/providers/duniter_indexer.dart';
 import 'package:gecko/screens/wallet_view.dart';
@@ -12,7 +13,7 @@ class TransactionTile extends StatelessWidget {
     super.key,
     required this.keyID,
     required this.avatarSize,
-    required this.repository,
+    required this.transaction,
     required this.dateForm,
     required this.finalAmount,
     required this.duniterIndexer,
@@ -21,7 +22,7 @@ class TransactionTile extends StatelessWidget {
 
   final int keyID;
   final double avatarSize;
-  final List repository;
+  final Transaction transaction;
   final String dateForm;
   final String finalAmount;
   final DuniterIndexer duniterIndexer;
@@ -30,7 +31,7 @@ class TransactionTile extends StatelessWidget {
   @override
   Widget build(BuildContext context) {
     final newKey = keyID + 1;
-    final String? username = repository[2] == '' ? null : repository[2];
+    final String? username = transaction.username == '' ? null : transaction.username;
 
     return Container(
       margin: EdgeInsets.symmetric(
@@ -63,7 +64,7 @@ class TransactionTile extends StatelessWidget {
             ),
           ),
           child: DatapodAvatar(
-            address: repository[1],
+            address: transaction.address,
             size: avatarSize,
           ),
         ),
@@ -71,7 +72,7 @@ class TransactionTile extends StatelessWidget {
           crossAxisAlignment: CrossAxisAlignment.start,
           children: [
             Text(
-              getShortPubkey(repository[1]),
+              getShortPubkey(transaction.address),
               style: scaledTextStyle(
                 fontSize: 15,
                 fontFamily: 'Monospace',
@@ -106,6 +107,19 @@ class TransactionTile extends StatelessWidget {
                 ],
               ),
             ),
+            if (transaction.comment.isNotEmpty) ...[
+              ScaledSizedBox(height: 4),
+              Text(
+                transaction.comment,
+                style: scaledTextStyle(
+                  fontSize: 12,
+                  color: Colors.grey[600],
+                  fontStyle: FontStyle.italic,
+                ),
+                maxLines: 2,
+                overflow: TextOverflow.ellipsis,
+              ),
+            ],
           ],
         ),
         trailing: Text(
@@ -113,7 +127,7 @@ class TransactionTile extends StatelessWidget {
           style: scaledTextStyle(
             fontSize: 15,
             fontWeight: FontWeight.w600,
-            color: repository[4] == 'RECEIVED' ? const Color(0xFF4CAF50) : const Color(0xFF2196F3),
+            color: transaction.isReceived ? const Color(0xFF4CAF50) : const Color(0xFF2196F3),
           ),
         ),
         onTap: () {
@@ -121,7 +135,7 @@ class TransactionTile extends StatelessWidget {
             context,
             PageNoTransit(
               builder: (context) => WalletViewScreen(
-                address: repository[1],
+                address: transaction.address,
                 username: username,
               ),
             ),