diff --git a/pass/resources/js/checkout.js b/pass/resources/js/checkout.js
index fb1cfa1f8da4e3e01113f57ad326a690ee84efe5..111b1371d22456ae271bb2b9e7fa4a10b00aa6f9 100644
--- a/pass/resources/js/checkout.js
+++ b/pass/resources/js/checkout.js
@@ -155,7 +155,13 @@ function four_finish_purchase() {
 
   // Make Create Key button work
   let create_key_button = document.getElementById("create-key-button");
-  create_key_button.addEventListener("pointerdown", () => {
+  create_key_button.addEventListener("pointerdown", e => {
+    if (e.target.disabled) {
+      return;
+    } else {
+      e.target.disabled = true;
+    }
+
     fetch("/redeem/create", {
       method: "POST",
       headers: {
@@ -171,6 +177,7 @@ function four_finish_purchase() {
             error_message.textContent = json_response.errors[i].msg
             document.querySelector("#create-key .errors ul").appendChild(error_message);
           }
+          e.target.disabled = false;
           return Promise.reject("Error while creating a new MetaGer-Pass Key");
         });
       } else {
@@ -182,6 +189,10 @@ function four_finish_purchase() {
         // Prefill the recharge existing key button
         let metager_pass_key_input = document.getElementById("metager-pass-key");
         metager_pass_key_input.value = key.key;
+        document.getElementById("metager-pass-key").addEventListener("change", e => {
+          // When the user changes the generated key unlock the generate button again
+          create_key_button.disabled = false;
+        });
         // Select The recharge existing key tab and show the correct text
         document.getElementById("recharge-existing-key").classList.add("hidden");
         document.getElementById("recharge-new-key").classList.remove("hidden");