diff --git a/note/admin.py b/note/admin.py
index 8574142d872a4d7872a91c1eac0a06ac587e81c8..d51fb18098dbcdc5d2a0093e825e423866910db2 100644
--- a/note/admin.py
+++ b/note/admin.py
@@ -3,8 +3,9 @@
 # SPDX-License-Identifier: GPL-3.0-or-later
 
 from django.contrib import admin
-from polymorphic.admin import PolymorphicParentModelAdmin, \
-    PolymorphicChildModelAdmin, PolymorphicChildModelFilter
+from django.utils.translation import gettext_lazy as _
+from polymorphic.admin import PolymorphicChildModelAdmin, \
+    PolymorphicChildModelFilter, PolymorphicParentModelAdmin
 
 from .models.notes import Alias, Note, NoteClub, NoteSpecial, NoteUser
 from .models.transactions import MembershipTransaction, Transaction, \
@@ -93,16 +94,46 @@ class NoteUserAdmin(PolymorphicChildModelAdmin):
         return False
 
 
+@admin.register(Transaction)
+class TransactionAdmin(admin.ModelAdmin):
+    """
+    Admin customisation for Transaction
+    """
+    list_display = ('created_at', 'poly_source', 'poly_destination',
+                    'quantity', 'amount', 'transaction_type', 'valid')
+    list_filter = ('transaction_type', 'valid')
+    autocomplete_fields = ('source', 'destination',)
+
+    def poly_source(self, obj):
+        """
+        Force source to resolve polymorphic object
+        """
+        return str(obj.source)
+
+    poly_source.short_description = _('source')
+
+    def poly_destination(self, obj):
+        """
+        Force destination to resolve polymorphic object
+        """
+        return str(obj.destination)
+
+    poly_destination.short_description = _('destination')
+
+
 @admin.register(TransactionTemplate)
 class TransactionTemplateAdmin(admin.ModelAdmin):
     """
     Admin customisation for TransactionTemplate
     """
-    list_display = ('name', 'destination', 'amount', 'template_type')
-    list_filter = ('destination', 'template_type',)
-    # autocomplete_fields = ('destination',)
+    list_display = ('name', 'poly_destination', 'amount', 'template_type')
+    list_filter = ('template_type',)
+    autocomplete_fields = ('destination',)
 
+    def poly_destination(self, obj):
+        """
+        Force destination to resolve polymorphic object
+        """
+        return str(obj.destination)
 
-# Register other models here.
-admin.site.register(MembershipTransaction)
-admin.site.register(Transaction)
+    poly_destination.short_description = _('destination')
diff --git a/note/models/transactions.py b/note/models/transactions.py
index ce74fab7dc1ab1fa556bb56f1dc70e503fd5bbf7..dba5e4bd3662cc4557960c7b65ba2649d1b3880a 100644
--- a/note/models/transactions.py
+++ b/note/models/transactions.py
@@ -51,8 +51,8 @@ class Transaction(models.Model):
         related_name='+',
         verbose_name=_('destination'),
     )
-    datetime = models.DateTimeField(
-        verbose_name=_('destination'),
+    created_at = models.DateTimeField(
+        verbose_name=_('created at'),
         default=timezone.now,
     )
     quantity = models.PositiveSmallIntegerField(