diff --git a/includes/commerce_beanstream.cardonfile.callbacks.inc b/includes/commerce_beanstream.cardonfile.callbacks.inc
index e37f650..c824e9d 100644
--- a/includes/commerce_beanstream.cardonfile.callbacks.inc
+++ b/includes/commerce_beanstream.cardonfile.callbacks.inc
@@ -89,8 +89,9 @@ function commerce_beanstream_cardonfile_create($form, $form_state, $payment_meth
       '@code' => $result['responseCode'],
       '%message' => $result['responseMessage'],
     );
-    drupal_set_message(t('Payment Profile Creation failed: @code (%message)', $error), 'error');
+    #drupal_set_message(t('Payment Profile Creation failed: @code (%message)', $error), 'error');
     watchdog('commerce_beanstream', 'Beanstream Secure Payment Profile creation failed: @code', $error);
+    form_set_error('credit_card', t('There was a problem validating or storing your Credit Card information: %message (code=@code). Please try again, or contact us.', $error));
   }
 
   return FALSE;
@@ -195,17 +196,12 @@ function commerce_beanstream_cardonfile_create_form_validate($form, &$form_state
   $name = $form_state['values']['commerce_customer_address']['und'][0]['name_line'];
   $form_state['values']['credit_card']['owner'] = $name;
 
-  commerce_payment_credit_card_validate($form_state['values']['credit_card'], array('form_parents' => array('credit_card')));
+  if (!commerce_payment_credit_card_validate($form_state['values']['credit_card'], array('form_parents' => array('credit_card')))) {
+    return FALSE; // validate routine would have form_set_error()'d for us.
+  }
 
   $profile = $form_state['commerce_customer_profile'];
   field_attach_form_validate('commerce_customer_profile', $profile, $form['commerce_customer_profile'], $form_state);
-}
-
-/**
- * Submit callback for 'commerce_beanstream_cardonfile_create_form'.
- * This function replaces the default card on file form submit function.
- */
-function commerce_beanstream_cardonfile_create_form_submit($form, &$form_state) {
 
   // Get the card_data (default with only the user id attached).
   $card_data = $form_state['card'];
@@ -224,9 +220,6 @@ function commerce_beanstream_cardonfile_create_form_submit($form, &$form_state)
     $card_data->card_type = commerce_payment_validate_credit_card_type($card_data->card_number, array_keys(commerce_payment_credit_card_types()));
   }
 
-  // Submit the card_data to the field attach handlers.
-  field_attach_submit('commerce_cardonfile', $card_data, $form, $form_state);
-
   // Invoke the payment method's card create/update callback.
   $payment_method = commerce_payment_method_instance_load($card_data->instance_id);
   $callback = $payment_method['cardonfile']['create callback'];
@@ -235,19 +228,30 @@ function commerce_beanstream_cardonfile_create_form_submit($form, &$form_state)
 
     // The callback's return should either be a cardonfile entity or FALSE.
     if ($callback_return) {
-
-      // Save the cardonfile entity in Drupal.
-      $card_save = $callback_return;
-      commerce_cardonfile_save($card_save);
-
-      // Submit the profile to the field attach handlers.
-      $profile = $form_state['commerce_customer_profile'];
-      field_attach_submit('commerce_customer_profile', $profile, $form['commerce_customer_profile'], $form_state);
-
-      // Save or update the customer profile.
-      commerce_customer_profile_save($profile);
+      $form_state['card'] = $callback_return;
+    } else {
+      return FALSE;
     }
   }
+}
+
+/**
+ * Submit callback for 'commerce_beanstream_cardonfile_create_form'.
+ * This function replaces the default card on file form submit function.
+ */
+function commerce_beanstream_cardonfile_create_form_submit($form, &$form_state) {
+
+  // Submit the profile to the field attach handlers.
+  $profile = $form_state['commerce_customer_profile'];
+  field_attach_submit('commerce_customer_profile', $profile, $form['commerce_customer_profile'], $form_state);
+
+  // Save or update the customer profile.
+  commerce_customer_profile_save($profile);
+
+  // Submit the card_data to the field attach handlers.
+  $card_data = $form_state['card'];
+  field_attach_submit('commerce_cardonfile', $card_data, $form, $form_state);
+  commerce_cardonfile_save($card_data);
 
   $form_state['redirect'] = 'user/' . $card_data->uid . '/cards';
 }
