diff --git uc_order/uc_order.module uc_order/uc_order.module
index 4f7ac1b..03617f7 100644
--- uc_order/uc_order.module
+++ uc_order/uc_order.module
@@ -1006,6 +1006,9 @@ function uc_order_new($uid = 0, $state = 'in_checkout') {
   $order->primary_email = $email;
   $order->products = array();
 
+  // Allow other modules to change the new order.
+  uc_order_module_invoke('new', $order, NULL);
+
   db_query("INSERT INTO {uc_orders} (uid, order_status, order_total, "
           ."primary_email, delivery_first_name, delivery_last_name, delivery_phone, "
           ."delivery_company, delivery_street1, delivery_street2, delivery_city, "
@@ -1018,8 +1021,6 @@ function uc_order_new($uid = 0, $state = 'in_checkout') {
            $uid, $order->order_status, $email, time(), time());
   $order->order_id = db_last_insert_id('uc_orders', 'order_id');
 
-  uc_order_module_invoke('new', $order, NULL);
-
   return $order;
 }
 
@@ -1031,6 +1032,16 @@ function uc_order_save($order) {
     return FALSE;
   }
 
+  if (is_array($order->products)) {
+    foreach ($order->products as $product) {
+      drupal_alter('order_product', $product, $order);
+      uc_order_product_save($order->order_id, $product);
+    }
+  }
+
+  // Allow other modules to change the saved order.
+  uc_order_module_invoke('save', $order, NULL);
+
   db_query("UPDATE {uc_orders} SET uid = %d, order_status = '%s', order_total = %f, product_count = %d, primary_email = '%s', "
           ."delivery_first_name = '%s', delivery_last_name = '%s', delivery_phone = '%s', "
           ."delivery_company = '%s', delivery_street1 = '%s', delivery_street2 = '%s', "
@@ -1050,14 +1061,6 @@ function uc_order_save($order) {
            ((is_null($order->billing_country) || $order->billing_country == 0) ? variable_get('uc_store_country', 840) : $order->billing_country),
            $order->payment_method, serialize($order->data), ip_address(), time(), $order->order_id);
 
-  if (is_array($order->products)) {
-    foreach ($order->products as $product) {
-      drupal_alter('order_product', $product, $order);
-      uc_order_product_save($order->order_id, $product);
-    }
-  }
-
-  uc_order_module_invoke('save', $order, NULL);
 }
 
 /**
