diff --git a/CHANGES.md b/CHANGES.md
index 2e7f1992992ac91732546a6956c331728a0b8232..23aa629eabbe9df0ba95eee49d8eb3b347947534 100644
--- a/CHANGES.md
+++ b/CHANGES.md
@@ -1,3 +1,12 @@
+# Synapse 1.96.0 (2023-11-16)
+
+### Bugfixes
+
+- Fix "'int' object is not iterable" error in `set_device_id_for_pushers` background update introduced in Synapse 1.95.0. ([\#16594](https://github.com/matrix-org/synapse/issues/16594))
+
+
+
+
 # Synapse 1.96.0rc1 (2023-10-31)
 
 ### Features
diff --git a/changelog.d/16594.bugfix b/changelog.d/16594.bugfix
deleted file mode 100644
index 701fa0dcdc176f823a3ee6f2864d62b8e90f1679..0000000000000000000000000000000000000000
--- a/changelog.d/16594.bugfix
+++ /dev/null
@@ -1 +0,0 @@
-Fix "'int' object is not iterable" error in `set_device_id_for_pushers` background update introduced in Synapse 1.95.0.
diff --git a/debian/changelog b/debian/changelog
index cbfcb8f44d051bdb42730ba2db1b6cb71c99c870..ab7faa056f3257a914b83d615dd6038995195799 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,9 @@
+matrix-synapse-py3 (1.96.0) stable; urgency=medium
+
+  * New synapse release 1.96.0.
+
+ -- Synapse Packaging team <packages@matrix.org>  Thu, 16 Nov 2023 17:54:26 +0000
+
 matrix-synapse-py3 (1.96.0~rc1) stable; urgency=medium
 
   * New Synapse release 1.96.0rc1.
diff --git a/pyproject.toml b/pyproject.toml
index 23e00043955fa3c8feab5ee9a5780c8305e491e8..daf5f5baa2db4f0f9b5c8a172a4e38355a990d96 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -96,7 +96,7 @@ module-name = "synapse.synapse_rust"
 
 [tool.poetry]
 name = "matrix-synapse"
-version = "1.96.0rc1"
+version = "1.96.0"
 description = "Homeserver for the Matrix decentralised comms protocol"
 authors = ["Matrix.org Team and Contributors <packages@matrix.org>"]
 license = "Apache-2.0"