diff --git a/src/InlineEntityForm/EntityInlineEntityFormHandler.php b/src/InlineEntityForm/EntityInlineEntityFormHandler.php
index 409c28c..4446e07 100644
--- a/src/InlineEntityForm/EntityInlineEntityFormHandler.php
+++ b/src/InlineEntityForm/EntityInlineEntityFormHandler.php
@@ -140,7 +140,7 @@ class EntityInlineEntityFormHandler implements InlineEntityFormHandlerInterface
    * {@inheritdoc}
    */
   public function entityForm($entity_form, FormStateInterface $form_state) {
-    $operation = 'default';
+    $operation = $entity_form['#form_display_mode'];
     $controller = $this->entityManager->getFormObject($entity_form['#entity']->getEntityTypeId(), $operation);
     $controller->setEntity($entity_form['#entity']);
     $child_form_state = $this->buildChildFormState($controller, $form_state, $entity_form['#entity'], $operation);
@@ -182,7 +182,7 @@ class EntityInlineEntityFormHandler implements InlineEntityFormHandlerInterface
     if (!empty($triggering_element['#ief_submit_all'])) {
       /** @var \Drupal\Core\Entity\EntityInterface $entity */
       $entity = $entity_form['#entity'];
-      $operation = 'default';
+      $operation = $entity_form['#form_display_mode'];
 
       $controller = \Drupal::entityManager()
         ->getFormObject($entity->getEntityTypeId(), $operation);
@@ -214,7 +214,7 @@ class EntityInlineEntityFormHandler implements InlineEntityFormHandlerInterface
   public static function entityFormSubmit(&$entity_form, FormStateInterface $form_state) {
     /** @var \Drupal\Core\Entity\EntityInterface $entity */
     $entity = $entity_form['#entity'];
-    $operation = 'default';
+    $operation = $entity_form['#form_display_mode'];
 
     $controller = \Drupal::entityManager()->getFormObject($entity->getEntityTypeId(), $operation);
     $controller->setEntity($entity);
diff --git a/src/Plugin/Field/FieldWidget/InlineEntityFormBase.php b/src/Plugin/Field/FieldWidget/InlineEntityFormBase.php
index 701f74d..885ea71 100644
--- a/src/Plugin/Field/FieldWidget/InlineEntityFormBase.php
+++ b/src/Plugin/Field/FieldWidget/InlineEntityFormBase.php
@@ -71,6 +71,9 @@ abstract class InlineEntityFormBase extends WidgetBase implements ContainerFacto
       'CONTAINS' => t('Contains'),
     ];
 
+    $this->target_type = $this->fieldDefinition->getFieldStorageDefinition()->getSetting('target_type');
+    $this->displayModeOptions = $this->entityManager->getFormModeOptions($this->target_type);
+
     $this->initializeIefController();
   }
 
@@ -140,6 +143,7 @@ abstract class InlineEntityFormBase extends WidgetBase implements ContainerFacto
     return [
       "allow_existing" => FALSE,
       "match_operator" => "CONTAINS",
+      "form_display_mode" => 'default',
       "delete_references" => FALSE,
       "override_labels" => FALSE,
       "label_singular" => "",
@@ -159,6 +163,16 @@ abstract class InlineEntityFormBase extends WidgetBase implements ContainerFacto
       '#title' => t('Allow users to add existing @label.', array('@label' => $labels['plural'])),
       '#default_value' => $this->settings['allow_existing'],
     );
+
+    $element['form_display_mode'] = array(
+      '#type' => 'select',
+      '#title' => t('Display mode to be used by form'),
+      '#default_value' => $this->settings['form_display_mode'],
+      '#options' => $this->displayModeOptions,
+      '#description' => t('The default display mode for the form may contain more options than are needed for an Inline Entity Form.'),
+    );
+
+
     $element['match_operator'] = array(
       '#type' => 'select',
       '#title' => t('Autocomplete matching'),
diff --git a/src/Plugin/Field/FieldWidget/InlineEntityFormMultiple.php b/src/Plugin/Field/FieldWidget/InlineEntityFormMultiple.php
index 98aad8e..66d204e 100644
--- a/src/Plugin/Field/FieldWidget/InlineEntityFormMultiple.php
+++ b/src/Plugin/Field/FieldWidget/InlineEntityFormMultiple.php
@@ -395,6 +395,9 @@ class InlineEntityFormMultiple extends InlineEntityFormBase implements Container
             // access to those in static callbacks (#process, ...) so let's add
             // them here.
             '#ief_labels' => $this->labels(),
+            // @todo, find out why an error is thrown if this value set to
+            // a display mode that was added through the UI (not 'default')
+            '#form_display_mode' => $this->settings['form_display_mode'],
             // Identifies the IEF widget to which the form belongs.
             '#ief_id' => $this->getIefId(),
             // Used by Field API and controller methods to find the relevant
