diff --git a/rust-libs/modules/gva/dbs-reader/src/pagination.rs b/rust-libs/modules/gva/dbs-reader/src/pagination.rs
index b398d2e78667ff0d46e70c9e0ffe09abe7cb6d52..49bdfe10b4916ec1958595fd87329b7882925790 100644
--- a/rust-libs/modules/gva/dbs-reader/src/pagination.rs
+++ b/rust-libs/modules/gva/dbs-reader/src/pagination.rs
@@ -131,8 +131,6 @@ pub(crate) fn has_previous_page<
             } else {
                 page_cursors.next_back()
             } {
-                println!("TMP page_start_cursor={:?}", page_start_cursor);
-                println!("TMP first_cursor={:?}", first_cursor);
                 page_start_cursor.as_ref() != &first_cursor
             } else {
                 page_info.pos.unwrap_or_default() > first_cursor
diff --git a/rust-libs/modules/gva/dbs-reader/src/txs_history.rs b/rust-libs/modules/gva/dbs-reader/src/txs_history.rs
index 57943ead7967b2e1792d9cfb13ea0dd6719fa320..8c2a780880bc8d75deabfe35e4e98119d8ba00af 100644
--- a/rust-libs/modules/gva/dbs-reader/src/txs_history.rs
+++ b/rust-libs/modules/gva/dbs-reader/src/txs_history.rs
@@ -148,7 +148,7 @@ impl DbsReader {
                 .txs_by_recipient()
                 .iter_ref_slice_rev(start_k..=end_k, |_k, hashs| {
                     let mut sent = SmallVec::<[GvaTxDbV1; 8]>::new();
-                    for hash in hashs {
+                    for hash in hashs.iter().rev() {
                         if let Some(tx_db) = self.0.txs().get(HashKeyV2::from_ref(hash))? {
                             sent.push(tx_db);
                         }
@@ -239,10 +239,6 @@ impl DbsReader {
             None
         };
 
-        println!("first_hashs_opt={:?}", first_hashs_opt);
-        println!("start_k={}", start_k);
-        println!("end_k={}", end_k);
-
         if page_info.order {
             let txs_iter = self
                 .0
@@ -499,6 +495,120 @@ mod tests {
         }
     }
 
+    #[test]
+    fn test_get_txs_history_bc_received() -> KvResult<()> {
+        let gva_db = duniter_gva_db::GvaV1Db::<Mem>::open(MemConf::default())?;
+        let db_reader = create_dbs_reader(unsafe { std::mem::transmute(&gva_db.get_ro_handler()) });
+
+        let s1 = WalletScriptV10::single_sig(PublicKey::default());
+        let s1_hash = Hash::compute_str(&s1.to_string());
+
+        gva_db.txs_write().upsert(
+            HashKeyV2(Hash::default()),
+            gen_tx(Hash::default(), BlockNumber(1)),
+        )?;
+        gva_db.txs_write().upsert(
+            HashKeyV2(Hash([1; 32])),
+            gen_tx(Hash([1; 32]), BlockNumber(1)),
+        )?;
+        gva_db.txs_write().upsert(
+            HashKeyV2(Hash([2; 32])),
+            gen_tx(Hash([2; 32]), BlockNumber(1)),
+        )?;
+        gva_db.txs_write().upsert(
+            HashKeyV2(Hash([3; 32])),
+            gen_tx(Hash([3; 32]), BlockNumber(1)),
+        )?;
+        gva_db.txs_by_recipient_write().upsert(
+            WalletHashWithBnV1Db::new(s1_hash, BlockNumber(1)),
+            btreeset![Hash::default(), Hash([1; 32]), Hash([2; 32]), Hash([3; 32])],
+        )?;
+        gva_db.txs_write().upsert(
+            HashKeyV2(Hash([4; 32])),
+            gen_tx(Hash([4; 32]), BlockNumber(2)),
+        )?;
+        gva_db.txs_write().upsert(
+            HashKeyV2(Hash([5; 32])),
+            gen_tx(Hash([5; 32]), BlockNumber(2)),
+        )?;
+        gva_db.txs_by_recipient_write().upsert(
+            WalletHashWithBnV1Db::new(s1_hash, BlockNumber(2)),
+            btreeset![Hash([4; 32]), Hash([5; 32])],
+        )?;
+
+        /*let received = db_reader.get_txs_history_bc_received(
+            PageInfo {
+                order: true,
+                limit_opt: None,
+                pos: Some(TxBcCursor {
+                    tx_hash: Hash([1; 32]),
+                    block_number: BlockNumber(1),
+                }),
+            },
+            s1_hash,
+        )?;
+        assert_eq!(
+            received.data
+                .into_iter()
+                .map(|tx_db| tx_db.tx.get_hash())
+                .collect::<Vec<_>>(),
+            vec![Hash([2; 32]), Hash([3; 32]), Hash([4; 32]), Hash([5; 32])],
+        );
+        assert!(!received.has_next_page);
+        assert!(!received.has_previous_page);
+
+        let received = db_reader.get_txs_history_bc_received(
+            PageInfo {
+                order: false,
+                limit_opt: None,
+                pos: Some(TxBcCursor {
+                    tx_hash: Hash([1; 32]),
+                    block_number: BlockNumber(1),
+                }),
+            },
+            s1_hash,
+        )?;
+        assert_eq!(
+            received.data
+                .into_iter()
+                .map(|tx_db| tx_db.tx.get_hash())
+                .collect::<Vec<_>>(),
+            vec![Hash([0; 32])],
+        );
+        assert!(!received.has_next_page);
+        assert!(!received.has_previous_page);*/
+
+        let received = db_reader.get_txs_history_bc_received(
+            PageInfo {
+                order: false,
+                limit_opt: None,
+                pos: Some(TxBcCursor {
+                    tx_hash: Hash([5; 32]),
+                    block_number: BlockNumber(2),
+                }),
+            },
+            s1_hash,
+        )?;
+        assert_eq!(
+            received
+                .data
+                .into_iter()
+                .map(|tx_db| tx_db.tx.get_hash())
+                .collect::<Vec<_>>(),
+            vec![
+                Hash([4; 32]),
+                Hash([3; 32]),
+                Hash([2; 32]),
+                Hash([1; 32]),
+                Hash([0; 32]),
+            ],
+        );
+        assert!(!received.has_next_page);
+        assert!(!received.has_previous_page);
+
+        Ok(())
+    }
+
     #[test]
     fn test_get_txs_history_bc_sent() -> KvResult<()> {
         let gva_db = duniter_gva_db::GvaV1Db::<Mem>::open(MemConf::default())?;