diff --git a/modules/store/commerce_store.info.yml b/modules/store/commerce_store.info.yml
index 1104c85..5d95809 100644
--- a/modules/store/commerce_store.info.yml
+++ b/modules/store/commerce_store.info.yml
@@ -11,4 +11,5 @@ dependencies:
 config_devel:
   - commerce_store.commerce_store_type.default
   - commerce_store.settings
+  - core.entity_view_display.commerce_store.default.default
   - views.view.commerce_stores
diff --git a/modules/store/commerce_store.module b/modules/store/commerce_store.module
index 3944961..f483d79 100644
--- a/modules/store/commerce_store.module
+++ b/modules/store/commerce_store.module
@@ -8,6 +8,17 @@
 use Drupal\Core\Form\FormStateInterface;
 
 /**
+ * Implements hook_theme().
+ */
+function commerce_store_theme() {
+  return [
+    'commerce_store' => [
+      'render element' => 'elements',
+    ],
+  ];
+}
+
+/**
  * Implements hook_field_widget_form_alter().
  */
 function commerce_store_field_widget_form_alter(&$element, FormStateInterface $form_state, $context) {
@@ -20,3 +31,33 @@ function commerce_store_field_widget_form_alter(&$element, FormStateInterface $f
     $element['#size'] = 5;
   }
 }
+
+/**
+ * Implements hook_theme_suggestions_commerce_store().
+ */
+function commerce_store_theme_suggestions_commerce_store(array $variables) {
+  return _commerce_entity_theme_suggestions('commerce_store', $variables);
+}
+
+/**
+ * Prepares variables for store templates.
+ *
+ * Default template: commerce-store.html.twig.
+ *
+ * @param array $variables
+ *   An associative array containing:
+ *   - elements: An associative array containing rendered fields.
+ *   - attributes: HTML attributes for the containing element.
+ */
+function template_preprocess_commerce_store(array &$variables) {
+  /** @var Drupal\commerce_store\Entity\StoreInterface $store */
+  $store = $variables['elements']['#commerce_store'];
+
+  $variables['store'] = $store;
+  $variables['url'] = $store->toUrl();
+  // Helpful $content variable for templates.
+  $variables['content'] = [];
+  foreach (\Drupal\Core\Render\Element::children($variables['elements']) as $key) {
+    $variables['content'][$key] = $variables['elements'][$key];
+  }
+}
diff --git a/modules/store/config/install/core.entity_view_display.commerce_store.default.default.yml b/modules/store/config/install/core.entity_view_display.commerce_store.default.default.yml
new file mode 100644
index 0000000..d32a396
--- /dev/null
+++ b/modules/store/config/install/core.entity_view_display.commerce_store.default.default.yml
@@ -0,0 +1,23 @@
+langcode: en
+status: true
+dependencies:
+  config:
+    - commerce_store.commerce_store_type.default
+  module:
+    - address
+id: commerce_store.default.default
+targetEntityType: commerce_store
+bundle: default
+mode: default
+content:
+  address:
+    type: address_default
+    weight: 1
+    label: above
+    settings: {  }
+    third_party_settings: {  }
+hidden:
+  billing_countries: true
+  default_currency: true
+  mail: true
+  name: true
diff --git a/modules/store/templates/commerce-store.html.twig b/modules/store/templates/commerce-store.html.twig
new file mode 100644
index 0000000..e62bcd3
--- /dev/null
+++ b/modules/store/templates/commerce-store.html.twig
@@ -0,0 +1,24 @@
+{#
+/**
+ * @file
+ *
+ * Default theme implementation for stores.
+ *
+ * Available variables:
+ * - content: Items for the content of the store.
+ *   Use 'content' to print them all, or print a subset such as
+ *   'content.name'. Use the following code to exclude the
+ *   printing of a given child element:
+ *   @code
+ *   {{ content|without('name') }}
+ *   @endcode
+ * - attributes: HTML attributes for the wrapper.
+ * - store: The store object.
+ * - url: The store URL.
+ *
+ * @ingroup themeable
+ */
+#}
+<article{{ attributes }}>
+  {{ content }}
+</article>
