diff --git a/CHANGELOG.txt b/CHANGELOG.txt
index 358458c..a31a665 100644
--- a/CHANGELOG.txt
+++ b/CHANGELOG.txt
@@ -8,7 +8,7 @@ Ubercart 4.x
 * Removed uc_weight_sort(), use \Drupal\Component\Utility\SortArray::sortByWeightElement() instead.
 * Removed uc_get_message(), use YAML configuration files instead.
 * Invoice templates are now named 'uc_order_invoice' to avoid theming conflicts.
-* Order objects now have an interface (UcOrderInterface) and a set of methods:
+* Order objects now have an interface (OrderInterface) and a set of methods:
     * $order->order_id => $order->id()
     * $order->uid => $order->getUser(), $order->getUserId() and $order->setUserId()
     * $order->order_status => $order->getStatusId() and $order->setStatusId()
@@ -19,6 +19,7 @@ Ubercart 4.x
     * $order address properties => $order->getAddress() and $order->setAddress()
     * $order->currency => $order->getCurrency()
     * $order->payment_method => $order->getPaymentMethodId() and $order->setPaymentMethodId()
+    * uc_order_load() => Order::load()
     * uc_order_load_line_items() => $order->getLineItems()
     * uc_order_load_line_items_display() => $order->getDisplayLineItems()
     * uc_order_is_shippable() => $order->isShippable()
diff --git a/payment/uc_2checkout/src/Controller/CheckoutController.php b/payment/uc_2checkout/src/Controller/CheckoutController.php
index a1b205b..9e3bc00 100644
--- a/payment/uc_2checkout/src/Controller/CheckoutController.php
+++ b/payment/uc_2checkout/src/Controller/CheckoutController.php
@@ -10,6 +10,7 @@ namespace Drupal\uc_2checkout\Controller;
 use Drupal\Component\Utility\SafeMarkup;
 use Drupal\Component\Utility\Unicode;
 use Drupal\Core\Controller\ControllerBase;
+use Drupal\uc_order\Entity\Order;
 use Symfony\Component\HttpKernel\Exception\AccessDeniedHttpException;
 
 /**
@@ -25,7 +26,7 @@ class CheckoutController extends ControllerBase {
     $module_config = \Drupal::config('uc_2checkout.settings');
     \Drupal::logger('2Checkout')->notice('Receiving new order notification for order !order_id.', array('!order_id' => SafeMarkup::checkPlain($_REQUEST['merchant_order_id'])));
 
-    $order = uc_order_load($_REQUEST['merchant_order_id']);
+    $order = Order::load($_REQUEST['merchant_order_id']);
 
     if (!$order || $order->getStateId() != 'in_checkout') {
       return t('An error has occurred during payment.  Please contact us to ensure your order has submitted.');
diff --git a/payment/uc_authorizenet/uc_authorizenet.module b/payment/uc_authorizenet/uc_authorizenet.module
index c815fc2..827c4ac 100644
--- a/payment/uc_authorizenet/uc_authorizenet.module
+++ b/payment/uc_authorizenet/uc_authorizenet.module
@@ -6,6 +6,7 @@
  */
 
 use Drupal\Component\Utility\SafeMarkup;
+use Drupal\uc_order\Entity\Order;
 use Drupal\uc_store\Encryption;
 
 define('UC_AUTHORIZENET_TEST_GATEWAY_URL', 'https://test.authorize.net/gateway/transact.dll');
@@ -200,7 +201,7 @@ function uc_authorizenet_payment_gateway_settings_submit($form, &$form_state) {
  */
 function uc_authorizenet_charge($order_id, $amount, $data) {
   // Load the order.
-  $order = uc_order_load($order_id);
+  $order = Order::load($order_id);
 
   // Perform the appropriate action based on the transaction type.
   switch ($data['txn_type']) {
diff --git a/payment/uc_credit/tests/test_gateway.module b/payment/uc_credit/tests/test_gateway.module
index 14b2d06..a44a9fd 100644
--- a/payment/uc_credit/tests/test_gateway.module
+++ b/payment/uc_credit/tests/test_gateway.module
@@ -14,6 +14,7 @@
  * - Customer's billing first name equals 'Fictitious'.
  * - Customer's billing telephone number equals '8675309'.
  */
+use Drupal\uc_order\Entity\Order;
 
 /*******************************************************************************
  * Hook Functions (Ubercart)
@@ -47,7 +48,7 @@ function test_gateway_uc_payment_gateway() {
  */
 function test_gateway_charge($order_id, $amount, $data) {
   $user = \Drupal::currentUser();
-  $order = uc_order_load($order_id);
+  $order = Order::load($order_id);
 
   // cc_exp_month and cc_exp_year are also validated by
   // _uc_credit_valid_card_expiration() on the checkout form.
diff --git a/payment/uc_cybersource/src/Controller/HOPController.php b/payment/uc_cybersource/src/Controller/HOPController.php
index 5132967..1b30cfd 100644
--- a/payment/uc_cybersource/src/Controller/HOPController.php
+++ b/payment/uc_cybersource/src/Controller/HOPController.php
@@ -9,6 +9,7 @@ namespace Drupal\uc_cybersource\Controller;
 
 use Drupal\Component\Utility\SafeMarkup;
 use Drupal\Core\Controller\ControllerBase;
+use Drupal\uc_order\Entity\Order;
 
 /**
  * Controller routines for HOP postback.
@@ -51,7 +52,7 @@ class HOPController extends ControllerBase {
     $reconciliation_id = SafeMarkup::checkPlain($_POST['reconciliationID']);
     $order_id = SafeMarkup::checkPlain($_POST['orderNumber']);
     $payer_email = SafeMarkup::checkPlain($_POST['billTo_email']);
-    $order = uc_order_load($_POST['orderNumber']);
+    $order = Order::load($_POST['orderNumber']);
 
     switch ($decision) {
       case 'ACCEPT':
diff --git a/payment/uc_cybersource/uc_cybersource.module b/payment/uc_cybersource/uc_cybersource.module
index 5df19c4..9f418e3 100644
--- a/payment/uc_cybersource/uc_cybersource.module
+++ b/payment/uc_cybersource/uc_cybersource.module
@@ -5,6 +5,7 @@
  * CyberSource's Silent Order POST and Hosted Order Page methods of payment.
  */
 
+use Drupal\uc_order\Entity\Order;
 use Drupal\uc_store\Encryption;
 
 /**
@@ -15,7 +16,7 @@ function uc_cybersource_page_alter(&$page) {
   // Add to the review page hidden form fields with data to post to
   // CyberSource HOP.
   if (isset($page[$block->region]['system_main']['#theme']) && $page[$block->region]['system_main']['#theme'] == 'uc_cart_checkout_review' && ($order_id = intval($_SESSION['cart_order'])) > 0) {
-    $order = uc_order_load($order_id);
+    $order = Order::load($order_id);
 
     if ($order->getPaymentMethodId() == 'cybersource_hop') {
       $page[$block->region]['system_main']['#form'] = \Drupal::formBuilder()->getForm('uc_cybersource_hop_form', $order);
@@ -382,7 +383,7 @@ function uc_cybersource_hop_form($form, $form_state, $order) {
  * Charges card.
  */
 function uc_cybersource_charge($order_id, $amount, $data) {
-  $order = uc_order_load($order_id);
+  $order = Order::load($order_id);
 
   $amount = uc_currency_format($amount, FALSE, FALSE, '.');
 
diff --git a/payment/uc_payment/uc_payment.module b/payment/uc_payment/uc_payment.module
index 8844ada..499a880 100644
--- a/payment/uc_payment/uc_payment.module
+++ b/payment/uc_payment/uc_payment.module
@@ -14,6 +14,7 @@ use Drupal\Core\Form\FormStateInterface;
 use Drupal\Core\Url;
 use Drupal\Component\Plugin\Exception\PluginException;
 use Drupal\Component\Utility\Xss;
+use Drupal\uc_order\Entity\Order;
 use Symfony\Component\HttpFoundation\RedirectResponse;
 use Drupal\user\Entity\User;
 use Drupal\uc_order\OrderInterface;
@@ -384,7 +385,7 @@ function uc_payment_delete($receipt_id) {
 
   $payment = uc_payment_load($receipt_id);
   $log_message = t('@method payment for @amount deleted.', array('@method' => $payment->method, '@amount' => uc_currency_format($payment->amount)));
-  uc_order_load($payment->order_id)->logChanges(array($log_message));
+  Order::load($payment->order_id)->logChanges(array($log_message));
 
   db_delete('uc_payment_receipts')
     ->condition('receipt_id', $receipt_id)
diff --git a/payment/uc_paypal/uc_paypal.module b/payment/uc_paypal/uc_paypal.module
index 97ce264..a12e537 100644
--- a/payment/uc_paypal/uc_paypal.module
+++ b/payment/uc_paypal/uc_paypal.module
@@ -13,6 +13,7 @@
 use Drupal\Component\Utility\SafeMarkup;
 use Drupal\Core\Form\FormStateInterface;
 use Drupal\Core\Url;
+use Drupal\uc_order\Entity\Order;
 
 /**
  * Implements hook_menu().
@@ -176,7 +177,7 @@ function uc_paypal_wpp_settings_form($form, &$form_state) {
 function uc_paypal_wpp_charge($order_id, $amount, $data) {
   global $user;
 
-  $order = uc_order_load($order_id);
+  $order = Order::load($order_id);
 
   if ($data['txn_type'] == UC_CREDIT_PRIOR_AUTH_CAPTURE) {
     $nvp_request = array(
@@ -598,7 +599,7 @@ function uc_paypal_ec_checkout($form, FormStateInterface $form_state) {
 
   $order_id = intval($_SESSION['cart_order']);
 
-  $order = uc_order_load($order_id);
+  $order = Order::load($order_id);
   if (!$order || $order->getStateId() != 'in_checkout') {
     $_SESSION['cart_order'] = NULL;
     unset($_SESSION['cart_order']);
@@ -731,7 +732,7 @@ function uc_paypal_ec_form_submit($form, &$form_state) {
  * @see uc_cart_checkout_review_form()
  */
 function uc_paypal_ec_submit_form_submit($form, &$form_state) {
-  $order = uc_order_load($_SESSION['cart_order']);
+  $order = Order::load($_SESSION['cart_order']);
 
   list($desc, $subtotal) = _uc_paypal_product_details($order->products);
 
diff --git a/payment/uc_paypal/uc_paypal.pages.inc b/payment/uc_paypal/uc_paypal.pages.inc
index b0268de..73b665d 100644
--- a/payment/uc_paypal/uc_paypal.pages.inc
+++ b/payment/uc_paypal/uc_paypal.pages.inc
@@ -8,6 +8,7 @@
 use Drupal\Component\Utility\SafeMarkup;
 use Drupal\Component\Utility\Unicode;
 use Drupal\Core\Form\FormStateInterface;
+use Drupal\uc_order\Entity\Order;
 
 /**
  * Processes Instant Payment Notifiations from PayPal.
@@ -36,7 +37,7 @@ function uc_paypal_ipn() {
 
   \Drupal::logger('uc_paypal')->notice('Receiving IPN at URL for order @order_id. <pre>@debug</pre>', array('@order_id' => $order_id, '@debug' => variable_get('uc_paypal_wps_debug_ipn', FALSE) ? print_r($_POST, TRUE) : ''));
 
-  $order = uc_order_load($order_id);
+  $order = Order::load($order_id);
 
   if ($order == FALSE) {
     \Drupal::logger('uc_paypal')->error('IPN attempted for non-existent order @order_id.', array('@order_id' => $order_id));
@@ -173,7 +174,7 @@ function uc_paypal_ipn() {
  * Handles the review page for Express Checkout Mark Flow.
  */
 function uc_paypal_ec_review_redirect() {
-  if (!isset($_SESSION['TOKEN']) || ($order = uc_order_load($_SESSION['cart_order'])) == FALSE) {
+  if (!isset($_SESSION['TOKEN']) || !($order = Order::load($_SESSION['cart_order']))) {
     unset($_SESSION['cart_order']);
     unset($_SESSION['have_details']);
     unset($_SESSION['TOKEN'], $_SESSION['PAYERID']);
@@ -197,7 +198,7 @@ function uc_paypal_ec_review_redirect() {
  * Handles the review page for Express Checkout Shortcut Flow.
  */
 function uc_paypal_ec_review() {
-  if (!isset($_SESSION['TOKEN']) || ($order = uc_order_load($_SESSION['cart_order'])) == FALSE) {
+  if (!isset($_SESSION['TOKEN']) || !($order = Order::load($_SESSION['cart_order']))) {
     unset($_SESSION['cart_order']);
     unset($_SESSION['have_details']);
     unset($_SESSION['TOKEN'], $_SESSION['PAYERID']);
@@ -319,7 +320,7 @@ function uc_paypal_ec_review_form_validate($form, FormStateInterface $form_state
 }
 
 function uc_paypal_ec_review_form_submit($form, FormStateInterface $form_state) {
-  $order = uc_order_load($_SESSION['cart_order']);
+  $order = Order::load($_SESSION['cart_order']);
 
   if (!$form_state->isValueEmpty('shippable')) {
     $quote_option = explode('---', $form_state->getValue(['quotes', 'quote_option']));
@@ -366,7 +367,7 @@ function uc_paypal_ec_review_form_submit($form, FormStateInterface $form_state)
  * Presents the final total to the user for checkout!
  */
 function uc_paypal_ec_submit() {
-  if (!isset($_SESSION['TOKEN']) || ($order = uc_order_load($_SESSION['cart_order'])) == FALSE) {
+  if (!isset($_SESSION['TOKEN']) || !($order = Order::load($_SESSION['cart_order']))) {
     unset($_SESSION['cart_order'], $_SESSION['have_details']);
     unset($_SESSION['TOKEN'], $_SESSION['PAYERID']);
     drupal_set_message(t('An error has occurred in your PayPal payment. Please review your cart and try again.'));
diff --git a/shipping/uc_shipping/uc_shipping.module b/shipping/uc_shipping/uc_shipping.module
index 66b433b..e603906 100644
--- a/shipping/uc_shipping/uc_shipping.module
+++ b/shipping/uc_shipping/uc_shipping.module
@@ -13,6 +13,7 @@ use Drupal\Component\Utility\Xss;
 use Drupal\Core\Form\FormStateInterface;
 use Drupal\Core\Routing\RouteMatchInterface;
 use Drupal\Core\Url;
+use Drupal\uc_order\Entity\Order;
 use Drupal\uc_order\OrderInterface;
 
 /**
@@ -601,7 +602,7 @@ function uc_shipping_shipment_save($shipment) {
   }
 
   \Drupal::moduleHandler()->invokeAll('uc_shipment', array('save', $shipment));
-  $order = uc_order_load($shipment->order_id);
+  $order = Order::load($shipment->order_id);
   // rules_invoke_event('uc_shipment_save', $order, $shipment);
 }
 
diff --git a/uc_ajax_admin/uc_ajax_admin.module b/uc_ajax_admin/uc_ajax_admin.module
index afb3a85..62cbf2f 100644
--- a/uc_ajax_admin/uc_ajax_admin.module
+++ b/uc_ajax_admin/uc_ajax_admin.module
@@ -8,6 +8,8 @@
 use Drupal\Core\Form\FormStateInterface;
 use Drupal\Core\Render\Element;
 use Drupal\Core\Routing\RouteMatchInterface;
+use Drupal\uc_order\Entity\Order;
+use Drupal\uc_order\Entity\OrderProduct;
 use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
 
 /**
@@ -136,10 +138,10 @@ function _uc_ajax_admin_checkout_trigger_options($form) {
  * shippable order if not.
  */
 function _uc_ajax_admin_build_checkout_form() {
-  $order = empty($_SESSION['cart_order']) ? FALSE : uc_order_load($_SESSION['cart_order']);
+  $order = empty($_SESSION['cart_order']) ? FALSE : Order::load($_SESSION['cart_order']);
   if (!$order) {
-    $order = \Drupal\uc_order\Entity\Order::create(array());
-    $order->products = array(\Drupal\uc_order\Entity\OrderProduct::create(array(
+    $order = Order::create(array());
+    $order->products = array(OrderProduct::create(array(
       'title' => 'fake',
       'nid' => 0,
       'qty' => 1,
diff --git a/uc_googleanalytics/uc_googleanalytics.module b/uc_googleanalytics/uc_googleanalytics.module
index b4013ed..ffd61f8 100644
--- a/uc_googleanalytics/uc_googleanalytics.module
+++ b/uc_googleanalytics/uc_googleanalytics.module
@@ -11,6 +11,7 @@
  */
 
 use Drupal\Component\Serialization\Json;
+use Drupal\uc_order\Entity\Order;
 
 /**
  * Implements hook_enable().
@@ -34,7 +35,7 @@ function uc_googleanalytics_page_alter(&$page) {
   // Check to see if we are at the order completion page.
   if (uc_googleanalytics_display()) {
     // If so, then if we can load the order...
-    if (!empty($_SESSION['ucga_order_id']) && $order = uc_order_load($_SESSION['ucga_order_id'])) {
+    if (!empty($_SESSION['ucga_order_id']) && $order = Order::load($_SESSION['ucga_order_id'])) {
       // Build the GA tracking code.
       $script = uc_googleanalytics_ecommerce_js($order);
 
diff --git a/uc_order/src/Form/OrderUpdateForm.php b/uc_order/src/Form/OrderUpdateForm.php
index 7268313..1c1228d 100644
--- a/uc_order/src/Form/OrderUpdateForm.php
+++ b/uc_order/src/Form/OrderUpdateForm.php
@@ -9,6 +9,7 @@ namespace Drupal\uc_order\Form;
 
 use Drupal\Core\Form\FormBase;
 use Drupal\Core\Form\FormStateInterface;
+use Drupal\uc_order\Entity\Order;
 use Drupal\uc_order\OrderInterface;
 
 /**
@@ -107,7 +108,7 @@ class OrderUpdateForm extends FormBase {
 
     // Let Rules send email if requested.
     // if ($form_state->getValue('notify')) {
-    //   $order = uc_order_load($form_state->getValue('order_id'));
+    //   $order = Order::load($form_state->getValue('order_id'));
     //   rules_invoke_event('uc_order_status_email_update', $order);
     // }
 
diff --git a/uc_order/src/Plugin/views/field/Actions.php b/uc_order/src/Plugin/views/field/Actions.php
index 780631a..a78e498 100644
--- a/uc_order/src/Plugin/views/field/Actions.php
+++ b/uc_order/src/Plugin/views/field/Actions.php
@@ -7,6 +7,7 @@
 
 namespace Drupal\uc_order\Plugin\views\field;
 
+use Drupal\uc_order\Entity\Order;
 use Drupal\views\Plugin\views\field\FieldPluginBase;
 use Drupal\views\ResultRow;
 
@@ -23,8 +24,7 @@ class Actions extends FieldPluginBase {
    * {@inheritdoc}
    */
   public function render(ResultRow $values) {
-    $order_id = $this->getValue($values);
-    $order = uc_order_load($values->order_id);
+    $order = Order::load($this->getValue($values));
     return uc_order_actions($order, TRUE);
   }
 
diff --git a/uc_order/src/Plugin/views/field/OrderWeightTotal.php b/uc_order/src/Plugin/views/field/OrderWeightTotal.php
index 2dc2996..f37ce51 100644
--- a/uc_order/src/Plugin/views/field/OrderWeightTotal.php
+++ b/uc_order/src/Plugin/views/field/OrderWeightTotal.php
@@ -8,6 +8,7 @@
 namespace Drupal\uc_order\Plugin\views\field;
 
 use Drupal\Core\Form\FormStateInterface;
+use Drupal\uc_order\Entity\Order;
 use Drupal\uc_store\Plugin\views\field\Weight;
 use Drupal\views\ResultRow;
 
@@ -63,7 +64,7 @@ class OrderWeightTotal extends Weight {
    */
   public function render(ResultRow $values) {
     $oid = $values->{$this->aliases['order_id']};
-    $order = uc_order_load($oid);
+    $order = Order::load($oid);
     $total = 0;
 
     foreach ($order->products as $product) {
diff --git a/uc_order/src/Tests/OrderTest.php b/uc_order/src/Tests/OrderTest.php
index 4fc3632..df0d1c5 100644
--- a/uc_order/src/Tests/OrderTest.php
+++ b/uc_order/src/Tests/OrderTest.php
@@ -8,6 +8,7 @@
 namespace Drupal\uc_order\Tests;
 
 use Drupal\Component\Utility\Unicode;
+use Drupal\uc_order\Entity\Order;
 use Drupal\uc_store\Address;
 use Drupal\uc_store\Tests\UbercartTestBase;
 
@@ -40,7 +41,7 @@ class OrderTest extends UbercartTestBase {
 
     // Test deletion.
     $order->delete();
-    $deleted_order = uc_order_load($order->id(), TRUE);
+    $deleted_order = Order::load($order->id());
     $this->assertFalse($deleted_order, 'Order was successfully deleted');
   }
 
diff --git a/uc_role/src/Tests/RoleCheckoutTest.php b/uc_role/src/Tests/RoleCheckoutTest.php
index 6fdcb2c..2b0c04f 100644
--- a/uc_role/src/Tests/RoleCheckoutTest.php
+++ b/uc_role/src/Tests/RoleCheckoutTest.php
@@ -7,6 +7,7 @@
 
 namespace Drupal\uc_role\Tests;
 
+use Drupal\uc_order\Entity\Order;
 use Drupal\user\Entity\User;
 use Drupal\uc_store\Tests\UbercartTestBase;
 
@@ -52,7 +53,7 @@ class RoleCheckoutTest extends UbercartTestBase {
     $account = User::load($uid);
     // @todo Re-enable when Rules is available.
     // $this->assertTrue($account->hasRole($rid), 'New user was granted role.');
-    $order = uc_order_load($order->id());
+    $order = Order::load($order->id());
     $this->assertEqual($order->getStatusId(), 'payment_received', 'Shippable order was set to payment received.');
 
     // 4 e-mails: new account, customer invoice, admin invoice, role assignment
@@ -74,7 +75,7 @@ class RoleCheckoutTest extends UbercartTestBase {
     $account = User::load($this->customer->id());
     // @todo Re-enable when Rules is available.
     // $this->assertTrue($account->hasRole($rid), 'Existing user was granted role.');
-    $order = uc_order_load($order->id());
+    $order = Order::load($order->id());
     $this->assertEqual($order->getStatusId(), 'completed', 'Non-shippable order was set to completed.');
 
     // 3 e-mails: customer invoice, admin invoice, role assignment
