diff --git a/config/schema/inline_entity_form.schema.yml b/config/schema/inline_entity_form.schema.yml
index baa42c2..9f126ef 100644
--- a/config/schema/inline_entity_form.schema.yml
+++ b/config/schema/inline_entity_form.schema.yml
@@ -63,3 +63,9 @@ field.widget.settings.inline_entity_form_complex:
     collapsed:
       type: boolean
       label: "Collapsed by default"
+    allow_delete:
+      type: boolean
+      label: "Allow delete"
+    allow_edit:
+      type: boolean
+      label: "Allow edit"
diff --git a/src/Plugin/Field/FieldWidget/InlineEntityFormComplex.php b/src/Plugin/Field/FieldWidget/InlineEntityFormComplex.php
index 0859058..9b82b52 100644
--- a/src/Plugin/Field/FieldWidget/InlineEntityFormComplex.php
+++ b/src/Plugin/Field/FieldWidget/InlineEntityFormComplex.php
@@ -89,6 +89,8 @@ class InlineEntityFormComplex extends InlineEntityFormBase implements ContainerF
       'allow_new' => TRUE,
       'allow_existing' => FALSE,
       'match_operator' => 'CONTAINS',
+      'allow_delete' => TRUE,
+      'allow_edit' => TRUE,
     ];
 
     return $defaults;
@@ -124,6 +126,16 @@ class InlineEntityFormComplex extends InlineEntityFormBase implements ContainerF
         ],
       ],
     ];
+    $element['allow_delete'] = [
+      '#type' => 'checkbox',
+      '#title' => $this->t('Allow users to delete existing @label.', ['@label' => $labels['plural']]),
+      '#default_value' => $this->getSetting('allow_delete'),
+    ];
+    $element['allow_edit'] = [
+      '#type' => 'checkbox',
+      '#title' => $this->t('Allow users to edit existing @label.', ['@label' => $labels['plural']]),
+      '#default_value' => $this->getSetting('allow_edit'),
+    ];
 
     return $element;
   }
@@ -153,6 +165,20 @@ class InlineEntityFormComplex extends InlineEntityFormBase implements ContainerF
       $summary[] = $this->t('Existing @label can not be referenced.', ['@label' => $labels['plural']]);
     }
 
+    if ($this->getSetting('allow_delete')) {
+      $summary[] = $this->t('Existing @label can be deleted.', ['@label' => $labels['plural']]);
+    }
+    else {
+      $summary[] = $this->t('Existing @label can not be deleted.', ['@label' => $labels['plural']]);
+    }
+
+    if ($this->getSetting('allow_edit')) {
+      $summary[] = $this->t('Existing @label can be edited inline.', ['@label' => $labels['plural']]);
+    }
+    else {
+      $summary[] = $this->t('Existing @label can not be edited inline.', ['@label' => $labels['plural']]);
+    }
+
     return $summary;
   }
 
@@ -320,7 +346,7 @@ class InlineEntityFormComplex extends InlineEntityFormBase implements ContainerF
 
         // Make sure entity_access is not checked for unsaved entities.
         $entity_id = $entity->id();
-        if (empty($entity_id) || $entity->access('update')) {
+        if (empty($entity_id) || ( $this->getSetting('allow_edit') && $entity->access('update') ) ) {
           $row['actions']['ief_entity_edit'] = [
             '#type' => 'submit',
             '#value' => $this->t('Edit'),
@@ -694,7 +720,7 @@ class InlineEntityFormComplex extends InlineEntityFormBase implements ContainerF
       '#markup' => $message,
     ];
 
-    if (!empty($entity_id) && $this->getSetting('allow_existing') && $entity->access('delete')) {
+    if (!empty($entity_id) && $this->getSetting('allow_existing') && $this->getSetting('allow_delete') && $entity->access('delete')) {
       $form['delete'] = [
         '#type' => 'checkbox',
         '#title' => $this->t('Delete this @type_singular from the system.', ['@type_singular' => $labels['singular']]),
