diff --git a/modules/checkout/commerce_checkout.module b/modules/checkout/commerce_checkout.module
index 210b408..5a510e1 100644
--- a/modules/checkout/commerce_checkout.module
+++ b/modules/checkout/commerce_checkout.module
@@ -478,7 +478,12 @@ function commerce_checkout_pages() {
  * Returns the page ID of the first checkout page sorted by weight.
  */
 function commerce_checkout_first_checkout_page() {
-  return key(commerce_checkout_pages());
+  // We do not use commerce_checkout_pages() as that builds pane data.
+  $checkout_pages = module_invoke_all('commerce_checkout_page_info');
+  drupal_alter('commerce_checkout_page_info', $checkout_pages);
+  uasort($checkout_pages, 'drupal_sort_weight');
+
+  return key($checkout_pages);
 }
 
 /**
diff --git a/modules/checkout/tests/commerce_checkout.test b/modules/checkout/tests/commerce_checkout.test
index 56351cc..b29347f 100644
--- a/modules/checkout/tests/commerce_checkout.test
+++ b/modules/checkout/tests/commerce_checkout.test
@@ -524,4 +524,14 @@ class CommerceCheckoutTestProcess extends CommerceBaseTestCase {
     $this->assertCheckoutPageAccessible($this->order, 'complete');
   }
 
+  public function testDefaultStatusForCheckoutState() {
+    // Verify it defaults to first page.
+    $checkout_state = commerce_order_state_load('checkout');
+    $this->assertEqual($checkout_state['default_status'], 'checkout_checkout');
+
+    // Checkout pane data should not have been built by checking order state.
+    $checkout_panes = drupal_static('commerce_checkout_panes');
+    $this->assertTrue($checkout_panes == NULL);
+  }
+
 }
