diff --git a/modules/checkout/includes/commerce_checkout.pages.inc b/modules/checkout/includes/commerce_checkout.pages.inc
index f7435f9..8d2698e 100644
--- a/modules/checkout/includes/commerce_checkout.pages.inc
+++ b/modules/checkout/includes/commerce_checkout.pages.inc
@@ -119,11 +119,16 @@ function commerce_checkout_form($form, &$form_state, $order, $checkout_page) {
           $show_errors_message = TRUE;
         }
 
-        $form_state['storage']['themed_messages'][$pane_id] = theme('status_messages');
-
-        $form[$pane_id . '_messages'] = array(
-          '#markup' =>  $form_state['storage']['themed_messages'][$pane_id],
-        );
+        // Rendering status messages resets the message session queue, so avoid
+        // doing this if we want to save the messages for the rules redirect
+        // page.
+        if (!isset($GLOBALS['_rules_action_drupal_goto_do'])){
+          $form_state['storage']['themed_messages'][$pane_id] = theme('status_messages');
+
+          $form[$pane_id . '_messages'] = array(
+            '#markup' =>  $form_state['storage']['themed_messages'][$pane_id],
+          );
+        }
       }
 
       // Create a fieldset for the pane and add the form data defined in the
