diff --git commerce/modules/payment/includes/commerce_payment.credit_card.inc commerce/modules/payment/includes/commerce_payment.credit_card.inc
index f453860..dcdcc7a 100644
--- commerce/modules/payment/includes/commerce_payment.credit_card.inc
+++ commerce/modules/payment/includes/commerce_payment.credit_card.inc
@@ -156,7 +156,7 @@ function commerce_payment_credit_card_form($fields = array(), $default = array()
       '#title' => !empty($fields['code']) ? $fields['code'] : t('Security code'),
       '#default_value' => $default['code'],
       '#attributes' => array('autocomplete' => 'off'),
-      '#required' => TRUE,
+      '#required' => empty($fields['code']) ? FALSE : TRUE,
       '#maxlength' => 4,
       '#size' => 4,
     );
@@ -532,6 +532,10 @@ function commerce_payment_validate_credit_card_issue($issue) {
  *   TRUE or FALSE indicating the security code's validity.
  */
 function commerce_payment_validate_credit_card_security_code($number, $code) {
+  // If no security code provided (not all card types have one).
+  if (empty($code)) {
+    return TRUE;
+  }
   // Ensure the code is numeric.
   if (!ctype_digit($code)) {
     return FALSE;
