diff --git a/migration_templates/d6_ubercart_order.yml b/migration_templates/d6_ubercart_order.yml
index bbcce3c..74d62b4 100644
--- a/migration_templates/d6_ubercart_order.yml
+++ b/migration_templates/d6_ubercart_order.yml
@@ -40,6 +40,9 @@ process:
   created: created
   changed: modified
   placed: modified
+  adjustments:
+    plugin: d6_ubercart_line_item
+    source: adjustment
 destination:
   plugin: 'entity:commerce_order'
 migration_dependencies:
diff --git a/src/Plugin/migrate/process/ubercart/d6/UbercartLineItem.php b/src/Plugin/migrate/process/ubercart/d6/UbercartLineItem.php
new file mode 100644
index 0000000..3d0cedb
--- /dev/null
+++ b/src/Plugin/migrate/process/ubercart/d6/UbercartLineItem.php
@@ -0,0 +1,32 @@
+<?php
+
+namespace Drupal\commerce_migrate\Plugin\migrate\process\ubercart\d6;
+
+use Drupal\commerce_order\Adjustment;
+use Drupal\commerce_price\Price;
+use Drupal\migrate\MigrateExecutableInterface;
+use Drupal\migrate\ProcessPluginBase;
+use Drupal\migrate\Row;
+
+/**
+ * @MigrateProcessPlugin(
+ *   id = "d6_ubercart_line_item"
+ * )
+ */
+class UbercartLineItem extends ProcessPluginBase {
+
+  /**
+   * {@inheritdoc}
+   */
+  public function transform($value, MigrateExecutableInterface $migrate_executable, Row $row, $destination_property) {
+    $adjustment = unserialize($value);
+    $adjustment = array_filter($adjustment);
+    if ($adjustment) {
+      $amount = intval($adjustment['amount']['number'] * 100);
+      $adjustment['type'] = $row->getSourceProperty('commerce_shipping') ? 'shipping' : 'custom';
+      $adjustment['amount'] = new Price($amount, $adjustment['amount']['currency_code']);
+      $adjustment = new Adjustment($adjustment);
+    }
+    return $adjustment;
+  }
+}
diff --git a/src/Plugin/migrate/source/ubercart/d6/Order.php b/src/Plugin/migrate/source/ubercart/d6/Order.php
index 6e39f9c..5ad8e8e 100644
--- a/src/Plugin/migrate/source/ubercart/d6/Order.php
+++ b/src/Plugin/migrate/source/ubercart/d6/Order.php
@@ -2,8 +2,12 @@
 
 namespace Drupal\commerce_migrate\Plugin\migrate\source\ubercart\d6;
 
+use Drupal\Core\Extension\ModuleHandlerInterface;
 use Drupal\migrate\Plugin\migrate\source\SqlBase;
 use Drupal\migrate\Row;
+use Drupal\Core\State\StateInterface;
+use Drupal\migrate\Plugin\MigrationInterface;
+use Symfony\Component\DependencyInjection\ContainerInterface;
 
 /**
  * Provides migration source for orders.
@@ -15,11 +19,44 @@ use Drupal\migrate\Row;
 class Order extends SqlBase {
 
   /**
+   * The module handler.
+   *
+   * @var \Drupal\Core\Extension\ModuleHandlerInterface
+   */
+  protected $moduleHandler;
+
+  /**
+   * {@inheritdoc}
+   */
+  public function __construct(array $configuration, $plugin_id, $plugin_definition, MigrationInterface $migration, StateInterface $state, ModuleHandlerInterface $module_handler) {
+    parent::__construct($configuration, $plugin_id, $plugin_definition, $migration, $state);
+    $this->state = $state;
+    $this->moduleHandler = $module_handler;
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public static function create(ContainerInterface $container, array $configuration, $plugin_id, $plugin_definition, MigrationInterface $migration = NULL) {
+    return new static(
+      $configuration,
+      $plugin_id,
+      $plugin_definition,
+      $migration,
+      $container->get('state'),
+      $container->get('module_handler')
+    );
+  }
+
+  /**
    * {@inheritdoc}
    */
   public function query() {
-    return $this->select('uc_orders', 'uo')
-      ->fields('uo', array_keys($this->fields()));
+    $query = $this->select('uc_order_line_items', 'uol')
+      ->fields('uol');
+    $query->innerJoin('uc_orders', 'uo', 'uol.order_id = uo.order_id');
+    $query->fields('uo');
+    return $query;
   }
 
   /**
@@ -44,16 +81,22 @@ class Order extends SqlBase {
    * {@inheritdoc}
    */
   public function prepareRow(Row $row) {
-
-    // The Migrate API automatically serializes arrays for storage in longblob
-    // fields so we unserialize them here.
     $data = unserialize($row->getSourceProperty('data'));
     // Ubercart 6 stores credit card information in a hash. Since this probably
     // isn't necessary so I removed it here.
     unset($data['cc_data']);
 
-    $row->setSourceProperty('data', serialize($data));
-
+    $row->setSourceProperty('commerce_shipping', $this->moduleHandler->moduleExists('commerce_shipping'));
+    $adjustment = [
+      'label' => $row->getSourceProperty('title'),
+      'type' => $row->getSourceProperty('type'),
+      'amount' => [
+        'number' => $row->getSourceProperty('amount'),
+        'currency_code' => $row->getSourceProperty('currency'),
+      ],
+      'weight' => $row->getSourceProperty('weight'),
+    ];
+    $row->setSourceProperty('adjustment', serialize($adjustment));
     return parent::prepareRow($row);
   }
 
diff --git a/tests/src/Kernel/d6/Ubercart/OrderTest.php b/tests/src/Kernel/d6/Ubercart/OrderTest.php
index 38cbe89..d94ecc1 100644
--- a/tests/src/Kernel/d6/Ubercart/OrderTest.php
+++ b/tests/src/Kernel/d6/Ubercart/OrderTest.php
@@ -3,6 +3,8 @@
 namespace Drupal\Tests\commerce_migrate\Kernel\d6\Ubercart;
 
 use Drupal\commerce_order\Entity\Order;
+use Drupal\commerce_order\Adjustment;
+use Drupal\commerce_price\Price;
 
 /**
  * Tests billing profile migration.
@@ -60,6 +62,16 @@ class OrderTest extends Ubercart6TestBase {
     // @todo This regressed with beta1 fixes?
     // $data = $order->getData();
     // $this->assertFalse(isset($data['cc_data']));
+
+    // Included adjustments do not affect the order total.
+    $adjustments[] = new Adjustment([
+      'type' => 'custom',
+      'label' => 'Shipping',
+      'amount' => new Price('299', 'NZD'),
+      'sourceId' => null,
+      'included' => FALSE,
+    ]);
+    $this->assertEquals($adjustments, $order->getAdjustments());
   }
 
 }
