diff --git a/lib/src/screens/transaction_details/transaction_details_page.dart b/lib/src/screens/transaction_details/transaction_details_page.dart
index bf9393822..c1188d0c7 100644
--- a/lib/src/screens/transaction_details/transaction_details_page.dart
+++ b/lib/src/screens/transaction_details/transaction_details_page.dart
@@ -13,6 +13,7 @@ import 'package:cake_wallet/themes/extensions/cake_text_theme.dart';
 import 'package:cake_wallet/utils/address_formatter.dart';
 import 'package:cake_wallet/utils/show_bar.dart';
 import 'package:cake_wallet/view_model/transaction_details_view_model.dart';
+import 'package:cw_core/wallet_type.dart';
 import 'package:flutter/material.dart';
 import 'package:flutter/services.dart';
 import 'package:flutter_mobx/flutter_mobx.dart';
@@ -45,61 +46,25 @@ class TransactionDetailsPage extends BasePage {
 
                 if (item.title.toLowerCase() == 'recipient addresses' ||
                     item.title.toLowerCase() == 'source address') {
-                  if (item.value.contains('\n')) {
-                    final parts = item.value.split('\n');
-
-                    final nonFormattedPart = parts.sublist(0, parts.length - 1).join('\n').trim();
-
-                    final extractedAddress = parts.last.trim();
-
-                    addressTextWidget = Column(
-                      crossAxisAlignment: CrossAxisAlignment.start,
-                      children: [
-                        Text(
-                          nonFormattedPart,
-                          style: TextStyle(
-                            fontSize: 16,
-                            fontWeight: FontWeight.w500,
-                            color: Theme.of(context).extension<CakeTextTheme>()!.titleColor,
-                          ),
-                        ),
-                        // Display the formatted segmented address.
-                        AddressFormatter.buildSegmentedAddress(
-                          address: extractedAddress,
-                          walletType: transactionDetailsViewModel.sendViewModel.walletType,
-                          evenTextStyle: TextStyle(
-                            fontSize: 16,
-                            fontWeight: FontWeight.w500,
-                            color: Theme.of(context).extension<CakeTextTheme>()!.titleColor,
-                          ),
-                        ),
-                      ],
-                    );
-                  } else {
-                    addressTextWidget = AddressFormatter.buildSegmentedAddress(
-                      address: item.value,
-                      walletType: transactionDetailsViewModel.sendViewModel.walletType,
-                      evenTextStyle: TextStyle(
-                        fontSize: 16,
-                        fontWeight: FontWeight.w500,
-                        color: Theme.of(context).extension<CakeTextTheme>()!.titleColor,
-                      ),
-                    );
-                  }
-
-                  return GestureDetector(
-                    key: item.key,
-                    onTap: () {
-                      Clipboard.setData(ClipboardData(text: item.value));
-                      showBar<void>(context, S.of(context).transaction_details_copied(item.title));
-                    },
-                    child: ListRow(
-                      title: '${item.title}:',
-                      value: item.value,
-                      textWidget: addressTextWidget,
-                    ),
+                  addressTextWidget = getFormattedAddress(
+                    context: context,
+                    value: item.value,
+                    walletType: transactionDetailsViewModel.sendViewModel.walletType,
                   );
                 }
+
+                return GestureDetector(
+                  key: item.key,
+                  onTap: () {
+                    Clipboard.setData(ClipboardData(text: item.value));
+                    showBar<void>(context, S.of(context).transaction_details_copied(item.title));
+                  },
+                  child: ListRow(
+                    title: '${item.title}:',
+                    value: item.value,
+                    textWidget: addressTextWidget,
+                  ),
+                );
               }
 
               if (item is BlockExplorerListItem) {
@@ -144,4 +109,80 @@ class TransactionDetailsPage extends BasePage {
       ],
     );
   }
+
+  Widget getFormattedAddress({
+    required BuildContext context,
+    required String value,
+    required WalletType walletType,
+  }) {
+    final textStyle = TextStyle(
+      fontSize: 16,
+      fontWeight: FontWeight.w500,
+      color: Theme.of(context).extension<CakeTextTheme>()!.titleColor,
+    );
+    final List<Widget> children = [];
+    final bool hasDoubleNewline = value.contains('\n\n');
+
+    if (hasDoubleNewline) {
+      final blocks = value
+          .split('\n\n')
+          .map((b) => b.trim())
+          .where((b) => b.isNotEmpty)
+          .toList();
+      for (final block in blocks) {
+        final lines = block
+            .split('\n')
+            .map((l) => l.trim())
+            .where((l) => l.isNotEmpty)
+            .toList();
+        if (lines.length > 1) {
+          children.add(Text(lines.first, style: textStyle));
+          for (int i = 1; i < lines.length; i++) {
+            children.add(
+              AddressFormatter.buildSegmentedAddress(
+                address: lines[i],
+                walletType: walletType,
+                evenTextStyle: textStyle,
+              ),
+            );
+          }
+        } else {
+          children.add(
+            AddressFormatter.buildSegmentedAddress(
+              address: lines.first,
+              walletType: walletType,
+              evenTextStyle: textStyle,
+            ),
+          );
+        }
+        children.add(SizedBox(height: 8));
+      }
+    } else {
+      final lines = value
+          .split('\n')
+          .map((l) => l.trim())
+          .where((l) => l.isNotEmpty)
+          .toList();
+      bool firstLineIsContactName = (lines.length > 1 && lines.first.length < 20);
+      int startIndex = 0;
+      if (firstLineIsContactName) {
+        children.add(Text(lines.first, style: textStyle));
+        startIndex = 1;
+      }
+      for (int i = startIndex; i < lines.length; i++) {
+        children.add(
+          AddressFormatter.buildSegmentedAddress(
+            address: lines[i],
+            walletType: walletType,
+            evenTextStyle: textStyle,
+          ),
+        );
+      }
+    }
+
+    return Column(
+      crossAxisAlignment: CrossAxisAlignment.start,
+      children: children,
+    );
+  }
 }
diff --git a/lib/utils/address_formatter.dart b/lib/utils/address_formatter.dart
index 40dfb68f2..0bcc713d0 100644
--- a/lib/utils/address_formatter.dart
+++ b/lib/utils/address_formatter.dart
@@ -24,7 +24,7 @@ class AddressFormatter {
         address: address,
         walletType: walletType,
         evenTextStyle: evenTextStyle,
-        oddTextStyle: oddTextStyle ?? evenTextStyle.copyWith(color: evenTextStyle.color!.withAlpha(150)),
+        oddTextStyle: oddTextStyle ?? evenTextStyle.copyWith(color: evenTextStyle.color!.withAlpha(128)),
         textAlign: textAlign,
       );
     }