diff --git a/aleksis/apps/tezor/apps.py b/aleksis/apps/tezor/apps.py
index 91be7bb899eae1e9d1a56bd40651423b41fe37e8..a5af98e35bf1d586fd015df471427724cf82fe71 100644
--- a/aleksis/apps/tezor/apps.py
+++ b/aleksis/apps/tezor/apps.py
@@ -1,4 +1,7 @@
+from django.apps import apps
+
 from aleksis.core.util.apps import AppConfig
+from aleksis.core.util.core_helpers import get_site_preferences
 
 
 class DefaultConfig(AppConfig):
@@ -11,3 +14,39 @@ class DefaultConfig(AppConfig):
     }
     licence = "EUPL-1.2+"
     copyright_info = (([2022], "Dominik George", "dominik.george@teckids.org"),)
+
+    def ready(self):
+        from django.conf import settings  # noqa
+        settings.PAYMENT_MODEL = "tezor.Invoice"
+        settings.PAYMENT_VARIANTS = {
+            "dummy": ("payments.dummy.DummyProvider", {})
+        }
+
+        for app_config in apps.app_configs.values():
+            if hasattr(app_config, "get_payment_variants"):
+                variants = app_config.get_payment_variants()
+                for name, config in variants.items():
+                    if name not in settings.PAYMENT_VARIANTS:
+                        settings.PAYMENT_VARIANTS[name] = config
+
+    def get_payment_variants(self):
+        prefs = get_site_preferences()
+        variants = {}
+
+        if prefs["payments__sofort_api_id"]:
+            variants["sofort"] = ("payments.sofort.SofortProvider", {
+                "id": prefs["payments__sofort_api_id"],
+                "key": prefs["payments__sofort_api_key"],
+                "project_id": prefs["payments__sofort_project_id"],
+                "endpoint": "https://api.sofort.com/api/xml",
+            })
+
+        if prefs["payments__paypal_client_id"]:
+            variants["paypal"] = ("payments.paypal.PaypalProvider", {
+                "client_id": prefs["payments__paypal_client_id"],
+                "secret": prefs["payments__paypal_secret"],
+                "capture": not prefs["payments__paypal_capture"],
+                "endpoint": "https://api.paypal.com",
+            })
+
+        return variants
diff --git a/aleksis/apps/tezor/preferences.py b/aleksis/apps/tezor/preferences.py
new file mode 100644
index 0000000000000000000000000000000000000000..adf2b2925cd7dee7659c63a522c50335096482fa
--- /dev/null
+++ b/aleksis/apps/tezor/preferences.py
@@ -0,0 +1,74 @@
+from django.utils.translation import gettext_lazy as _
+
+from dynamic_preferences.preferences import Section
+from dynamic_preferences.types import BooleanPreference, StringPreference
+
+from aleksis.core.registries import site_preferences_registry
+
+payments = Section("payments", verbose_name=_("Payments"))
+
+
+@site_preferences_registry.register
+class SofortAPIID(StringPreference):
+    """Sofort payment backend - API ID."""
+
+    section = payments
+    name = "sofort_api_id"
+    verbose_name = _("Sofort / Klarna - API ID")
+    default = ""
+    required = False
+
+
+@site_preferences_registry.register
+class SofortAPIKey(StringPreference):
+    """Sofort payment backend - API key."""
+
+    section = payments
+    name = "sofort_api_key"
+    verbose_name = _("Sofort / Klarna - API Key")
+    default = ""
+    required = False
+
+
+@site_preferences_registry.register
+class SofortProjectID(StringPreference):
+    """Sofort payment backend - project ID."""
+
+    section = payments
+    name = "sofort_project_id"
+    verbose_name = _("Sofort / Klarna - Project ID")
+    default = ""
+    required = False
+
+
+@site_preferences_registry.register
+class PaypalClientID(StringPreference):
+    """PayPal payment backend - client ID."""
+
+    section = payments
+    name = "paypal_client_id"
+    verbose_name = _("PayPal - Client ID")
+    default = ""
+    required = False
+
+
+@site_preferences_registry.register
+class PaypalSecret(StringPreference):
+    """PayPal payment backend - secret."""
+
+    section = payments
+    name = "paypal_secret"
+    verbose_name = _("PayPal - Secret")
+    default = ""
+    required = False
+
+
+@site_preferences_registry.register
+class PaypalCapture(BooleanPreference):
+    """PayPal payment backend - use Authorize & Capture."""
+
+    section = payments
+    name = "paypal_capture"
+    verbose_name = _("PayPal - Use Authorize & Capture")
+    default = False
+    required = False