diff --git a/modules/checkout/includes/commerce_checkout.pages.inc b/modules/checkout/includes/commerce_checkout.pages.inc
index fdd9a03..889573d 100644
--- a/modules/checkout/includes/commerce_checkout.pages.inc
+++ b/modules/checkout/includes/commerce_checkout.pages.inc
@@ -327,7 +327,7 @@ function commerce_checkout_form_submit($form, &$form_state) {
     // If there is another checkout page...
     if ($checkout_page['next_page']) {
       // Update the order status to reflect the next checkout page.
-      $order = commerce_order_status_update($order, 'checkout_' . $checkout_page['next_page'], FALSE, TRUE, t('Customer continued to the next checkout page via a submit button.'));
+      $order = commerce_order_status_update($order, 'checkout_' . $checkout_page['next_page'], FALSE, NULL, t('Customer continued to the next checkout page via a submit button.'));
 
       // If it happens to be the complete page, process completion now.
       if ($checkout_page['next_page'] == 'complete') {
@@ -357,7 +357,7 @@ function commerce_checkout_form_back_submit($form, &$form_state) {
     }
 
     // Update the order status for the checkout step.
-    $form_state['order'] = commerce_order_status_update($order, 'checkout_' . $previous_page['page_id'], FALSE, TRUE, t('Customer returned to the previous checkout page via a submit button.'));
+    $form_state['order'] = commerce_order_status_update($order, 'checkout_' . $previous_page['page_id'], FALSE, NULL, t('Customer returned to the previous checkout page via a submit button.'));
   }
 }
 
diff --git a/modules/order/commerce_order.module b/modules/order/commerce_order.module
index ffeaf0e..21f0934 100644
--- a/modules/order/commerce_order.module
+++ b/modules/order/commerce_order.module
@@ -1264,7 +1264,8 @@ function commerce_order_status_options_list() {
  *     order would be saved elsewhere after the update.
  * @param $revision
  *   TRUE or FALSE indicating whether or not a new revision should be created
- *     for the order if it is saved as part of the status update. Defaults to TRUE.
+ *   for the order if it is saved as part of the status update. If missing or
+ *   NULL, the value configured in "Order settings" is used.
  * @param $log
  *   If a new revision is created for the update, the log message that will be
  *     used for the revision.
@@ -1272,7 +1273,11 @@ function commerce_order_status_options_list() {
  * @return
  *   The updated order.
  */
-function commerce_order_status_update($order, $name, $skip_save = FALSE, $revision = TRUE, $log = '') {
+function commerce_order_status_update($order, $name, $skip_save = FALSE, $revision = NULL, $log = '') {
+  if (!isset($revision)) {
+    $revision = variable_get('commerce_order_auto_revision', TRUE);
+  }
+
   // Do not update the status if the order is already at it.
   if ($order->status != $name) {
     $order->status = $name;
diff --git a/modules/order/commerce_order.rules.inc b/modules/order/commerce_order.rules.inc
index c800fb9..d496723 100644
--- a/modules/order/commerce_order.rules.inc
+++ b/modules/order/commerce_order.rules.inc
@@ -349,14 +349,14 @@ function commerce_order_rules_action_info() {
  */
 function commerce_order_rules_update_state($order, $name) {
   $order_state = commerce_order_state_load($name);
-  commerce_order_status_update($order, $order_state['default_status'], FALSE, TRUE, t('Order state updated via Rules.'));
+  commerce_order_status_update($order, $order_state['default_status'], FALSE, NULL, t('Order state updated via Rules.'));
 }
 
 /**
  * Rules action: updates an order's status using the Order API.
  */
 function commerce_order_rules_update_status($order, $name) {
-  commerce_order_status_update($order, $name, FALSE, TRUE, t('Order status updated via Rules.'));
+  commerce_order_status_update($order, $name, FALSE, NULL, t('Order status updated via Rules.'));
 }
 
 /**
diff --git a/modules/order/includes/commerce_order.forms.inc b/modules/order/includes/commerce_order.forms.inc
index 5092975..f44b224 100644
--- a/modules/order/includes/commerce_order.forms.inc
+++ b/modules/order/includes/commerce_order.forms.inc
@@ -137,7 +137,7 @@ function commerce_order_order_form($form, &$form_state, $order) {
     '#type' => 'checkbox',
     '#title' => t('Create new revision on update'),
     '#description' => t('If an update log message is entered, a revision will be created even if this is unchecked.'),
-    '#default_value' => TRUE,
+    '#default_value' => variable_get('commerce_order_auto_revision', TRUE),
     '#access' => user_access('administer commerce_order entities'),
   );
   $form['order_history']['date'] = array(
diff --git a/modules/order/includes/commerce_order_ui.orders.inc b/modules/order/includes/commerce_order_ui.orders.inc
index 15b4d55..a602036 100644
--- a/modules/order/includes/commerce_order_ui.orders.inc
+++ b/modules/order/includes/commerce_order_ui.orders.inc
@@ -16,6 +16,12 @@ function commerce_order_settings_form($form, &$form_state) {
     '#description' => t('Supply an optional help message to be displayed above the order add form.'),
     '#default_value' => variable_get('commerce_order_help_text', ''),
   );
+  $form['commerce_order_auto_revision'] = array(
+    '#type' => 'checkbox',
+    '#title' => t('Create revision on update.'),
+    '#description' => t('When checked, a new revision will automatically be created each time an order is updated.'),
+    '#default_value' => variable_get('commerce_order_auto_revision', TRUE),
+  );
 
   return system_settings_form($form);
 }
