diff --git a/aleksis/apps/tezor/models/invoice.py b/aleksis/apps/tezor/models/invoice.py
index 1ed1fa8c5ce579b5e0fee51deb11adb37049bdd8..3ea79e3480bc510a9a2182f9412d8faf10aaae37 100644
--- a/aleksis/apps/tezor/models/invoice.py
+++ b/aleksis/apps/tezor/models/invoice.py
@@ -6,7 +6,7 @@ from django.shortcuts import reverse
 from django.utils.translation import gettext_lazy as _
 
 from djmoney.models.fields import CurrencyField, MoneyField
-from payments import PurchasedItem
+from payments import PaymentStatus, PurchasedItem
 from payments.models import BasePayment
 
 from aleksis.core.mixins import ExtensibleModel, PureDjangoModel
@@ -40,6 +40,15 @@ class Invoice(BasePayment, PureDjangoModel):
         "pledge": (_("Payment pledge / manual payment"), "mdi:hand-coin"),
         "sdd": (_("SEPA Direct Debit"), "mdi:bank-transfer"),
     }
+    STATUS_ICONS = {
+        PaymentStatus.WAITING: "mdi:cash-lock-open",
+        PaymentStatus.INPUT: "mdi:cash-lock-open",
+        PaymentStatus.PREAUTH: "mdi:cash-lock",
+        PaymentStatus.CONFIRMED: "mdi:cash-check",
+        PaymentStatus.REFUNDED: "mdi:cash-refund",
+        PaymentStatus.REJECTED: "mdi:cash-remove",
+        PaymentStatus.ERROR: "mdi:cash-remove",
+    }
 
     group = models.ForeignKey(
         InvoiceGroup, verbose_name=_("Invoice group"), related_name="invoices", on_delete=models.SET_NULL, null=True
@@ -64,6 +73,9 @@ class Invoice(BasePayment, PureDjangoModel):
     def get_variant_icon(self):
         return self.__class__.VARIANT_DISPLAY[self.variant][1]
 
+    def get_status_icon(self):
+        return self.__class__.STATUS_ICONS[self.status]
+
     def get_purchased_items(self):
         return self.for_object.get_purchased_items()
 
diff --git a/aleksis/apps/tezor/templates/tezor/invoice/full.html b/aleksis/apps/tezor/templates/tezor/invoice/full.html
index e51b62ff66a11eb61ed56a70bdf426fb354fa05e..2e0d735acda5b27ec16482d6ccfd380d4bd01f9c 100644
--- a/aleksis/apps/tezor/templates/tezor/invoice/full.html
+++ b/aleksis/apps/tezor/templates/tezor/invoice/full.html
@@ -72,17 +72,7 @@
               </tr>
               <tr>
                 <td>
-                  {% if object.status == "waiting" or object.status == "input" %}
-                  <i class="material-icons iconify" data-icon="mdi:cash-lock-open"></i>
-                  {% elif object.status == "rejected" or object.status == "error" %}
-                  <i class="material-icons iconify" data-icon="mdi:cash-remove"></i>
-                  {% elif object.status == "preauth" %}
-                  <i class="material-icons iconify" data-icon="mdi:cash-lock"></i>
-                  {% elif object.status == "confirmed" %}
-                  <i class="material-icons iconify" data-icon="mdi:cash-check"></i>
-                  {% elif object.status == "refunded" %}
-                  <i class="material-icons iconify" data-icon="mdi:cash-refund"></i>
-                  {% endif %}
+                  <i class="material-icons iconify" data-icon="object.get_status_icon"></i>
                 </td>
                 <td>
                   {{ object.get_status_display }}