diff --git a/aleksis/apps/tezor/models/base.py b/aleksis/apps/tezor/models/base.py
index a57f180ce0a1602d592159162591157e9c4d28f6..d76cd8c3115a45884e0a888df102c99c5ba94481 100644
--- a/aleksis/apps/tezor/models/base.py
+++ b/aleksis/apps/tezor/models/base.py
@@ -10,6 +10,12 @@ from aleksis.core.mixins import ExtensibleModel
 
 
 class Client(ExtensibleModel):
+    VARIANT_DISPLAY = {
+        "paypal": (_("PayPal"), "logos:paypal"),
+        "sofort": (_("Klarna / Sofort"), "simple-icons:klarna"),
+        "pledge": (_("Payment pledge / manual payment"), "mdi:hand-coin"),
+        "sdd": (_("SEPA Direct Debit"), "mdi:bank-transfer"),
+    }
     name = models.CharField(verbose_name=_("Name"), max_length=255)
     email = models.EmailField(verbose_name=_("Email"))
 
@@ -69,3 +75,11 @@ class Client(ExtensibleModel):
 
     def __str__(self) -> str:
         return self.name
+
+    def get_variant_choices(self=None):
+        choices = []
+        for variant in Client.VARIANT_DISPLAY.keys():
+            if self and not getattr(self, f"{variant}_enabled"):
+                continue
+            choices.append((variant, Client.VARIANT_DISPLAY[variant][0]))
+        return choices
diff --git a/aleksis/apps/tezor/models/invoice.py b/aleksis/apps/tezor/models/invoice.py
index 223cd61d6d9ae75c22c5b32599f6a6cd367c61e4..06cea962b19175e69cb9de6b639b38dca8613949 100644
--- a/aleksis/apps/tezor/models/invoice.py
+++ b/aleksis/apps/tezor/models/invoice.py
@@ -32,6 +32,12 @@ class InvoiceGroup(ExtensibleModel):
     def __str__(self) -> str:
         return self.name
 
+    def get_variant_choices(self=None):
+        if self and self.client:
+            return self.client.get_variant_choices()
+        else:
+            return Client.get_variant_choices()
+
     class Meta:
         constraints = [
             models.UniqueConstraint(fields=["client", "name"], name="group_uniq_per_client")
@@ -39,12 +45,6 @@ class InvoiceGroup(ExtensibleModel):
 
 
 class Invoice(BasePayment, PureDjangoModel):
-    VARIANT_DISPLAY = {
-        "paypal": (_("PayPal"), "logos:paypal"),
-        "sofort": (_("Klarna / Sofort"), "simple-icons:klarna"),
-        "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",
@@ -105,23 +105,16 @@ class Invoice(BasePayment, PureDjangoModel):
         super().save(*args, **kwargs)
 
     def get_variant_choices(self=None):
-        choices = []
-        for variant in Invoice.VARIANT_DISPLAY.keys():
-            if (
-                self
-                and self.group
-                and self.group.client
-                and not getattr(self.group.client, f"{variant}_enabled")
-            ):
-                continue
-            choices.append((variant, Invoice.VARIANT_DISPLAY[variant][0]))
-        return choices
+        if self and self.group:
+            return self.group.get_variant_choices()
+        else:
+            return InvoiceGroup.get_variant_choices()
 
     def get_variant_name(self):
-        return self.__class__.VARIANT_DISPLAY[self.variant][0]
+        return Client.VARIANT_DISPLAY[self.variant][0]
 
     def get_variant_icon(self):
-        return self.__class__.VARIANT_DISPLAY[self.variant][1]
+        return Client.VARIANT_DISPLAY[self.variant][1]
 
     def get_status_icon(self):
         return self.__class__.STATUS_ICONS[self.status]