diff --git a/lib/manager/pipenv/extract.js b/lib/manager/pipenv/extract.js
index 9d903b2d21ca39a8750d000f3064e2ff370f9acd..a4ce2a6121cc3c95c291995ea757f38a74e8dee0 100644
--- a/lib/manager/pipenv/extract.js
+++ b/lib/manager/pipenv/extract.js
@@ -96,6 +96,16 @@ function extractFromSection(pipfile, section) {
         dep.datasource = 'pypi';
       }
       if (pipenvNestedVersion) dep.pipenvNestedVersion = pipenvNestedVersion;
+      if (requirements.index) {
+        if (is.array(pipfile.source)) {
+          const source = pipfile.source.find(
+            item => item.name === requirements.index
+          );
+          if (source) {
+            dep.registryUrls = [source.url];
+          }
+        }
+      }
       return dep;
     })
     .filter(Boolean);
diff --git a/test/manager/pipenv/__snapshots__/extract.spec.js.snap b/test/manager/pipenv/__snapshots__/extract.spec.js.snap
index 2d12887d66cd13738046046366f92fb8f05f7e87..6895affd9b5793572b9b9785555e59d5df0b5881 100644
--- a/test/manager/pipenv/__snapshots__/extract.spec.js.snap
+++ b/test/manager/pipenv/__snapshots__/extract.spec.js.snap
@@ -82,6 +82,9 @@ Object {
       "depName": "pywinusb",
       "depType": "packages",
       "pipenvNestedVersion": true,
+      "registryUrls": Array [
+        "https://pypi.python.org/simple",
+      ],
       "skipReason": "any-version",
     },
     Object {
@@ -143,3 +146,24 @@ Object {
   ],
 }
 `;
+
+exports[`lib/manager/pipenv/extract extractPackageFile() supports custom index 1`] = `
+Object {
+  "deps": Array [
+    Object {
+      "currentValue": "==0.21.0",
+      "datasource": "pypi",
+      "depName": "requests",
+      "depType": "packages",
+      "pipenvNestedVersion": true,
+      "registryUrls": Array [
+        "https://testpypi.python.org/pypi",
+      ],
+    },
+  ],
+  "registryUrls": Array [
+    "https://pypi.python.org/simple",
+    "https://testpypi.python.org/pypi",
+  ],
+}
+`;
diff --git a/test/manager/pipenv/_fixtures/Pipfile5 b/test/manager/pipenv/_fixtures/Pipfile5
new file mode 100644
index 0000000000000000000000000000000000000000..2c373c425ebac7b6aa62a872328065d6c927f55c
--- /dev/null
+++ b/test/manager/pipenv/_fixtures/Pipfile5
@@ -0,0 +1,12 @@
+[[source]]
+url = "https://pypi.python.org/simple"
+verify_ssl = true
+name = "pypi"
+
+[[source]]
+url = "https://testpypi.python.org/pypi"
+verify_ssl = true
+name = "testpypi"
+
+[packages]
+requests = {version = "==0.21.0", index = "testpypi"}
diff --git a/test/manager/pipenv/extract.spec.js b/test/manager/pipenv/extract.spec.js
index 32dee60d2044a808d7c6f4d92dfab01c2dd3636c..39416bdcda705c19c90726a8f94082e4f544983c 100644
--- a/test/manager/pipenv/extract.spec.js
+++ b/test/manager/pipenv/extract.spec.js
@@ -17,6 +17,10 @@ const pipfile4 = fs.readFileSync(
   'test/manager/pipenv/_fixtures/Pipfile4',
   'utf8'
 );
+const pipfile5 = fs.readFileSync(
+  'test/manager/pipenv/_fixtures/Pipfile5',
+  'utf8'
+);
 
 describe('lib/manager/pipenv/extract', () => {
   describe('extractPackageFile()', () => {
@@ -86,5 +90,13 @@ describe('lib/manager/pipenv/extract', () => {
       const res = extractPackageFile(pipfile4, config);
       expect(res).toMatchSnapshot();
     });
+    it('supports custom index', () => {
+      const res = extractPackageFile(pipfile5, config);
+      expect(res).toMatchSnapshot();
+      expect(res.registryUrls).toBeDefined();
+      expect(res.registryUrls).toHaveLength(2);
+      expect(res.deps[0].registryUrls).toBeDefined();
+      expect(res.deps[0].registryUrls).toHaveLength(1);
+    });
   });
 });