diff --git a/.circleci/config.yml b/.circleci/config.yml
index 5d1ba29917f4ab96e42e18e0a1bb8b3e8bcf83cc..f9faea7b584bb69a82824bdfb75c4b71c621c36e 100644
--- a/.circleci/config.yml
+++ b/.circleci/config.yml
@@ -30,7 +30,7 @@ jobs:
 
       - restore_cache:
           keys:
-            - v2-python-{{ .Branch }}-{{ checksum "requirements.txt" }}
+            - v2-python-{{ .Branch }}-{{ checksum "requirements-dev.txt" }}
             - v2-python-{{ .Branch }}-
             - v2-python-
 
@@ -46,7 +46,7 @@ jobs:
             python3 -m venv venv
             . venv/bin/activate
             pip install coverage codecov
-            pip install -r requirements.txt
+            pip install -r requirements-dev.txt
 
       - run:
           name: install node dependencies
@@ -57,7 +57,7 @@ jobs:
       - save_cache:
           paths:
             - ./venv
-          key: v2-python-{{ .Branch }}-{{ checksum "requirements.txt" }}
+          key: v2-python-{{ .Branch }}-{{ checksum "requirements-dev.txt" }}
 
       - save_cache:
           paths:
diff --git a/.travis.yml b/.travis.yml
index 3a9983e245c3b1b21cb284eeedf40771ddd90916..ca96e84d638e8a2ea39d6e056344b655aa6d48f6 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -31,7 +31,7 @@ install:
   - pip install codecov
 
   # Install project dependencies
-  - pip install -r requirements.txt
+  - pip install -r requirements-dev.txt
 
   # Install node
   - nvm install 10
diff --git a/requirements-dev.txt b/requirements-dev.txt
new file mode 100644
index 0000000000000000000000000000000000000000..fd0aaa57b41f9cb5399cc97a4c4520274245e55a
--- /dev/null
+++ b/requirements-dev.txt
@@ -0,0 +1,9 @@
+-r requirements.txt
+
+factory_boy==2.9.2
+Faker==1.0.8  # Pinning to avoid API changes to pydecimal in 0.x - could go higher in future
+flake8==3.7.9
+responses==0.10.6
+stellar==0.4.5
+wagtail-factories==1.1.0
+Werkzeug==0.14.1
diff --git a/requirements.txt b/requirements.txt
index db22126455f49c1179d7f2062ef57ab9dc7683a5..bb8ba07c6dcbdac254c1ca736e3fb30b5303a888 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -1,14 +1,3 @@
-# Development dependencies, install manually if needed.
-# stellar==0.4.5
-# Werkzeug==0.14.1
-
-# Test dependencies
-flake8
-factory_boy==2.9.2
-Faker==1.0.8 # Pinning to avoid API changes to pydecimal in 0.x - could go higher in future
-wagtail-factories==1.1.0
-responses==0.10.6
-
 # Monitor dependencies
 scout-apm==2.5.0
 sentry-sdk==0.12.3
diff --git a/vagrant/provision.sh b/vagrant/provision.sh
index 47b296609d931d58dd1080cf2ba7aef275269179..139f6220fc47379c0f75a6c575b2f308b7a494c2 100755
--- a/vagrant/provision.sh
+++ b/vagrant/provision.sh
@@ -32,7 +32,7 @@ su - vagrant -c "$PIP install --upgrade pip"
 su - vagrant -c "$PIP install --upgrade six setuptools"
 
 # Install PIP requirements
-su - vagrant -c "$PIP install -r $PROJECT_DIR/requirements.txt"
+su - vagrant -c "$PIP install -r $PROJECT_DIR/requirements-dev.txt"
 
 
 # Set execute permissions on manage.py as they get lost if we build from a zip file