diff --git a/runtime/gdev/tests/balance_tests.rs b/runtime/gdev/tests/balance_tests.rs
index de2ac25c859473ec5cdba1842c30ae23b700e934..85c3b0ae374626dbeaae4eeded7bc03e63f5f84d 100644
--- a/runtime/gdev/tests/balance_tests.rs
+++ b/runtime/gdev/tests/balance_tests.rs
@@ -19,9 +19,12 @@
 mod common;
 
 use common::*;
+use frame_support::traits::StoredMap;
 use frame_support::{assert_noop, assert_ok};
 use gdev_runtime::*;
+use sp_core::Encode;
 use sp_keyring::AccountKeyring;
+use sp_runtime::MultiAddress;
 
 /// test currency transfer
 /// (does not take fees into account because it's only calls, not extrinsics)
@@ -115,3 +118,46 @@ fn test_transfer_funds_unavailable() {
             );
         })
 }
+
+/// test balance transfer all with linked account not member
+#[test]
+fn test_transfer_all_linked_no_member() {
+    ExtBuilder::new(1, 3, 4)
+        .with_initial_balances(vec![(AccountKeyring::Alice.to_account_id(), 5_000)])
+        .build()
+        .execute_with(|| {
+            run_to_block(1);
+
+            let genesis_hash = System::block_hash(0);
+            let alice = AccountKeyring::Alice.to_account_id();
+            let ferdie = AccountKeyring::Ferdie.to_account_id();
+            let payload = (b"link", genesis_hash, 1u32, ferdie.clone()).encode();
+            let signature = AccountKeyring::Ferdie.sign(&payload);
+
+            assert_ok!(Balances::transfer_allow_death(
+                frame_system::RawOrigin::Signed(alice.clone()).into(),
+                MultiAddress::Id(ferdie.clone()),
+                1_000
+            ));
+            // Ferdie's account can be linked to Alice identity
+            assert_ok!(Identity::link_account(
+                frame_system::RawOrigin::Signed(alice).into(),
+                ferdie.clone(),
+                signature.into()
+            ));
+            assert_eq!(
+                frame_system::Pallet::<Runtime>::get(&ferdie).linked_idty,
+                Some(1)
+            );
+            assert_ok!(Balances::transfer_all(
+                frame_system::RawOrigin::Signed(ferdie.clone()).into(),
+                AccountKeyring::Bob.to_account_id().into(),
+                false
+            ),);
+            assert_eq!(Balances::free_balance(ferdie.clone()), 0);
+            // During reaping the account is unlinked
+            assert!(frame_system::Pallet::<Runtime>::get(&ferdie)
+                .linked_idty
+                .is_none());
+        })
+}
diff --git a/runtime/gdev/tests/xt_tests.rs b/runtime/gdev/tests/xt_tests.rs
index ab48fdaf73fbaf93be4e69a57a3b9f29bdebaa14..bfa840a548da96752439d63f1b2c96b64036616a 100644
--- a/runtime/gdev/tests/xt_tests.rs
+++ b/runtime/gdev/tests/xt_tests.rs
@@ -22,6 +22,7 @@ mod common;
 use common::*;
 use frame_support::assert_ok;
 use frame_support::traits::OnIdle;
+use frame_support::traits::StoredMap;
 use gdev_runtime::*;
 use sp_core::Encode;
 use sp_core::Pair;
@@ -191,3 +192,49 @@ fn test_no_refund() {
             assert_eq!(Balances::free_balance(Treasury::account_id()), 100 + 3);
         })
 }
+
+/// test refund on_idle when linked account is reaped
+#[test]
+fn test_refund_reaped_linked_account() {
+    ExtBuilder::new(1, 3, 4)
+        .with_initial_balances(vec![
+            (AccountKeyring::Alice.to_account_id(), 10_000),
+            (AccountKeyring::Ferdie.to_account_id(), 10_000),
+        ])
+        .build()
+        .execute_with(|| {
+            let genesis_hash = System::block_hash(0);
+            let alice = AccountKeyring::Alice.to_account_id();
+            let ferdie = AccountKeyring::Ferdie.to_account_id();
+            let payload = (b"link", genesis_hash, 1u32, ferdie.clone()).encode();
+            let signature = AccountKeyring::Ferdie.sign(&payload);
+
+            // Ferdie's account can be linked to Alice identity
+            assert_ok!(Identity::link_account(
+                frame_system::RawOrigin::Signed(alice.clone()).into(),
+                ferdie.clone(),
+                signature.into()
+            ));
+            assert_eq!(
+                frame_system::Pallet::<Runtime>::get(&ferdie).linked_idty,
+                Some(1)
+            );
+
+            // transfer_all call to extrinsic
+            let call = RuntimeCall::Balances(BalancesCall::transfer_all {
+                dest: AccountKeyring::Alice.to_account_id().into(),
+                keep_alive: false,
+            });
+            let xt = get_unchecked_extrinsic(call, 4u64, 8u64, AccountKeyring::Ferdie, 0u64);
+            assert_ok!(Executive::apply_extrinsic(xt));
+
+            assert_eq!(Balances::free_balance(ferdie.clone()), 0);
+            // During reaping the account is unlinked
+            assert!(frame_system::Pallet::<Runtime>::get(&ferdie)
+                .linked_idty
+                .is_none());
+
+            // since the account is reaped, it is not linked anymore and no refund is added to queue
+            assert!(pallet_quota::RefundQueue::<Runtime>::get().is_empty());
+        })
+}