diff --git a/inline_entity_form.module b/inline_entity_form.module
index f094f8a..efaaa90 100644
--- a/inline_entity_form.module
+++ b/inline_entity_form.module
@@ -329,6 +329,27 @@ function inline_entity_form_settings($field, $instance) {
         $settings['bundles'] = array_values($bundles);
       }
     }
+
+    // Make sure that if using a view for the entity selection only
+    // the bundles which are returned by the view are available to create.
+    if (!empty($field['settings']['handler_settings']['view'])) {
+
+      // Execute the view to find out what filtering might have been
+      // applied and as such which bundles can be used to create.
+      $view_name = $field['settings']['handler_settings']['view']['view_name'];
+      $view = views_get_view($view_name);
+      $view->set_display($field['settings']['handler_settings']['view']['display_name']);
+      $view->execute();
+
+      switch ($view->base_table) {
+        case 'node':
+          if (!empty($view->filter['type']->value)) {
+            $view->filter['type']->get_value_options();
+            $settings['bundles'] = array_intersect_key($view->filter['type']->value_options, $view->filter['type']->value);
+          }
+          break;
+      }
+    }
   }
   elseif ($field['type'] == 'commerce_line_item_reference') {
     $settings['entity_type'] = 'commerce_line_item';
