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.46.5
+### Changed
+- Throw error when offset exceeded instead of truncating it.
+
 ## 0.46.4
 ### Fixed
 - Do not compute balances separately for loose addresses when part of an xpub.
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: a1382f198453b7795ad226a8857b0e6ad8e5c31f07b52ca38ccd7ecc6eba6035
+-- hash: 2388f76082693b4db791470fb50ff1da0e57d35fcadfd33de553f454fe8c7282
 
 name:           haskoin-store
-version:        0.46.4
+version:        0.46.5
 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
@@ -1467,7 +1467,10 @@
         return (fromIntegral i :: Int)
     get_offset = do
         x <- lift (asks (maxLimitOffset . webMaxLimits . webConfig))
-        o <- min x <$> (S.param "offset" `S.rescue` const (return 0))
+        o <- S.param "offset" `S.rescue` const (return 0)
+        when (o > x) $
+            raise multiaddrErrors $
+            UserError $ "offset exceeded: " <> show o <> " > " <> show x
         return (fromIntegral o :: Int)
     subset ks =
         HashMap.filterWithKey (\k _ -> k `HashSet.member` ks)
