diff --git a/CHANGELOG.rst b/CHANGELOG.rst
index b991f5138fbc405ee3e5ea131b55ddf95e003127..605b1ed442dae9c387a6d301784f804dd6bfbb7b 100644
--- a/CHANGELOG.rst
+++ b/CHANGELOG.rst
@@ -6,8 +6,8 @@ All notable changes to this project will be documented in this file.
 The format is based on `Keep a Changelog`_,
 and this project adheres to `Semantic Versioning`_.
 
-Unreleased
-----------
+`4.0`_ - 2025-03-29
+-------------------
 
 Notable, breaking changes
 ~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -1436,3 +1436,4 @@ Fixed
 .. _3.2.0: https://edugit.org/AlekSIS/official/AlekSIS-Core/-/tags/3.2.0
 .. _3.2.1: https://edugit.org/AlekSIS/official/AlekSIS-Core/-/tags/3.2.1
 .. _3.2.2: https://edugit.org/AlekSIS/official/AlekSIS-Core/-/tags/3.2.2
+.. _4.0: https://edugit.org/AlekSIS/official/AlekSIS-Core/-/tags/4.0
diff --git a/docs/conf.py b/docs/conf.py
index e773e2f8b24eb3cfe3a039650cf5bd66cea38525..d74c642d78fccb140865cd82fa1a75e7a0e6f05b 100644
--- a/docs/conf.py
+++ b/docs/conf.py
@@ -25,13 +25,13 @@ django.setup()
 # -- Project information -----------------------------------------------------
 
 project = "AlekSIS-Core"
-copyright = "2019-2023 The AlekSIS team"
+copyright = "2019-2025 The AlekSIS team"
 author = "The AlekSIS Team"
 
 # The short X.Y version
 version = "4.0"
 # The full version, including alpha/beta/rc tags
-release = "4.0.0.dev4"
+release = "4.0.0"
 
 
 # -- General configuration ---------------------------------------------------
diff --git a/pyproject.toml b/pyproject.toml
index 3b7bcb3a1dbbb7332d75557fc88e51c90fcea95f..1ccae609f1db4472e11f9c05d5ddcaba7b3bc7b3 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -1,6 +1,6 @@
 [tool.poetry]
 name = "AlekSIS-Core"
-version = "4.0.0.dev16"
+version = "4.0.0"
 packages = [
     { include = "aleksis" }
 ]