diff --git a/pallets/distance/src/lib.rs b/pallets/distance/src/lib.rs
index b965d0fc8cdf2d98aa60e91b5f5ea4366bc8c6ea..ba5e800861a04cb357951b2ae2b41d06c2e86eb1 100644
--- a/pallets/distance/src/lib.rs
+++ b/pallets/distance/src/lib.rs
@@ -82,9 +82,9 @@ pub use types::*;
 pub use weights::WeightInfo;
 
 use frame_support::traits::{
-    fungible::{self, hold, Mutate, MutateHold},
+    fungible::{self, hold, Credit, Mutate, MutateHold},
     tokens::Precision,
-    StorageVersion,
+    OnUnbalanced, StorageVersion,
 };
 use sp_distance::{InherentError, INHERENT_IDENTIFIER};
 use sp_inherents::{InherentData, InherentIdentifier};
@@ -155,6 +155,9 @@ pub mod pallet {
         #[pallet::constant]
         type MinAccessibleReferees: Get<Perbill>;
 
+        /// Handler for unbalanced reduction when invalid distance causes a slash.
+        type OnUnbalanced: OnUnbalanced<Credit<Self::AccountId, Self::Currency>>;
+
         /// The overarching event type.
         type RuntimeEvent: From<Event<Self>> + IsType<<Self as frame_system::Config>::RuntimeEvent>;
 
@@ -668,11 +671,12 @@ pub mod pallet {
                             );
                         } else {
                             // Negative result, slash and deposit event
-                            let _ = <T::Currency as hold::Balanced<_>>::slash(
+                            let (imbalance, _) = <T::Currency as hold::Balanced<_>>::slash(
                                 &HoldReason::DistanceHold.into(),
                                 &requester,
                                 <T as Config>::EvaluationPrice::get(),
                             );
+                            T::OnUnbalanced::on_unbalanced(imbalance);
                             Self::deposit_event(Event::EvaluatedInvalid {
                                 idty_index: idty,
                                 distance,
diff --git a/pallets/distance/src/mock.rs b/pallets/distance/src/mock.rs
index f837bac853882dd99ba6a608eb94e2e38b315245..fa963500b2201913cccdbeac6bd039db0b7e07e2 100644
--- a/pallets/distance/src/mock.rs
+++ b/pallets/distance/src/mock.rs
@@ -261,6 +261,7 @@ impl pallet_distance::Config for Test {
     type EvaluationPrice = frame_support::traits::ConstU64<1000>;
     type MaxRefereeDistance = frame_support::traits::ConstU32<5>;
     type MinAccessibleReferees = MinAccessibleReferees;
+    type OnUnbalanced = ();
     type OnValidDistanceStatus = ();
     type RuntimeEvent = RuntimeEvent;
     type RuntimeHoldReason = RuntimeHoldReason;
diff --git a/runtime/common/src/pallets_config.rs b/runtime/common/src/pallets_config.rs
index e82397cd9339ef2b167a931be6ab49ae388ebd5c..3b5ae90ba85c60d1ab677e5e3c1014cfceb3e414 100644
--- a/runtime/common/src/pallets_config.rs
+++ b/runtime/common/src/pallets_config.rs
@@ -519,6 +519,7 @@ macro_rules! pallets_config {
             type EvaluationPrice = frame_support::traits::ConstU64<1000>;
             type MaxRefereeDistance = MaxRefereeDistance;
             type MinAccessibleReferees = MinAccessibleReferees;
+            type OnUnbalanced = HandleFees;
             type OnValidDistanceStatus = Wot;
             type RuntimeEvent = RuntimeEvent;
             type RuntimeHoldReason = RuntimeHoldReason;