diff --git a/cumulus/pallets/collator-selection/src/lib.rs b/cumulus/pallets/collator-selection/src/lib.rs
index fb4c4a445df296b3650901326db9edccbbbd61cf..62c00737f91a4aac25f2e1972a0c5aade5e0eed2 100644
--- a/cumulus/pallets/collator-selection/src/lib.rs
+++ b/cumulus/pallets/collator-selection/src/lib.rs
@@ -495,7 +495,11 @@ pub mod pallet {
 				})
 				.unwrap_or_default();
 			Self::deposit_event(Event::NewCandidacyBond { bond_amount: bond });
-			Ok(Some(T::WeightInfo::set_candidacy_bond(initial_len as u32, kicked as u32)).into())
+			Ok(Some(T::WeightInfo::set_candidacy_bond(
+				bond_increased.then(|| initial_len as u32).unwrap_or_default(),
+				kicked as u32,
+			))
+			.into())
 		}
 
 		/// Register this account as a collator candidate. The account must (a) already have
diff --git a/prdoc/pr_3643.prdoc b/prdoc/pr_3643.prdoc
new file mode 100644
index 0000000000000000000000000000000000000000..6e85af8d99a07f397ce03d4b7c936f7560f36c8f
--- /dev/null
+++ b/prdoc/pr_3643.prdoc
@@ -0,0 +1,12 @@
+# Schema: Polkadot SDK PRDoc Schema (prdoc) v1.0.0
+# See doc at https://raw.githubusercontent.com/paritytech/polkadot-sdk/master/prdoc/schema_user.json
+
+title: Fix weight refund for `pallet_collator_selection::set_candidacy_bond`
+
+doc:
+  - audience: Runtime Dev
+    description: |
+      This PR implements the weight refund of `pallet_collator_selection::set_candidacy_bond` to
+      account for no iterations over the candidate list when the candidacy bond is decreased.
+crates:
+  - name: pallet-collator-selection