diff --git a/CHANGELOG b/CHANGELOG
index 50b27e2549270234bebf1573dd6c40fdf27b9cce..8f5a861d23eb2fd6fc534dfa9f15b538a8063391 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -11,6 +11,7 @@ v 8.5.0 (unreleased)
   - New UI for pagination
   - Don't prevent sign out when 2FA enforcement is enabled and user hasn't yet
     set it up
+  - API: Added "merge_requests/:merge_request_id/closes_issues" (Gal Schlezinger)
   - Fix diff comments loaded by AJAX to load comment with diff in discussion tab
   - Whitelist raw "abbr" elements when parsing Markdown (Benedict Etzel)
   - Fix label links for a merge request pointing to issues list
diff --git a/doc/api/merge_requests.md b/doc/api/merge_requests.md
index 85ed31320b9e57a43b8fc15f2620510a59213ae2..2df244f3935716e5fb4f5cb00255a980e22fa61d 100644
--- a/doc/api/merge_requests.md
+++ b/doc/api/merge_requests.md
@@ -412,3 +412,65 @@ Parameters:
 ## Comments on merge requets
 
 Comments are done via the [notes](notes.md) resource.
+
+## List issues that will close on merge
+
+Get all the issues that would be closed by merging the provided merge request.
+
+```
+GET /projects/:id/merge_requests/:merge_request_id/closes_issues
+```
+
+| Attribute | Type | Required | Description |
+| --------- | ---- | -------- | ----------- |
+| `id`      | integer | yes   | The ID of a project |
+| `merge_request_id` | integer | yes   | The ID of the merge request |
+
+```bash
+curl -H "PRIVATE-TOKEN: 9koXpg98eAheJpvBs5tK" https://gitlab.example.com/api/v3/projects/76/merge_requests/1/closes_issues
+```
+
+Example response:
+
+```json
+[
+   {
+      "state" : "opened",
+      "description" : "Ratione dolores corrupti mollitia soluta quia.",
+      "author" : {
+         "state" : "active",
+         "id" : 18,
+         "web_url" : "https://gitlab.example.com/u/eileen.lowe",
+         "name" : "Alexandra Bashirian",
+         "avatar_url" : null,
+         "username" : "eileen.lowe"
+      },
+      "milestone" : {
+         "project_id" : 1,
+         "description" : "Ducimus nam enim ex consequatur cumque ratione.",
+         "state" : "closed",
+         "due_date" : null,
+         "iid" : 2,
+         "created_at" : "2016-01-04T15:31:39.996Z",
+         "title" : "v4.0",
+         "id" : 17,
+         "updated_at" : "2016-01-04T15:31:39.996Z"
+      },
+      "project_id" : 1,
+      "assignee" : {
+         "state" : "active",
+         "id" : 1,
+         "name" : "Administrator",
+         "web_url" : "https://gitlab.example.com/u/root",
+         "avatar_url" : null,
+         "username" : "root"
+      },
+      "updated_at" : "2016-01-04T15:31:51.081Z",
+      "id" : 76,
+      "title" : "Consequatur vero maxime deserunt laboriosam est voluptas dolorem.",
+      "created_at" : "2016-01-04T15:31:51.081Z",
+      "iid" : 6,
+      "labels" : []
+   },
+]
+```
diff --git a/lib/api/merge_requests.rb b/lib/api/merge_requests.rb
index dd7f24f32791fe5115572fbacfde8ead3db5ca1f..004ff52c1d3172bef009a07142154989e2e30b18 100644
--- a/lib/api/merge_requests.rb
+++ b/lib/api/merge_requests.rb
@@ -300,6 +300,19 @@ module API
             render_api_error!("Failed to save note #{note.errors.messages}", 400)
           end
         end
+
+        # List issues that will close on merge
+        #
+        # Parameters:
+        #   id (required)               - The ID of a project
+        #   merge_request_id (required) - ID of MR
+        # Examples:
+        #   GET /projects/:id/merge_requests/:merge_request_id/closes_issues
+        get "#{path}/closes_issues" do
+          merge_request = user_project.merge_requests.find(params[:merge_request_id])
+          issues = ::Kaminari.paginate_array(merge_request.closes_issues)
+          present paginate(issues), with: Entities::Issue
+        end
       end
     end
   end
diff --git a/spec/factories/merge_requests.rb b/spec/factories/merge_requests.rb
index 0c6a881f868aadb299609e231417a2973703b553..777bdb95008f055382746ae2fb01eed06b2f1e17 100644
--- a/spec/factories/merge_requests.rb
+++ b/spec/factories/merge_requests.rb
@@ -73,6 +73,12 @@ FactoryGirl.define do
       merge_user author
     end
 
+    trait :with_closes_issues do
+      source_branch "markdown"
+      target_branch "master"
+      state :opened
+    end
+
     factory :closed_merge_request, traits: [:closed]
     factory :reopened_merge_request, traits: [:reopened]
     factory :merge_request_with_diffs, traits: [:with_diffs]
diff --git a/spec/requests/api/merge_requests_spec.rb b/spec/requests/api/merge_requests_spec.rb
index d7bfa17b0b1c7e428df55d071ddc330b468b240d..90faf82fc01453d73bc315554dccb016919fab9a 100644
--- a/spec/requests/api/merge_requests_spec.rb
+++ b/spec/requests/api/merge_requests_spec.rb
@@ -448,6 +448,32 @@ describe API::API, api: true  do
     end
   end
 
+  describe "GET :id/merge_requests/:merge_request_id/closes_issues" do
+    let(:merge_request_with_closes_issues) { create(:merge_request, :with_closes_issues, author: user, assignee: user, source_project: project, target_project: project, title: "Closed ##{issue.id}", created_at: base_time + 3.seconds, description: "This should close ##{issue.iid}") }
+    let(:issue) do
+      create :issue,
+        author: user,
+        assignee: user,
+        project: project,
+        milestone: nil
+    end
+
+    it "should return the issues that will be closed on merge" do
+      get api("/projects/#{project.id}/merge_requests/#{merge_request_with_closes_issues.id}/closes_issues", user)
+      expect(response.status).to eq(200)
+      expect(json_response).to be_an Array
+      expect(json_response.length).to eq(1)
+      expect(json_response.first['id']).to eq(issue.id)
+    end
+
+    it "should return an empty array when there are no issues to be closed" do
+      get api("/projects/#{project.id}/merge_requests/#{merge_request.id}/closes_issues", user)
+      expect(response.status).to eq(200)
+      expect(json_response).to be_an Array
+      expect(json_response.length).to eq(0)
+    end
+  end
+
   def mr_with_later_created_and_updated_at_time
     merge_request
     merge_request.created_at += 1.hour