diff --git a/modules/checkout/includes/commerce_checkout.pages.inc b/modules/checkout/includes/commerce_checkout.pages.inc
index bbb2a06..56c4b64 100644
--- a/modules/checkout/includes/commerce_checkout.pages.inc
+++ b/modules/checkout/includes/commerce_checkout.pages.inc
@@ -106,6 +106,13 @@ function commerce_checkout_form($form, &$form_state, $order, $checkout_page) {
       // Generate the pane form.
       $pane_form = $callback($form, $form_state, $checkout_pane, $order);
 
+      // Refresh the order object if the checkout pane
+      // saved it outside of the passed reference.
+      if (commerce_order_has_changed($order)) {
+        $order = commerce_order_load($order->order_id);
+        $form_state['order'] = $order;
+      }
+
       // Combine the messages that were created during this pane's validation or
       // submit process with any that were created during the pane generation
       // and merge them into the session's current messages array.
