diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 768d0c306138049eff0a00c1ff93c603b6d8d310..38e61e4326b581c42aea6bfef303020e6c8f3b68 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -21,7 +21,7 @@ before_script:
 - pip install -e .[dev]
 
 linting_python3:
-  image: python:3.8
+  image: python:3.9
   tags:
   - passoft
   stage: test
@@ -29,8 +29,8 @@ linting_python3:
   - flake8 --ignore=E722,E712 data2passcal
   - flake8 --ignore=E722,E712 tests
 
-python3.8:
-  image: python:3.8
+python3.9:
+  image: python:3.9
   tags:
   - passoft
   stage: test
diff --git a/conda.recipe/meta.yaml b/conda.recipe/meta.yaml
index b3995cd4407968d414433592280027ede2a8213a..5a23f34a5f5d66af24004cc6a4c0e67528134295 100644
--- a/conda.recipe/meta.yaml
+++ b/conda.recipe/meta.yaml
@@ -11,10 +11,10 @@ build:
 
 requirements:
   build:
-    - python >=3.8
+    - python >=3.9
     - pip
   run:
-    - python >=3.8
+    - python >=3.9
 
 test:
   requires:
diff --git a/setup.py b/setup.py
index 0618e0abab46673cd11d5b9c99e8b636d2d4bab5..19d2a6d9db45ec6204a826dc8882f1cec6ceeb38 100644
--- a/setup.py
+++ b/setup.py
@@ -20,7 +20,7 @@ setup(
         'Intended Audience :: Developers',
         'License :: OSI Approved ::  GNU General Public License v3 (GPLv3)',
         'Natural Language :: English',
-        'Programming Language :: Python :: 3.8',
+        'Programming Language :: Python :: 3.9',
     ],
     description="Prepare SEED data for shipment to PASSCAL.",
     entry_points={
diff --git a/tox.ini b/tox.ini
index 3a4724fe1c9b14f57342213fd175ce11949bb846..c7aee2170959cae564a9b94736032828e7caf7ef 100644
--- a/tox.ini
+++ b/tox.ini
@@ -1,5 +1,5 @@
 [tox]
-envlist = py38, flake8
+envlist = py39, flake8
 
 [testenv:flake8]
 basepython = python
@@ -7,7 +7,7 @@ deps = flake8
 commands = flake8 --ignore=E722,E712 data2passcal
            flake8 --ignore=E722,E712 tests
 
-[testenv:py27]
+[testenv:py39]
 changedir = tests
 passenv = SEND4REAL
 deps =