diff --git a/src/Plugin/migrate/destination/ubercart/d6/EntityOrder.php b/src/Plugin/migrate/destination/ubercart/d6/EntityOrder.php
index af06f3c..a91fab7 100644
--- a/src/Plugin/migrate/destination/ubercart/d6/EntityOrder.php
+++ b/src/Plugin/migrate/destination/ubercart/d6/EntityOrder.php
@@ -20,15 +20,16 @@ class EntityOrder extends EntityContentBase {
    * {@inheritdoc}
    */
   public function import(Row $row, array $old_destination_id_values = []) {
-    $adjustments = unserialize($row->getDestinationProperty('adjustments'));
-    $adjustments = array_filter($adjustments);
-    if ($adjustments) {
-      $amount = $adjustments['amount']['number'];
-      $adjustments['type'] = $row->getSourceProperty('commerce_shipping') ? 'shipping' : 'custom';
-      $adjustments['amount'] = new Price($amount, $adjustments['amount']['currency_code']);
-      $adjustments = new Adjustment($adjustments);
+    $values = $row->getDestinationProperty('adjustments');
+    if ($values) {
+      $adjustments = [];
+      foreach ($values as $adjustment) {
+        $amount = $adjustment['amount']['number'];
+        $adjustment['amount'] = new Price($amount, $adjustment['amount']['currency_code']);
+        $adjustments[] = new Adjustment($adjustment);
+      }
+      $row->setDestinationProperty('adjustments', $adjustments);
     }
-    $row->setDestinationProperty('adjustments', $adjustments);
     return parent::import($row, $old_destination_id_values);
   }
 
diff --git a/src/Plugin/migrate/process/ubercart/d6/UbercartLineItem.php b/src/Plugin/migrate/process/ubercart/d6/UbercartLineItem.php
index 4d05493..6d7eff4 100644
--- a/src/Plugin/migrate/process/ubercart/d6/UbercartLineItem.php
+++ b/src/Plugin/migrate/process/ubercart/d6/UbercartLineItem.php
@@ -10,7 +10,8 @@ use Drupal\migrate\Row;
  * Transforms an array of data into an Commerce Adjustment.
  *
  * @MigrateProcessPlugin(
- *   id = "d6_ubercart_line_item"
+ *   id = "d6_ubercart_line_item",
+ *   handle_multiples = TRUE
  * )
  */
 class UbercartLineItem extends ProcessPluginBase {
@@ -19,12 +20,25 @@ 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) {
-      $adjustment['type'] = $row->getSourceProperty('commerce_shipping') ? 'shipping' : 'custom';
+    if (is_array($value)) {
+      $adjustments = [];
+      $i = 0;
+      foreach ($value as $adjustment) {
+        $adjust = [];
+        $adjust['delta'] = $i++;
+        $adjust['type'] = 'custom';
+        $adjust['label'] = $adjustment['title'];
+        $adjust['amount'] =
+          [
+            'number' => $adjustment['amount'],
+            'currency_code' => 'NZD',
+          ];
+        // @TODO: Adjustment sourceId and included.
+        $adjustments[] = $adjust;
+      }
+      return $adjustments;
     }
-    return serialize($adjustment);
+    return $value;
   }
 
 }
diff --git a/src/Plugin/migrate/source/ubercart/d6/Order.php b/src/Plugin/migrate/source/ubercart/d6/Order.php
index 76a9e0e..13cf7fd 100644
--- a/src/Plugin/migrate/source/ubercart/d6/Order.php
+++ b/src/Plugin/migrate/source/ubercart/d6/Order.php
@@ -52,10 +52,8 @@ class Order extends SqlBase {
    * {@inheritdoc}
    */
   public function query() {
-    $query = $this->select('uc_order_line_items', 'uol')
-      ->fields('uol');
-    $query->innerJoin('uc_orders', 'uo', 'uol.order_id = uo.order_id');
-    $query->fields('uo');
+    $query = $this->select('uc_orders', 'uo')
+      ->fields('uo');
     return $query;
   }
 
@@ -87,20 +85,32 @@ class Order extends SqlBase {
     unset($data['cc_data']);
 
     $row->setSourceProperty('commerce_shipping', $this->moduleHandler->moduleExists('commerce_shipping'));
-    $adjustments = [
-      'label' => $row->getSourceProperty('title'),
-      'type' => $row->getSourceProperty('type'),
-      'amount' => [
-        'number' => $row->getSourceProperty('amount'),
-        'currency_code' => $row->getSourceProperty('currency'),
-      ],
-      'weight' => $row->getSourceProperty('weight'),
-    ];
-    $row->setSourceProperty('adjustments', serialize($adjustments));
+    $adjustments = $this->getAdjustmentData($row);
+    $row->setSourceProperty('adjustments', $adjustments);
     return parent::prepareRow($row);
   }
 
   /**
+   * Retrieves adjustment data for an order.
+   *
+   * @param \Drupal\migrate\Row $row
+   *   The row.
+   *
+   * @return array
+   *   The field values, keyed by delta.
+   */
+  protected function getAdjustmentData(Row $row) {
+    $order_id = $row->getSourceProperty('order_id');
+    $query = $this->select('uc_order_line_items', 'uol')
+      ->fields('uol')
+      ->fields('uo', ['order_id'])
+      ->orderBy('weight', 'ASC')
+      ->condition('uol.order_id', $order_id);
+    $query->innerJoin('uc_orders', 'uo', 'uol.order_id = uo.order_id');
+    return $query->execute()->fetchAll();
+  }
+
+  /**
    * {@inheritdoc}
    */
   public function getIds() {
diff --git a/tests/fixtures/uc6.php b/tests/fixtures/uc6.php
index 4645875..59b8d1d 100644
--- a/tests/fixtures/uc6.php
+++ b/tests/fixtures/uc6.php
@@ -21389,6 +21389,15 @@ $connection->insert('uc_order_line_items')
   'weight' => '1',
   'data' => 'N;',
 ))
+->values(array(
+  'line_item_id' => '3',
+  'order_id' => '2',
+  'type' => 'generic',
+  'title' => 'Dolphin donation',
+  'amount' => '50.00000',
+  'weight' => '1',
+  'data' => 'N;',
+))
 ->execute();
 
 $connection->schema()->createTable('uc_order_log', array(
diff --git a/tests/src/Kernel/d6/Ubercart/OrderTest.php b/tests/src/Kernel/d6/Ubercart/OrderTest.php
index f21b1f6..234aa67 100644
--- a/tests/src/Kernel/d6/Ubercart/OrderTest.php
+++ b/tests/src/Kernel/d6/Ubercart/OrderTest.php
@@ -39,7 +39,6 @@ class OrderTest extends Ubercart6TestBase {
       'd6_ubercart_billing_profile',
       'd6_ubercart_order',
     ]);
-
   }
 
   /**
@@ -65,6 +64,7 @@ class OrderTest extends Ubercart6TestBase {
       'included' => FALSE,
     ]);
     $this->assertCount(1, $order->getAdjustments());
+
     $this->assertEquals($adjustments, $order->getAdjustments());
 
     $order = Order::load(2);
@@ -76,21 +76,15 @@ class OrderTest extends Ubercart6TestBase {
       'sourceId' => NULL,
       'included' => FALSE,
     ]);
-    $this->assertCount(1, $order->getAdjustments());
-    $this->assertEquals($adjustments, $order->getAdjustments());
-
-    $order = Order::load(3);
-    $adjustments = [];
     $adjustments[] = new Adjustment([
       'type' => 'custom',
-      'label' => 'Shipping',
-      'amount' => new Price('5.00', 'NZD'),
+      'label' => 'Dolphin donation',
+      'amount' => new Price('50.00', 'NZD'),
       'sourceId' => NULL,
       'included' => FALSE,
     ]);
-    $this->assertCount(1, $order->getAdjustments());
+    $this->assertCount(2, $order->getAdjustments());
     $this->assertEquals($adjustments, $order->getAdjustments());
-
   }
 
 }
