diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -4,6 +4,10 @@
 The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/)
 and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html)
 
+## 0.62.1
+### Fixed
+- Fix idempotent transaction elimination bug.
+
 ## 0.62.0
 ### Added
 - Configurable Blockchain price URLs.
diff --git a/haskoin-store.cabal b/haskoin-store.cabal
--- a/haskoin-store.cabal
+++ b/haskoin-store.cabal
@@ -5,7 +5,7 @@
 -- see: https://github.com/sol/hpack
 
 name:           haskoin-store
-version:        0.62.0
+version:        0.62.1
 synopsis:       Storage and index for Bitcoin and Bitcoin Cash
 description:    Please see the README on GitHub at <https://github.com/haskoin/haskoin-store#readme>
 category:       Bitcoin, Finance, Network
@@ -60,7 +60,7 @@
     , hashable >=1.3.0.0
     , haskoin-core >=0.21.1
     , haskoin-node >=0.17.0
-    , haskoin-store-data ==0.62.0
+    , haskoin-store-data ==0.62.1
     , hedis >=0.12.13
     , http-types >=0.12.3
     , lens >=4.18.1
@@ -116,7 +116,7 @@
     , haskoin-core >=0.21.1
     , haskoin-node >=0.17.0
     , haskoin-store
-    , haskoin-store-data ==0.62.0
+    , haskoin-store-data ==0.62.1
     , hedis >=0.12.13
     , http-types >=0.12.3
     , lens >=4.18.1
@@ -177,7 +177,7 @@
     , haskoin-core >=0.21.1
     , haskoin-node >=0.17.0
     , haskoin-store
-    , haskoin-store-data ==0.62.0
+    , haskoin-store-data ==0.62.1
     , hedis >=0.12.13
     , hspec >=2.7.1
     , http-types >=0.12.3
diff --git a/src/Haskoin/Store/Logic.hs b/src/Haskoin/Store/Logic.hs
--- a/src/Haskoin/Store/Logic.hs
+++ b/src/Haskoin/Store/Logic.hs
@@ -430,9 +430,9 @@
     get_tx th =
         getActiveTxData th >>= \case
             Nothing -> do
-                $(logErrorS) "BlockStore" $
+                $(logDebugS) "BlockStore" $
                     "Transaction not found: " <> txHashToHex th
-                throwError TxNotFound
+                return Nothing
             Just td
               | memonly && confirmed (txDataBlock td) -> do
                 $(logErrorS) "BlockStore" $
@@ -441,15 +441,15 @@
                 throwError TxConfirmed
               | rbfcheck ->
                 isRBF (txDataBlock td) (txData td) >>= \case
-                    True -> return $ txData td
+                    True -> return $ Just $ txData td
                     False -> do
                         $(logErrorS) "BlockStore" $
                             "Double-spending transaction: "
                             <> txHashToHex th
                         throwError DoubleSpend
-              | otherwise -> return $ txData td
+              | otherwise -> return $ Just $ txData td
     go txs pdg = do
-        txs1 <- HashSet.fromList <$> mapM get_tx (HashSet.toList pdg)
+        txs1 <- HashSet.fromList . catMaybes <$> mapM get_tx (HashSet.toList pdg)
         pdg1 <- HashSet.fromList . concatMap (map spenderHash . I.elems) <$>
                 mapM getSpenders (HashSet.toList pdg)
         let txs' = txs1 <> txs
