diff --git a/hypha/apply/users/urls.py b/hypha/apply/users/urls.py
index 2fd5ff936cf1fa11cb01ccab2aad009889fbae91..d5a68b52b49d8d8ba64729ddea9f8f4a718a5016 100644
--- a/hypha/apply/users/urls.py
+++ b/hypha/apply/users/urls.py
@@ -13,6 +13,7 @@ from .views import (
     TWOFABackupTokensPasswordView,
     TWOFADisableView,
     TWOFARequiredMessageView,
+    TWOFASetupView,
     become,
     create_password,
     oauth,
@@ -87,6 +88,7 @@ urlpatterns = [
         ),
         # Two factor redirect
         path('two_factor/required/', TWOFARequiredMessageView.as_view(), name='two_factor_required'),
+        path('two_factor/setup/', TWOFASetupView.as_view(), name="two_factor_setup"),
         path('two_factor/backup_tokens/password/', TWOFABackupTokensPasswordView.as_view(), name='backup_tokens_password'),
         path('two_factor/disable/', TWOFADisableView.as_view(), name='disable'),
         path('two_factor/admin/disable/<str:user_id>/', TWOFAAdminDisableView.as_view(), name='admin_disable'),
diff --git a/hypha/apply/users/views.py b/hypha/apply/users/views.py
index 037502f1271f56f04f752c114f6599f8b2397ee9..f67c9776ac66e7ec72bf3811463458b906ed86ac 100644
--- a/hypha/apply/users/views.py
+++ b/hypha/apply/users/views.py
@@ -24,6 +24,8 @@ from hijack.views import AcquireUserView
 from two_factor.forms import AuthenticationTokenForm, BackupTokenForm
 from two_factor.views import DisableView as TwoFactorDisableView
 from two_factor.views import LoginView as TwoFactorLoginView
+from two_factor.views import SetupView as TwoFactorSetupView
+from two_factor.views import BackupTokensView as TwoFactorBackupTokensView
 from two_factor.utils import default_device
 from wagtail.admin.views.account import password_management_enabled
 from wagtail.core.models import Site
@@ -284,7 +286,7 @@ def create_password(request):
 
 
 @method_decorator(login_required, name='dispatch')
-class TWOFABackupTokensPasswordView(FormView):
+class TWOFABackupTokensPasswordView(TwoFactorBackupTokensView):
     """
     Require password to see backup codes
     """
@@ -349,5 +351,9 @@ class TWOFAAdminDisableView(FormView):
         return ctx
 
 
+class TWOFASetupView(TwoFactorSetupView):
+    success_url = "users:backup_tokens_password"
+
+
 class TWOFARequiredMessageView(TemplateView):
     template_name = 'two_factor/core/two_factor_required.html'