diff --git includes/handlers/pay_method_gateway.inc includes/handlers/pay_method_gateway.inc
index 44d7ef9..fc37a7c 100644
--- includes/handlers/pay_method_gateway.inc
+++ includes/handlers/pay_method_gateway.inc
@@ -408,21 +408,27 @@
     parent::pay_method_validate($form, $form_state, $element);
 
     if ($this->payment_type == 'cc') {
+      $cc_errors = FALSE;
+      $this->error_message = NULL;
+
       // Validate the card number and set the form value to our clean version.
       if (!$this->cc_number_validate()) {
         form_error($element['cc_number'], $this->error_message);
+        $cc_errors = TRUE;
       }
       form_set_value($element['cc_number'], $this->cc_number, $form_state);
 
       // Validate the CCV2 code and set the form value to our clean version.
       if (!$this->cc_ccv2_validate()) {
         form_error($element['cc_ccv2'], $this->error_message);
+        $cc_errors = TRUE;
       }
       form_set_value($element['cc_ccv2'], $this->cc_ccv2, $form_state);
 
       // Validate the expiration date.
       if (!$this->cc_expiration_validate()) {
         form_error($element['cc_exp_month'], $this->error_message);
+        $cc_errors = TRUE;
       }
 
       // Set the "payment_type" value to the specific card type.
@@ -431,6 +437,33 @@
       // Validate the issue number field.
       if (!$this->cc_issue_number_validate()) {
         form_set_error('cc_issue_number', $this->error_message);
+        $cc_errors = TRUE;
+      }
+
+      // If the built-in credit card validation passes, check against the
+      // credit card processing gateway for full authentication.
+      if (!$cc_errors) {
+        module_load_include('inc', 'pay', 'includes/handlers/pay_transaction');
+        $values = array(
+          'payment_type' => $this->payment_type,
+          'cc_type' => $this->cc_type,
+          'cc_number' => $this->cc_number,
+          'cc_ccv2' => $this->cc_ccv2,
+          'cc_exp_month' => $this->cc_exp_month,
+          'cc_exp_year' => $this->cc_exp_year,
+          'cc_issue_number' => $this->cc_issue_number,
+          'activity' => 'authorize',
+        );
+        $pay_activity = New pay_activity($values);
+
+        // Force the gateway into test mode for validation.
+        $testmode = $this->gateway_testmode;
+        $this->gateway_testmode = TRUE;
+        if (!$this->execute($pay_activity)) {
+          $error_message = isset($this->error_message) ? $this->error_message : t('The credit card information entered could not be validated.');
+          form_error($element['cc_number'], $error_message);
+        }
+        $this->gateway_testmode = $testmode;
       }
     }
   }
