diff --git a/migration_templates/d6_ubercart_store.yml b/migration_templates/d6_ubercart_store.yml
new file mode 100644
index 0000000..b844ec0
--- /dev/null
+++ b/migration_templates/d6_ubercart_store.yml
@@ -0,0 +1,44 @@
+# Ubercart Store information.
+id: d6_ubercart_store
+label: Migrate store from Ubercart
+migration_group: ubercart
+migration_tags:
+  - Drupal 6
+  - Drupal 6 Ubercart
+source:
+  plugin: ubercart_store
+  variables:
+    - uc_store_name
+    - uc_store_owner
+    - uc_currency_code
+    - uc_store_street1
+    - uc_store_street2
+    - uc_store_zone
+    - uc_store_city
+    - uc_store_postal_code
+    - uc_store_country
+    - uc_store_phone
+    - uc_store_fax
+    - uc_store_email
+    - uc_store_email_include_name
+  constants:
+    type: 'online'
+  provider: ubercart
+process:
+  # Bundle
+  type: 'constants/type'
+  name: uc_store_name
+  default_currency: uc_currency_code
+  mail: uc_store_email
+  # Country code is required. If is it null none of the address fields are saved.
+  'address/country_code': country_iso_code_2
+  'address/address_line1': uc_store_street1
+  'address/address_line2': uc_store_street2
+  'address/locality': uc_store_city
+  'address/postal_code': uc_store_postal_code
+destination:
+  plugin: entity:commerce_store
+migration_dependencies:
+  required:
+    - d6_user
+    - ubercart_currency
diff --git a/migration_templates/d7_ubercart_store.yml b/migration_templates/d7_ubercart_store.yml
new file mode 100644
index 0000000..801123e
--- /dev/null
+++ b/migration_templates/d7_ubercart_store.yml
@@ -0,0 +1,44 @@
+# Ubercart Store information.
+id: d7_ubercart_store
+label: Migrate store from Ubercart
+migration_group: ubercart
+migration_tags:
+  - Drupal 7
+  - Drupal 7 Ubercart
+source:
+  plugin: ubercart_store
+  variables:
+    - uc_store_name
+    - uc_store_owner
+    - uc_currency_code
+    - uc_store_street1
+    - uc_store_street2
+    - uc_store_zone
+    - uc_store_city
+    - uc_store_postal_code
+    - uc_store_country
+    - uc_store_phone
+    - uc_store_fax
+    - uc_store_email
+    - uc_store_email_include_name
+  constants:
+    type: 'online'
+  provider: ubercart
+process:
+  # Bundle
+  type: 'constants/type'
+  name: uc_store_name
+  default_currency: uc_currency_code
+  mail: uc_store_email
+  # Country code is required. If is it null none of the address fields are saved.
+  'address/country_code': country_iso_code_2
+  'address/address_line1': uc_store_street1
+  'address/address_line2': uc_store_street2
+  'address/locality': uc_store_city
+  'address/postal_code': uc_store_postal_code
+destination:
+  plugin: entity:commerce_store
+migration_dependencies:
+  required:
+    - d7_user
+    - ubercart_currency
diff --git a/src/Plugin/migrate/source/ubercart/Store.php b/src/Plugin/migrate/source/ubercart/Store.php
new file mode 100644
index 0000000..16df097
--- /dev/null
+++ b/src/Plugin/migrate/source/ubercart/Store.php
@@ -0,0 +1,31 @@
+<?php
+
+namespace Drupal\commerce_migrate\Plugin\migrate\source\ubercart;
+
+use Drupal\migrate\Row;
+use Drupal\migrate_drupal\Plugin\migrate\source\Variable;
+
+/**
+ * Gets the ubercart store data.
+ *
+ * @MigrateSource(
+ *   id = "ubercart_store"
+ * )
+ */
+class Store extends Variable {
+
+  /**
+   * {@inheritdoc}
+   */
+  public function prepareRow(Row $row) {
+    $country = $row->getSourceProperty('uc_store_country');
+    // Get the country iso code 2 for this country.
+    $query = $this->select('uc_countries', 'ucc')
+      ->fields('ucc', ['country_iso_code_2'])
+      ->condition('country_id', $country);
+    $country_iso_code_2 = $query->execute()->fetchField();
+    $row->setSourceProperty('country_iso_code_2', $country_iso_code_2);
+    return parent::prepareRow($row);
+  }
+
+}
diff --git a/tests/src/Kernel/d6/Ubercart/StoreTest.php b/tests/src/Kernel/d6/Ubercart/StoreTest.php
new file mode 100644
index 0000000..ddaa346
--- /dev/null
+++ b/tests/src/Kernel/d6/Ubercart/StoreTest.php
@@ -0,0 +1,66 @@
+<?php
+
+namespace Drupal\Tests\commerce_migrate\Kernel\d6\Ubercart;
+
+use Drupal\address\Plugin\Field\FieldType\AddressItem;
+use Drupal\commerce_store\Entity\Store;
+
+/**
+ * Tests billing profile migration.
+ *
+ * @group commerce_migrate
+ */
+class StoreTest extends Ubercart6TestBase {
+
+  /**
+   * Modules to enable.
+   *
+   * @var array
+   */
+  public static $modules = ['commerce_store'];
+
+  /**
+   * {@inheritdoc}
+   */
+  protected function setUp() {
+    parent::setUp();
+    $this->installEntitySchema('commerce_store');
+    $this->executeMigrations([
+      'd6_filter_format',
+      'd6_user_role',
+      'd6_user',
+      'd6_ubercart_store'
+    ]);
+  }
+
+  /**
+   * Test store migration from Drupal 6 to 8.
+   */
+  public function testStore() {
+    /** @var \Drupal\commerce_store\Entity\storeInterface $store */
+    $store = Store::load(1);
+    $this->assertNotNull($store);
+    $this->assertInstanceOf(Store::class, $store);
+    $this->assertSame('Awesome Stuff', $store->getName());
+    $this->assertSame('awesome_stuff@example.com', $store->getEmail());
+    $this->assertSame('NZD', $store->getDefaultCurrencyCode());
+    $this->assertSame('online', $store->bundle());
+
+    $address = $store->getAddress();
+    $this->assertInstanceOf(AddressItem::class, $address);
+    $this->assertSame('US', $address->getCountryCode());
+    $this->assertNull($address->getAdministrativeArea());
+    $this->assertSame('Betelgeuse', $address->getLocality());
+    $this->assertNull($address->getDependentLocality());
+    $this->assertSame('4242', $address->getPostalCode());
+    $this->assertNull($address->getSortingCode());
+    $this->assertSame('123 First Street', $address->getAddressLine1());
+    $this->assertSame('456 Second Street', $address->getAddressLine2());
+    // These fields are disabled on the store address.
+    $this->assertNull($address->getGivenName());
+    $this->assertNull($address->getAdditionalName());
+    $this->assertNull($address->getFamilyName());
+    $this->assertNull($address->getOrganization());
+  }
+
+}
diff --git a/tests/src/Kernel/d7/Ubercart/StoreTest.php b/tests/src/Kernel/d7/Ubercart/StoreTest.php
new file mode 100644
index 0000000..674e5e4
--- /dev/null
+++ b/tests/src/Kernel/d7/Ubercart/StoreTest.php
@@ -0,0 +1,66 @@
+<?php
+
+namespace Drupal\Tests\commerce_migrate\Kernel\d7\Ubercart;
+
+use Drupal\address\Plugin\Field\FieldType\AddressItem;
+use Drupal\commerce_store\Entity\Store;
+
+/**
+ * Tests billing profile migration.
+ *
+ * @group commerce_migrate
+ */
+class StoreTest extends Ubercart7TestBase {
+
+  /**
+   * Modules to enable.
+   *
+   * @var array
+   */
+  public static $modules = ['commerce_store'];
+
+  /**
+   * {@inheritdoc}
+   */
+  protected function setUp() {
+    parent::setUp();
+    $this->installEntitySchema('commerce_store');
+    $this->executeMigrations([
+      'd7_filter_format',
+      'd7_user_role',
+      'd7_user',
+      'd7_ubercart_store'
+    ]);
+  }
+
+  /**
+   * Test store migration from Drupal 7 to 8.
+   */
+  public function testStore() {
+    /** @var \Drupal\commerce_store\Entity\storeInterface $store */
+    $store = Store::load(1);
+    $this->assertNotNull($store);
+    $this->assertInstanceOf(Store::class, $store);
+    $this->assertSame("Quark's", $store->getName());
+    $this->assertSame('quark@example.com', $store->getEmail());
+    $this->assertSame('USD', $store->getDefaultCurrencyCode());
+    $this->assertSame('online', $store->bundle());
+
+    $address = $store->getAddress();
+    $this->assertInstanceOf(AddressItem::class, $address);
+    $this->assertSame('CA', $address->getCountryCode());
+    $this->assertNull($address->getAdministrativeArea());
+    $this->assertSame('Deep Space 9', $address->getLocality());
+    $this->assertNull($address->getDependentLocality());
+    $this->assertSame('9999', $address->getPostalCode());
+    $this->assertNull($address->getSortingCode());
+    $this->assertSame('47 The Promenade', $address->getAddressLine1());
+    $this->assertSame('Lower Level', $address->getAddressLine2());
+    // These fields are disabled on the store address.
+    $this->assertNull($address->getGivenName());
+    $this->assertNull($address->getAdditionalName());
+    $this->assertNull($address->getFamilyName());
+    $this->assertNull($address->getOrganization());
+  }
+
+}
