diff --git a/modules/cart/commerce_cart.module b/modules/cart/commerce_cart.module
index e1bb9e4..6d4fea6 100644
--- a/modules/cart/commerce_cart.module
+++ b/modules/cart/commerce_cart.module
@@ -669,10 +669,8 @@ function commerce_cart_block_view($delta) {
   if ($delta == 'cart') {
     // First check to ensure there are products in the shopping cart.
     if ($order = commerce_cart_order_load($user->uid)) {
-      $wrapper = entity_metadata_wrapper('commerce_order', $order);
-
       // If there are one or more products in the cart...
-      if (commerce_line_items_quantity($wrapper->commerce_line_items, commerce_product_line_item_types()) > 0) {
+      if (!commerce_cart_is_cart_empty($order)) {
 
         // Build the variables array to send to the cart block template.
         $variables = array(
@@ -693,7 +691,34 @@ function commerce_cart_block_view($delta) {
   }
 }
 
- /**
+/**
+ * Checks if the current user has items in their cart.
+ *
+ * @param $order
+ *   Optional: The cart order to check.
+ *
+ * @return
+ *   Boolean indicating whether or not the shopping cart is empty.
+ */
+function commerce_cart_is_cart_empty($order = NULL) {
+  global $user;
+
+  $is_empty = TRUE;
+
+  $order = (is_null($order)) ? commerce_cart_order_load($user->uid) : $order;
+  if ($order) {
+    $wrapper = entity_metadata_wrapper('commerce_order', $order);
+
+    // If cart order has 0 line items it is empty.
+    $is_empty = commerce_line_items_quantity($wrapper->commerce_line_items, commerce_product_line_item_types()) === 0;
+
+    drupal_alter('commerce_cart_is_cart_empty', $is_empty, $order);
+  }
+
+  return $is_empty;
+}
+
+/**
  * Checks if a cart order should be refreshed based on the shopping cart refresh
  * settings on the order settings form.
  *
