diff --git a/commerce_stripe.js b/commerce_stripe.js
index e897101..5b5b746 100755
--- a/commerce_stripe.js
+++ b/commerce_stripe.js
@@ -130,24 +130,24 @@
               };
 
               var responseHandler = makeResponseHandler(
-                $("#edit-continue").closest("form"),
-                $('div.payment-errors'),
-                function (form$) {
-                  // Enable the submit button to allow resubmission.
-                  form$.find('.checkout-continue').removeAttr("disabled").removeClass("auth-processing");
-                  submitButtons$.removeAttr('disabled').removeClass('auth-processing');
-                  // Hide progress animated gif.
-                  $('.checkout-processing').hide();
-                },
-                function (form$) {
-                  var $btnTrigger = $('.form-submit.auth-processing').eq(0);
-                  var trigger$ = $("<input type='hidden' />").attr('name', $btnTrigger.attr('name')).attr('value', $btnTrigger.attr('value'));
-                  form$.append(trigger$);
-                }
+                  $("#edit-continue").closest("form"),
+                  $('div.payment-errors'),
+                  function (form$) {
+                    // Enable the submit button to allow resubmission.
+                    form$.find('.checkout-continue').removeAttr("disabled").removeClass("auth-processing");
+                    submitButtons$.removeAttr('disabled').removeClass('auth-processing');
+                    // Hide progress animated gif.
+                    $('.checkout-processing').hide();
+                  },
+                  function (form$) {
+                    var $btnTrigger = $('.form-submit.auth-processing').eq(0);
+                    var trigger$ = $("<input type='hidden' />").attr('name', $btnTrigger.attr('name')).attr('value', $btnTrigger.attr('value'));
+                    form$.append(trigger$);
+                  }
               );
 
               createToken(cardFields, responseHandler);
-	    }
+            }
             else if (settings.stripe.integration_type == 'checkout') {
               var token_created = false;
               var handler = StripeCheckout.configure({
@@ -188,24 +188,42 @@
           }
         });
 
-        // @todo: See if code duplication can be reduced here.
         $('#commerce-stripe-cardonfile-create-form').delegate('#edit-submit', 'click', function (event) {
-          if (settings.stripe.integration_type === 'stripejs') {
-            var cardFields = {
-              number: 'edit-credit-card-number',
-              cvc: 'edit-credit-card-code',
-              exp_month: 'edit-credit-card-exp-month',
-              exp_year: 'edit-credit-card-exp-year',
-              name: 'edit-credit-card-owner'
-            };
+          var cardFields = {
+            number: 'edit-credit-card-number',
+            cvc: 'edit-credit-card-code',
+            exp_month: 'edit-credit-card-exp-month',
+            exp_year: 'edit-credit-card-exp-year',
+            name: 'edit-credit-card-owner'
+          };
 
-            var responseHandler = makeResponseHandler($('#commerce-stripe-cardonfile-create-form'), $('#card-errors'));
+          var responseHandler = makeResponseHandler($('#commerce-stripe-cardonfile-create-form'), $('#card-errors'));
 
-            createToken(cardFields, responseHandler);
-          }
-          if (settings.stripe.integration_type == 'checkout') {
-            var submitButtons$ = $("#edit-submit");
-            var form$ = submitButtons$.closest("form");
+          createToken(cardFields, responseHandler);
+
+          return false;
+        });
+
+        $('.page-admin-commerce-orders-payment').delegate('#edit-submit', 'click', function(event) {
+          // Prevent the Stripe actions to be triggered if hidden field hasn't been set
+          var cs_terminal = $('input[name=commerce_stripe_terminal]').val();
+          if ( cs_terminal > 0) {
+            if ($('.form-item-payment-details-cardonfile').length) {
+              // If select list enabled in card on file settings
+              if ($("select[name='payment_details[cardonfile]']").length
+                  && $("select[name='payment_details[cardonfile]'] option:selected").val() != 'new') {
+                return;
+              }
+
+              // If radio buttons are enabled in card on file settings
+              if ($("input[type='radio'][name='payment_details[cardonfile]']").length
+                  && $("input[type='radio'][name='payment_details[cardonfile]']:checked").val() != 'new') {
+                return;
+              }
+            }
+
+            var form$ = $("#edit-continue").closest("form");
+            var submitButtons$ = form$.find('.view-commerce-payment-order #submit');
 
             // Prevent the form from submitting with the default action.
             if ($('#stripe_token').length && $('#stripe_token').val().length === 0) {
@@ -216,53 +234,6 @@
               return;
             }
 
-            // Prevent duplicate submissions to stripe from multiple clicks
-            if ($(this).hasClass('auth-processing')) {
-              return false;
-            }
-            $(this).addClass('auth-processing');
-            var token_created = false;
-            var handler = StripeCheckout.configure({
-              key: settings.stripe.publicKey,
-              token: function (token) {
-                token_created = true;
-                $('#stripe_token').val(token.id);
-
-                // Set a triggering element for the form.
-                var $btnTrigger = $('.form-submit.auth-processing').eq(0);
-                var trigger$ = $("<input type='hidden' />").attr('name', $btnTrigger.attr('name')).attr('value', $btnTrigger.attr('value'));
-                form$.append(trigger$);
-
-                // And submit.
-                form$.get(0).submit(form$);
-              },
-              closed: function () {
-                // Only re-enable the submit buttons if a token was not created.
-                if (token_created == false) {
-                  submitButtons$.removeClass('auth-processing').removeAttr("disabled");
-                  $('.checkout-processing').hide();
-                }
-              }
-            });
-
-            // Set Checkout options.
-            $options = Drupal.settings.stripe.checkout;
-            handler.open($options);
-
-            // Close Checkout on page navigation
-            $(window).bind('popstate', function () {
-              handler.close();
-            });
-          }
-
-          // Prevent the form from submitting with the default action.
-          return false;
-        });
-
-        $('.page-admin-commerce-orders-payment').delegate('#edit-submit', 'click', function(event) {
-          // Prevent the Stripe actions to be triggered if hidden field hasn't been set
-          var cs_terminal = $('input[name=commerce_stripe_terminal]').val();
-          if ( cs_terminal > 0) {
             $(this).addClass('auth-processing');
 
             // Prevent the form from submitting with the default action.
@@ -281,18 +252,18 @@
             };
 
             var responseHandler = makeResponseHandler(
-              $("#edit-submit").closest("form"),
-              $('div.payment-errors'),
-              function () {
-                $(this).removeClass('auth-processing');
-                // Enable the submit button to allow resubmission.
-                $('.form-submit').removeAttr("disabled");
-              },
-              function (form$) {
-                var $btnTrigger = $('.form-submit.auth-processing').eq(0);
-                var trigger$ = $("<input type='hidden' />").attr('name', $btnTrigger.attr('name')).attr('value', $btnTrigger.attr('value'));
-                form$.append(trigger$);
-              }
+                $("#edit-submit").closest("form"),
+                $('div.payment-errors'),
+                function () {
+                  $(this).removeClass('auth-processing');
+                  // Enable the submit button to allow resubmission.
+                  $('.form-submit').removeAttr("disabled");
+                },
+                function (form$) {
+                  var $btnTrigger = $('.form-submit.auth-processing').eq(0);
+                  var trigger$ = $("<input type='hidden' />").attr('name', $btnTrigger.attr('name')).attr('value', $btnTrigger.attr('value'));
+                  form$.append(trigger$);
+                }
             );
 
             createToken(cardFields, responseHandler);
diff --git a/commerce_stripe.module b/commerce_stripe.module
index 426b63c..520c6f1 100755
--- a/commerce_stripe.module
+++ b/commerce_stripe.module
@@ -391,7 +391,7 @@ function commerce_stripe_submit_form($payment_method, $pane_values, $checkout_pa
         // Include the stripe.js from stripe.com.
         drupal_add_js('https://js.stripe.com/v2/', 'external');
       }
-    }    
+    }
 
     // Include the stripe.js from stripe.com.
     drupal_add_js('https://js.stripe.com/v2/', 'external');
@@ -1229,7 +1229,7 @@ function commerce_stripe_form_alter(&$form, &$form_state, $form_id) {
      return;
   }
 
-  if (!empty($form['payment_terminal']) && $form_state['payment_method']['method_id'] == 'commerce_stripe') {
+  if (!empty($form['payment_terminal']) && isset($form_state['payment_method']['method_id']) && $form_state['payment_method']['method_id'] == 'commerce_stripe') {
     $form['payment_terminal']['commerce_stripe_terminal'] = array(
       '#value' => 1,
       '#type' => 'hidden',
