diff --git a/app/Main.hs b/app/Main.hs
--- a/app/Main.hs
+++ b/app/Main.hs
@@ -75,7 +75,6 @@
     , configMaxDiff         :: !Int
     , configCacheRefresh    :: !Int
     , configCacheRetryDelay :: !Int
-    , configNumTxId         :: !Bool
     , configStatsd          :: !Bool
     , configStatsdHost      :: !String
     , configStatsdPort      :: !Int
@@ -107,7 +106,6 @@
                  , configMaxDiff         = defMaxDiff
                  , configCacheRefresh    = defCacheRefresh
                  , configCacheRetryDelay = defCacheRetryDelay
-                 , configNumTxId         = defNumTxId
                  , configStatsd          = defStatsd
                  , configStatsdHost      = defStatsdHost
                  , configStatsdPort      = defStatsdPort
@@ -190,11 +188,6 @@
     defEnv "DEBUG" False parseBool
 {-# NOINLINE defDebug #-}
 
-defNumTxId :: Bool
-defNumTxId = unsafePerformIO $
-    defEnv "NUMTXID" False parseBool
-{-# NOINLINE defNumTxId #-}
-
 defWebLimits :: WebLimits
 defWebLimits = unsafePerformIO $ do
     max_limit  <- defEnv "MAX_LIMIT" (maxLimitCount def) readMaybe
@@ -497,10 +490,6 @@
         <> help "Maximum difference between headers and blocks"
         <> showDefault
         <> value (configMaxDiff def)
-    configNumTxId <-
-        flag (configNumTxId def) True $
-        long "numtxid"
-        <> help "Numeric tx_index field"
     configStatsd <-
         flag (configStatsd def) True $
         long "statsd"
@@ -598,7 +587,6 @@
            , configNoMempool = nomem
            , configCacheRefresh = crefresh
            , configCacheRetryDelay = cretrydelay
-           , configNumTxId = numtxid
            , configStatsd = statsd
            , configStatsdHost = statsdhost
            , configStatsdPort = statsdport
@@ -645,7 +633,6 @@
                     , webVersion = version
                     , webMaxDiff = maxdiff
                     , webNoMempool = nomem
-                    , webNumTxId = numtxid
                     , webStats = stats
                     }
   where
diff --git a/haskoin-store.cabal b/haskoin-store.cabal
--- a/haskoin-store.cabal
+++ b/haskoin-store.cabal
@@ -4,10 +4,10 @@
 --
 -- see: https://github.com/sol/hpack
 --
--- hash: b5a848bca1fcc3e0b0c69c2b9e0b04b81a35c40cf454e1e03fd93e3aa3679d6a
+-- hash: 32e77f6ea3e02f74893229c350cdad3e1ebfeac9fa713efa9c32cce8c0f9102c
 
 name:           haskoin-store
-version:        0.44.0
+version:        0.45.0
 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
diff --git a/src/Haskoin/Store/Web.hs b/src/Haskoin/Store/Web.hs
--- a/src/Haskoin/Store/Web.hs
+++ b/src/Haskoin/Store/Web.hs
@@ -145,7 +145,6 @@
     , webTimeouts   :: !WebTimeouts
     , webVersion    :: !String
     , webNoMempool  :: !Bool
-    , webNumTxId    :: !Bool
     , webStats      :: !(Maybe Metrics.Store)
     }
 
@@ -1238,9 +1237,13 @@
     xpub (BinfoXpub x) = Just x
     xpub (BinfoAddr _) = Nothing
 
+getNumTxId :: MonadIO m => WebT m Bool
+getNumTxId = fmap not $ S.param "txidindex" `S.rescue` const (return False)
+
 scottyBinfoUnspent :: (MonadUnliftIO m, MonadLoggerIO m) => WebT m ()
 scottyBinfoUnspent =
     getBinfoActive unspentErrors >>= \(xspecs, addrs) ->
+    getNumTxId >>= \numtxid ->
     get_limit >>= \limit ->
     get_min_conf >>= \min_conf ->
     let len = HashSet.size addrs + HashMap.size xspecs
@@ -1248,7 +1251,6 @@
     xuns <- get_xpub_unspents xspecs
     auns <- get_addr_unspents addrs
     net <- lift $ asks (storeNetwork . webStore . webConfig)
-    numtxid <- lift $ asks (webNumTxId . webConfig)
     height <- get_height
     let g k = map (xpub_unspent numtxid height k)
         xbus = concatMap (uncurry g) (HashMap.toList xuns)
@@ -1302,6 +1304,7 @@
 scottyMultiAddr :: (MonadUnliftIO m, MonadLoggerIO m) => WebT m ()
 scottyMultiAddr =
     get_addrs >>= \(addrs, xpubs, saddrs, sxpubs, xspecs) ->
+    getNumTxId >>= \numtxid ->
     lift (asks webTicker) >>= \ticker ->
     get_price ticker >>= \local ->
     get_cashaddr >>= \cashaddr ->
@@ -1310,7 +1313,6 @@
     get_prune >>= \prune ->
     let len = HashSet.size addrs + HashSet.size xpubs
     in withMetrics multiaddrResponseTime len $ do
-    numtxid <- lift $ asks (webNumTxId . webConfig)
     xbals <- get_xbals xspecs
     let sxbals = subset sxpubs xbals
     xtrs <- get_xtrs xspecs
@@ -1518,7 +1520,7 @@
 
 scottyBinfoTx :: (MonadUnliftIO m, MonadLoggerIO m) => WebT m ()
 scottyBinfoTx =
-    lift (asks (webNumTxId . webConfig)) >>= \numtxid ->
+    getNumTxId >>= \numtxid ->
     S.param "txid" >>= \txid ->
     withMetrics rawtxResponseTime 1 $ go numtxid txid
   where
