diff --git a/commerce_bank_transfer.module b/commerce_bank_transfer.module
index bfcd91e..8ac61bf 100644
--- a/commerce_bank_transfer.module
+++ b/commerce_bank_transfer.module
@@ -16,7 +16,7 @@ function commerce_bank_transfer_menu() {
     'title' => 'Confirm payment',
     'page callback' => 'drupal_get_form',
     'page arguments' => array('commerce_bank_transfer_confirm_form', 3, 5),
-    'access callback' => 'commerce_payment_transaction_access',
+    'access callback' => 'commerce_bank_transfer_transaction_confirm_access',
     'access arguments' => array(3, 5),
     'type' => MENU_DEFAULT_LOCAL_TASK,
     'context' => MENU_CONTEXT_INLINE,
@@ -27,6 +27,22 @@ function commerce_bank_transfer_menu() {
   return $items;
 }
 
+/**
+ * Access callback function to limit use to non-completed bank transfers
+ */
+function commerce_bank_transfer_transaction_confirm_access($order, $transaction = NULL, $account = NULL) {
+  $access = commerce_payment_transaction_access('update', $transaction, $account);
+  if ($access && $transaction) {
+    if ($transaction->payment_method != 'bank_transfer') {
+      $access = FALSE;
+    }
+    else if ($transaction->status == COMMERCE_PAYMENT_STATUS_SUCCESS) {
+      $access = FALSE;
+    }
+  }
+  return $access;
+}
+
 
 /**
  * Implements hook_commerce_payment_method_info().
@@ -178,7 +194,7 @@ function commerce_bank_transfer_submit_form_submit($payment_method, $pane_form,
  *   An array indicating the amount and currency code to charge.
  */
 function commerce_bank_transfer_transaction($payment_method, $order, $charge) {
-  $transaction = commerce_payment_transaction_new('commerce_bank_transfer', $order->order_id);
+  $transaction = commerce_payment_transaction_new('bank_transfer', $order->order_id);
   $transaction->instance_id = $payment_method['instance_id'];
   $transaction->amount = $charge['amount'];
   $transaction->currency_code = $charge['currency_code'];
