diff --git a/aleksis/apps/tezor/models/invoice.py b/aleksis/apps/tezor/models/invoice.py
index 6bd88a65b36e353ddf8733186ffb163869d719bf..d73515bcc09e89d6bba788f3bd0913c7c4aa7dd1 100644
--- a/aleksis/apps/tezor/models/invoice.py
+++ b/aleksis/apps/tezor/models/invoice.py
@@ -80,7 +80,7 @@ class Invoice(BasePayment, PureDjangoModel):
         return TotalsTable(values)
 
     def get_success_url(self):
-        return reverse("payment_details", kwargs={"token": self.token})
+        return reverse("invoice_by_pk", kwargs={"pk": self.pk})
 
     def get_failure_url(self):
-        return reverse("payment_details", kwargs={"token": self.token})
+        return reverse("invoice_by_pk", kwargs={"pk": self.pk})
diff --git a/aleksis/apps/tezor/urls.py b/aleksis/apps/tezor/urls.py
index 1bc5fd9e76182749d12cda3ebe5b6b1b7cf66b9b..bea20f3c01b222d6d8bb9c1f0699e84011453553 100644
--- a/aleksis/apps/tezor/urls.py
+++ b/aleksis/apps/tezor/urls.py
@@ -5,7 +5,7 @@ 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/<str:token>/payment", views.payment_details, name="payment_details"),
+    path("invoice/<str:token>/payment", views.do_payment, name="do_payment"),
     path(
         "clients/list",
         views.ClientListView.as_view(),
diff --git a/aleksis/apps/tezor/views.py b/aleksis/apps/tezor/views.py
index e51b67402046ebbb136fe94f110aee538a574722..ee4df3c658f103eb7e6415c95ae8e9e8389eac2d 100644
--- a/aleksis/apps/tezor/views.py
+++ b/aleksis/apps/tezor/views.py
@@ -6,7 +6,7 @@ from django.urls import reverse, reverse_lazy
 from django.utils.decorators import method_decorator
 from django.utils.translation import ugettext as _
 
-from payments import get_payment_model, RedirectNeeded
+from payments import get_payment_model, PaymentStatus, RedirectNeeded
 from rules.contrib.views import PermissionRequiredMixin
 from django_tables2.views import SingleTableView, RequestConfig
 
@@ -32,9 +32,13 @@ class GetInvoicePDF(PermissionRequiredMixin, RenderPDFView):
         print(invoice.group.__dict__)
         return context
 
-def payment_details(request, token):
+
+def do_payment(request, token):
     payment = get_object_or_404(get_payment_model(), token=token)
 
+    if payment.status not in [PaymentStatus.WAITING, PaymentStatus.INPUT, PaymentStatus.REJECTED]:
+        return redirect(payment.get_success_url())
+
     try:
        form = payment.get_form(data=request.POST or None)
     except RedirectNeeded as redirect_to: