diff --git a/modules/checkout/includes/commerce_checkout.pages.inc b/modules/checkout/includes/commerce_checkout.pages.inc
index a470f20..ea83d95 100644
--- a/modules/checkout/includes/commerce_checkout.pages.inc
+++ b/modules/checkout/includes/commerce_checkout.pages.inc
@@ -237,6 +237,11 @@ function commerce_checkout_form_validate($form, &$form_state) {
 
   // Load a fresh copy of the order stored in the form.
   $order = commerce_order_load($form_state['order']->order_id);
+  // In case of a validation error will the form be rebuilt using information
+  // from $form_state. Make sure that it points to the same order object
+  // reference so that the form builder callback will get the same order as
+  // validate and submit callbacks.
+  $form_state['build_info']['args'][0] = $order;
 
   // Catch and clear already pushed messages.
   $previous_messages = drupal_get_messages();
