diff --git a/.cargo/config b/.cargo/config
index e07889471fc44618fa13e359d1f07e76008b280e..7c3f14a169503d8bc7103c920c42e32318794b1d 100644
--- a/.cargo/config
+++ b/.cargo/config
@@ -1,6 +1,6 @@
 [alias]
 cucumber = "test -p duniter-end2end-tests --test cucumber_tests --"
 sanity-gdev = "test -p duniter-live-tests --test sanity_gdev -- --nocapture"
-tu = "test --workspace --exclude duniter-end2end-tests"
+tu = "test --workspace --exclude duniter-end2end-tests --exclude duniter-live-tests"
 xtask = "run --package xtask --"
 
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index eff2a284513d0488cc87080161d07760cf7b7618..e628a155137bee1eafa2e04668f6b797b15dab57 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -158,7 +158,7 @@ tests_debug:
     DUNITER_BINARY_PATH: "../build/duniter"
     DUNITER_END2END_TESTS_SPAWN_NODE_TIMEOUT: "20"
   script:
-    - cargo test --workspace --exclude duniter-end2end-tests
+    - cargo test --workspace --exclude duniter-end2end-tests --exclude duniter-live-tests
     - cargo cucumber -i balance*
     - cargo cucumber -i monetary*
     - cargo cucumber -i transfer*
@@ -182,7 +182,7 @@ tests_release:
     DUNITER_BINARY_PATH: "../build/duniter"
     DUNITER_END2END_TESTS_SPAWN_NODE_TIMEOUT: "20"
   script:
-    - cargo test --workspace --exclude duniter-end2end-tests
+    - cargo test --workspace --exclude duniter-end2end-tests --exclude duniter-live-tests
     - cargo cucumber -i balance*
     - cargo cucumber -i monetary*
     - cargo cucumber -i transfer*
diff --git a/pallets/duniter-account/src/lib.rs b/pallets/duniter-account/src/lib.rs
index 0615fbd99f8ddc6b5bb031a5616f8d84b6c77b41..17d890eaf0384fb181dfb01bcdbd93fbb524c16f 100644
--- a/pallets/duniter-account/src/lib.rs
+++ b/pallets/duniter-account/src/lib.rs
@@ -284,13 +284,11 @@ where
         let result = f(&mut some_data)?;
         let is_providing = some_data.is_some();
         if !was_providing && is_providing {
-            if !frame_system::Pallet::<T>::account_exists(account_id) {
-                // If the account does not exist, we should program its creation
-                PendingNewAccounts::<T>::insert(account_id, ());
-            } else {
-                // If the account already exists, we should register increment providers directly
+            if frame_system::Pallet::<T>::account_exists(account_id) {
+                // If the account is self-sufficient, we should increment providers directly
                 frame_system::Pallet::<T>::inc_providers(account_id);
             }
+            PendingNewAccounts::<T>::insert(account_id, ());
         } else if was_providing && !is_providing {
             match frame_system::Pallet::<T>::dec_providers(account_id)? {
                 frame_system::DecRefStatus::Reaped => return Ok(result),
diff --git a/runtime/gdev/tests/integration_tests.rs b/runtime/gdev/tests/integration_tests.rs
index 9647ceb01149e985592f82f6c46e6e0d71a7a792..d8933647023f8c47a45b3de0ed9e103c9f382e1f 100644
--- a/runtime/gdev/tests/integration_tests.rs
+++ b/runtime/gdev/tests/integration_tests.rs
@@ -350,3 +350,44 @@ fn test_create_new_idty() {
             );
         });
 }
+
+#[test]
+fn test_create_new_idty_without_founds() {
+    ExtBuilder::new(1, 3, 4)
+        .with_initial_balances(vec![(AccountKeyring::Alice.to_account_id(), 1_000)])
+        .build()
+        .execute_with(|| {
+            run_to_block(2);
+
+            // Should be able to create an identity without founds
+            assert_ok!(Identity::create_identity(
+                frame_system::RawOrigin::Signed(AccountKeyring::Alice.to_account_id()).into(),
+                AccountKeyring::Eve.to_account_id(),
+            ));
+
+            // At next block, nothing should be preleved
+            run_to_block(3);
+            let events = System::events();
+            assert_eq!(events.len(), 0);
+
+            // Deposit some founds on the identity account,
+            // this should trigger the random id assignemt
+            assert_ok!(Balances::transfer(
+                frame_system::RawOrigin::Signed(AccountKeyring::Alice.to_account_id()).into(),
+                MultiAddress::Id(AccountKeyring::Eve.to_account_id()),
+                200
+            ));
+
+            // At next block, nothing should be preleved,
+            // and a random id request should be registered
+            run_to_block(4);
+            assert_eq!(
+                Balances::free_balance(AccountKeyring::Eve.to_account_id()),
+                200
+            );
+            assert_eq!(
+                Account::pending_random_id_assignments(0),
+                Some(AccountKeyring::Eve.to_account_id())
+            );
+        });
+}