diff --git a/payment/uc_payment/uc_payment.admin.inc b/payment/uc_payment/uc_payment.admin.inc
index 4bd6155..7c1e21e 100644
--- a/payment/uc_payment/uc_payment.admin.inc
+++ b/payment/uc_payment/uc_payment.admin.inc
@@ -46,13 +46,26 @@ function uc_payment_methods_form($form, &$form_state) {
         }
       }
 
+      $links = array();
       $null = NULL;
       $method_settings = $method['callback']('settings', $null, array(), $form_state);
       if (is_array($method_settings)) {
-        $form['pmtable'][$id]['settings'] = array(
-          '#markup' => l(t('settings'), 'admin/store/settings/payment/method/' . $id),
+        $links['settings'] = array(
+          'title' => t('settings'),
+          'href' => 'admin/store/settings/payment/method/' . $id,
         );
       }
+
+      $links['conditions'] = array(
+        'title' => t('conditions'),
+        'href' => 'admin/store/settings/payment/manage/uc_payment_method_' . $id,
+      );
+
+      $form['pmtable'][$id]['settings'] = array(
+        '#theme' => 'links',
+        '#links' => $links,
+        '#attributes' => array('class' => array('links', 'inline')),
+      );
     }
   }
   else {
diff --git a/payment/uc_payment/uc_payment.module b/payment/uc_payment/uc_payment.module
index 29b34bb..fd1539e 100644
--- a/payment/uc_payment/uc_payment.module
+++ b/payment/uc_payment/uc_payment.module
@@ -39,6 +39,7 @@ function uc_payment_menu() {
     'access arguments' => array('administer store'),
     'file' => 'uc_payment.admin.inc',
   );
+  $items += rules_ui()->config_menu('admin/store/settings/payment');
 
   $items['admin/store/orders/%uc_order/payments/select/%'] = array(
     'title' => 'Select payment gateway',
diff --git a/payment/uc_payment/uc_payment.rules_defaults.inc b/payment/uc_payment/uc_payment.rules_defaults.inc
index ea90b9e..6f29286 100644
--- a/payment/uc_payment/uc_payment.rules_defaults.inc
+++ b/payment/uc_payment/uc_payment.rules_defaults.inc
@@ -54,5 +54,15 @@ function uc_payment_default_rules_configuration() {
     ));
   $configs['uc_checkout_complete_paid'] = $rule;
 
+  $methods = _uc_payment_method_list();
+  foreach ($methods as $id => $method) {
+    $set = rules_and(array(
+      'order' => array('type' => 'uc_order', 'label' => t('Order')),
+    ));
+    $set->label = t('@method conditions', array('@method' => $method['name']));
+
+    $configs['uc_payment_method_' . $method['id']] = $set;
+  }
+
   return $configs;
 }
diff --git a/payment/uc_payment/uc_payment_checkout_pane.inc b/payment/uc_payment/uc_payment_checkout_pane.inc
index 1b4039a..6e539c4 100644
--- a/payment/uc_payment/uc_payment_checkout_pane.inc
+++ b/payment/uc_payment/uc_payment_checkout_pane.inc
@@ -30,6 +30,11 @@ function uc_checkout_pane_payment($op, &$order, $form = NULL, &$form_state = NUL
       $default = NULL;
 
       foreach ($methods as $id => $method) {
+        $set = rules_config_load('uc_payment_method_' . $method['id']);
+        if ($set && !$set->execute($order)) {
+          continue;
+        }
+
         if ($method['checkout'] && !isset($method['express'])) {
           $options[$id] = $method['title'];
         }
