diff --git a/src/Plugin/EntityReferenceSelection/ParagraphSelection.php b/src/Plugin/EntityReferenceSelection/ParagraphSelection.php
index c72ccee..387a0fb 100644
--- a/src/Plugin/EntityReferenceSelection/ParagraphSelection.php
+++ b/src/Plugin/EntityReferenceSelection/ParagraphSelection.php
@@ -31,6 +31,7 @@ class ParagraphSelection extends DefaultSelection {
     // Merge-in default values.
     $selection_handler_settings += array(
       'target_bundles' => array(),
+      'negotate' => FALSE,
       'target_bundles_drag_drop' => array(),
     );
 
@@ -50,6 +51,15 @@ class ParagraphSelection extends DefaultSelection {
       $weight++;
     }
 
+    // Do negotate the selection.
+    $form['negotate'] = array(
+      '#type' => 'select',
+      '#options' => [0 => 'Include', 1 => 'Exclude'],
+      '#title' => $this->t('Exclude paragraphs type'),
+      '#return_value' => 1,
+      '#default_value' => isset($selection_handler_settings['negotate']) ? $selection_handler_settings['negotate'] : FALSE,
+    );
+
     // Kept for compatibility with other entity reference widgets.
     $form['target_bundles'] = array(
       '#type' => 'checkboxes',
@@ -154,4 +164,77 @@ class ParagraphSelection extends DefaultSelection {
     $parents = array_merge(array_slice($element['#parents'], 0, -1), array('target_bundles'));
     NestedArray::setValue($values, $parents, $bundle_options);
   }
+
+  /**
+   * {@inheritdoc}
+   */
+  protected function getAllowedTypes() {
+    if ($this->configuration['handler_settings']['negotate'] != '1') {
+      return $this->configuration['handler_settings']['target_bundles'];
+    }
+    $bundles = \Drupal::service('entity_type.bundle.info')->getBundleInfo($this->configuration['target_type']);
+    $bundles = array_diff_key($bundles, $this->configuration['handler_settings']['target_bundles']);
+    return array_keys($bundles);
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function validateReferenceableNewEntities(array $entities) {
+    $bundles = $this->getAllowedTypes();
+    return array_filter($entities, function ($entity) {
+      if (isset($bundles)) {
+        return in_array($entity->bundle(), $bundles);
+      }
+      return TRUE;
+    });
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  protected function buildEntityQuery($match = NULL, $match_operator = 'CONTAINS') {
+    $target_type = $this->configuration['target_type'];
+    $handler_settings = $this->configuration['handler_settings'];
+    $entity_type = $this->entityManager->getDefinition($target_type);
+
+    $query = $this->entityManager->getStorage($target_type)->getQuery();
+
+    // If 'target_bundles' is NULL, all bundles are referenceable, no further
+    // conditions are needed.
+    $target_bundles = $this->getAllowedTypes();
+    if (isset($target_bundles) && is_array($target_bundles)) {
+      // If 'target_bundles' is an empty array, no bundle is referenceable,
+      // force the query to never return anything and bail out early.
+      if ($target_bundles === []) {
+        $query->condition($entity_type->getKey('id'), NULL, '=');
+        return $query;
+      }
+      else {
+        $query->condition($entity_type->getKey('bundle'), $target_bundles, 'IN');
+      }
+    }
+
+    if (isset($match) && $label_key = $entity_type->getKey('label')) {
+      $query->condition($label_key, $match, $match_operator);
+    }
+
+    // Add entity-access tag.
+    $query->addTag($target_type . '_access');
+
+    // Add the Selection handler for system_query_entity_reference_alter().
+    $query->addTag('entity_reference');
+    $query->addMetaData('entity_reference_selection_handler', $this);
+
+    // Add the sort option.
+    if (!empty($handler_settings['sort'])) {
+      $sort_settings = $handler_settings['sort'];
+      if ($sort_settings['field'] != '_none') {
+        $query->sort($sort_settings['field'], $sort_settings['direction']);
+      }
+    }
+
+    return $query;
+  }
+
 }
diff --git a/src/Plugin/Field/FieldWidget/InlineParagraphsWidget.php b/src/Plugin/Field/FieldWidget/InlineParagraphsWidget.php
index 1402b5f..2376bbe 100644
--- a/src/Plugin/Field/FieldWidget/InlineParagraphsWidget.php
+++ b/src/Plugin/Field/FieldWidget/InlineParagraphsWidget.php
@@ -707,6 +707,10 @@ class InlineParagraphsWidget extends WidgetBase {
 
     if ($this->getSelectionHandlerSetting('target_bundles') !== NULL) {
       $bundles = array_intersect_key($bundles, $this->getSelectionHandlerSetting('target_bundles'));
+      if ($this->getSelectionHandlerSetting('negotate')) {
+        $bundles = \Drupal::service('entity_type.bundle.info')->getBundleInfo($target_type);
+        $bundles = array_diff_key($bundles, $this->getSelectionHandlerSetting('target_bundles'));
+      }
     }
 
     // Support for the paragraphs reference type.
