diff --git a/aleksis/apps/tezor/templates/tezor/empty.html b/aleksis/apps/tezor/templates/tezor/empty.html
deleted file mode 100644
index 2fb4415f4772cd40a8eb40e290d50f912c4f219f..0000000000000000000000000000000000000000
--- a/aleksis/apps/tezor/templates/tezor/empty.html
+++ /dev/null
@@ -1,8 +0,0 @@
-{% extends 'core/base.html' %}
-{% load i18n %}
-
-{% block content %}
-  <p class="flow-text">
-   {% blocktrans %}Tezor (account and payment system){% endblocktrans %}
-  </p>
-{% endblock %}
diff --git a/aleksis/apps/tezor/templates/tezor/invoice/payment.html b/aleksis/apps/tezor/templates/tezor/invoice/payment.html
new file mode 100644
index 0000000000000000000000000000000000000000..7d51c9012f759d9865852a26064745beb640d0a2
--- /dev/null
+++ b/aleksis/apps/tezor/templates/tezor/invoice/payment.html
@@ -0,0 +1,16 @@
+{% extends 'core/base.html' %}
+
+{% load i18n %}
+{% load material_form %}
+
+{% block page_title %}{% blocktrans %}Make payment for{% endblocktrans %} {{ payment.transaction_id }}{% endblock %}
+{% block browser_title %}{% blocktrans %}Make payment for{% endblocktrans %} {{ payment.transaction_id }}{% endblock %}
+
+{% block content %}
+<form action="{{ form.action }}" method="{{ form.method }}">
+    {% csrf_token %}
+    {% form form=form %}{% endform %}
+    {% trans "Confirm payment" as caption %}
+    {% include "core/partials/save_button.html" with caption=caption icon="shopping_cart_checkout" %}
+</form>
+{% endblock %}
diff --git a/aleksis/apps/tezor/urls.py b/aleksis/apps/tezor/urls.py
index 571809cf71d6d08182a261b2aa26cde2155b6844..18d1a1ce8062b099aa944e9db5628328a7fff46b 100644
--- a/aleksis/apps/tezor/urls.py
+++ b/aleksis/apps/tezor/urls.py
@@ -4,5 +4,6 @@ from . import views
 
 urlpatterns = [
     path("payments/", include("payments.urls")),
-    path("invoice/<int:pk>/print", views.GetInvoicePDF.as_view(), name="get_invoice_by_pk")
+    path("invoice/<int:pk>/print", views.GetInvoicePDF.as_view(), name="get_invoice_by_pk"),
+    path("invoice/<str:token>/payment", views.payment_details, name="payment_details"),
 ]
diff --git a/aleksis/apps/tezor/views.py b/aleksis/apps/tezor/views.py
index 22fe10830ab05dd5688ae8bf2a498a4e406ec45b..378794e4fe9be31f1d9f70c9f212e76ec81fdd9f 100644
--- a/aleksis/apps/tezor/views.py
+++ b/aleksis/apps/tezor/views.py
@@ -1,6 +1,7 @@
 from django.views.generic import View
-from django.shortcuts import render
+from django.shortcuts import redirect, render, get_object_or_404
 
+from payments import get_payment_model, RedirectNeeded
 from rules.contrib.views import PermissionRequiredMixin
 
 from aleksis.core.views import RenderPDFView
@@ -20,3 +21,19 @@ class GetInvoicePDF(PermissionRequiredMixin, RenderPDFView):
 
         print(invoice.group.__dict__)
         return context
+
+
+def payment_details(request, token):
+    payment = get_object_or_404(get_payment_model(), token=token)
+
+    try:
+       form = payment.get_form(data=request.POST or None)
+    except RedirectNeeded as redirect_to:
+        return redirect(str(redirect_to))
+
+    context = {
+        "form": form,
+        "payment": payment,
+    }
+
+    return render(request, "tezor/invoice/payment.html", context)