diff --git a/modules/order/commerce_order.module b/modules/order/commerce_order.module
index 786e013..e2153bd 100644
--- a/modules/order/commerce_order.module
+++ b/modules/order/commerce_order.module
@@ -1504,3 +1504,12 @@ function commerce_order_preprocess_views_view(&$vars) {
     $vars['footer'] = '';
   }
 }
+
+/**
+ * Element validation callback to strip whitespaces from email fields.
+ * @see commerce_order_account_pane_checkout_form()
+ */
+function _element_validate_trim_email($element, &$form_state, $form) {
+  $trimmed_email = trim($element['#value']);
+  form_set_value($element, $trimmed_email, $form_state);
+}
diff --git a/modules/order/includes/commerce_order.checkout_pane.inc b/modules/order/includes/commerce_order.checkout_pane.inc
index 8bfb7ca..3224e4e 100644
--- a/modules/order/includes/commerce_order.checkout_pane.inc
+++ b/modules/order/includes/commerce_order.checkout_pane.inc
@@ -67,6 +67,7 @@ function commerce_order_account_pane_checkout_form($form, &$form_state, $checkou
       '#title' => t('E-mail address'),
       '#default_value' => $order->mail,
       '#required' => TRUE,
+      '#element_validate' => array('_element_validate_trim_email'),
     );
 
     if (variable_get('commerce_order_account_pane_mail_double_entry', FALSE)) {
@@ -76,6 +77,7 @@ function commerce_order_account_pane_checkout_form($form, &$form_state, $checkou
         '#description' => t('Provide your e-mail address in both fields.'),
         '#default_value' => $order->mail,
         '#required' => TRUE,
+        '#element_validate' => array('_element_validate_trim_email'),
       );
     }
   }
