diff --git a/Cargo.lock b/Cargo.lock
index b450177..a6e2d08 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -3648,7 +3648,7 @@ dependencies = [
 
 [[package]]
 name = "ghost-networks"
-version = "0.1.3"
+version = "0.1.4"
 dependencies = [
  "frame-benchmarking",
  "frame-support",
@@ -3868,7 +3868,7 @@ dependencies = [
 
 [[package]]
 name = "ghost-traits"
-version = "0.3.19"
+version = "0.3.20"
 dependencies = [
  "frame-support",
  "sp-runtime 31.0.1",
diff --git a/pallets/networks/Cargo.toml b/pallets/networks/Cargo.toml
index f90fb04..177ceb9 100644
--- a/pallets/networks/Cargo.toml
+++ b/pallets/networks/Cargo.toml
@@ -1,6 +1,6 @@
 [package]
 name = "ghost-networks"
-version = "0.1.3"
+version = "0.1.4"
 license.workspace = true
 authors.workspace = true
 edition.workspace = true
@@ -50,4 +50,6 @@ runtime-benchmarks = [
 try-runtime = [
     "frame-support/try-runtime",
     "frame-system/try-runtime",
+    "pallet-staking/try-runtime",
+    "pallet-balances/try-runtime",
 ]
diff --git a/pallets/networks/src/lib.rs b/pallets/networks/src/lib.rs
index d073c1d..cdc0c77 100644
--- a/pallets/networks/src/lib.rs
+++ b/pallets/networks/src/lib.rs
@@ -8,13 +8,13 @@ use frame_support::{
 };
 use frame_system::pallet_prelude::*;
 use scale_info::TypeInfo;
+
 use sp_runtime::{
     traits::{CheckedSub, CheckedAdd, AtLeast32BitUnsigned, Member},
     curve::PiecewiseLinear,
     DispatchResult,
 };
-use sp_std::prelude::*;
-use sp_std::convert::TryInto;
+use sp_std::{prelude::*, convert::TryInto};
 
 pub use ghost_traits::networks::{
     NetworkDataBasicHandler, NetworkDataInspectHandler, 
@@ -93,6 +93,8 @@ where
             false => total_issuance.saturating_sub(Balance::from(bridged_in - bridged_out)),
         };
 
+        NullifyNeeded::<T>::set(true);
+
         match piecewise_linear
             .calculate_for_fraction_times_denominator(total_staked, adjusted_issuance)
             .checked_mul(&accumulated_balance)
@@ -165,6 +167,10 @@ pub mod module {
         NetworkRemoved { chain_id: T::NetworkId },
     }
 
+    #[pallet::storage]
+    #[pallet::getter(fn nullify_needed)]
+    pub type NullifyNeeded<T: Config> = StorageValue<_, bool, ValueQuery>;
+
     #[pallet::storage]
     #[pallet::getter(fn bridged_imbalance)]
     pub type BridgedImbalance<T: Config> =
@@ -221,7 +227,18 @@ pub mod module {
     pub struct Pallet<T>(PhantomData<T>);
 
     #[pallet::hooks]
-    impl<T: Config> Hooks<BlockNumberFor<T>> for Pallet<T> {}
+    impl<T: Config> Hooks<BlockNumberFor<T>> for Pallet<T> {
+        fn on_initialize(_: BlockNumberFor<T>) -> Weight {
+            T::DbWeight::get().reads_writes(1, 1)
+        }
+
+        fn on_finalize(_: BlockNumberFor<T>) {
+            if Self::nullify_needed() {
+                Self::nullify_commission();
+                NullifyNeeded::<T>::put(false);
+            }
+        }
+    }
 
     #[pallet::call]
     impl<T: Config> Pallet<T> {
@@ -596,6 +613,10 @@ impl<T: Config> NetworkDataInspectHandler<NetworkData> for Pallet<T> {
     fn iter() -> PrefixIterator<(Self::NetworkId, NetworkData)> {
         Networks::<T>::iter()
     }
+
+    fn is_nullification_period() -> bool {
+        NullifyNeeded::<T>::get()
+    }
 }
 
 impl<T: Config> NetworkDataMutateHandler<NetworkData, BalanceOf<T>> for Pallet<T> {
diff --git a/pallets/networks/src/tests.rs b/pallets/networks/src/tests.rs
index 8076440..07d1b1c 100644
--- a/pallets/networks/src/tests.rs
+++ b/pallets/networks/src/tests.rs
@@ -798,7 +798,6 @@ fn bridged_inlation_reward_works() {
             let total_staked_not_ideal: u128 = 68;
             let total_issuance: u128 = 100;
 
-
             assert_eq!(BridgedInflationCurve::<RewardCurve, Test>::era_payout(
                     total_staked_ideal * 1_000,
                     total_issuance * 1_000,
@@ -913,3 +912,26 @@ fn bridged_inlation_reward_works() {
                     1, total_issuance * 1_000_000_000_000_000_000_000_000 + amount, 0), (0, 0));
         });
 }
+
+#[test]
+fn bridged_inflation_era_payout_triggers_need_of_nullification() {
+    ExtBuilder::build()
+        .execute_with(|| {
+            let chain_id: u32 = 1;
+            let amount: u128 = 1337 * 1_000_000_000;
+            let commission: u128 = amount / 100; // 1% commission
+            let total_staked_ideal: u128 = 69;
+            let total_issuance: u128 = 100;
+
+            assert_ok!(GhostNetworks::accumulate_commission(&commission));
+            assert_ok!(GhostNetworks::increase_gatekeeper_amount(&chain_id, &amount));
+            assert_eq!(NullifyNeeded::<Test>::get(), false);
+            assert_eq!(BridgedInflationCurve::<RewardCurve, Test>::era_payout(
+                    total_staked_ideal * 1_000,
+                    total_issuance * 1_000 + amount,
+                    0), (commission, 0));
+            assert_eq!(NullifyNeeded::<Test>::get(), true);
+            GhostNetworks::on_finalize(69);
+            assert_eq!(NullifyNeeded::<Test>::get(), false);
+        });
+}