diff --git a/packages/checkout/src/api/data.ts b/packages/checkout/src/api/data.ts
index 0bcf1f2d..d6a8411f 100644
--- a/packages/checkout/src/api/data.ts
+++ b/packages/checkout/src/api/data.ts
@@ -73,38 +73,6 @@ export const fetchBalances = async ({ accountAddress, chainId }: GetTokenBalance
   }
 }
 
-export interface GetCollectionBalanceArgs {
-  accountAddress: string
-  chainId: number
-  collectionAddress: string
-  verifiedOnly?: boolean
-}
-
-export const fetchCollectionBalance = async ({
-  accountAddress,
-  chainId,
-  collectionAddress,
-  verifiedOnly
-}: GetCollectionBalanceArgs) => {
-  try {
-    const { indexerClient } = getNetworkConfigAndClients(chainId)
-
-    const res = await indexerClient.getTokenBalances({
-      accountAddress,
-      includeMetadata: true,
-      contractAddress: collectionAddress,
-      metadataOptions: {
-        verifiedOnly: verifiedOnly ?? true
-      }
-    })
-
-    return res?.balances || []
-  } catch (e) {
-    console.error(e)
-    return []
-  }
-}
-
 export interface FetchPaperSecretArgs {
   chainId: number
   email: string
diff --git a/packages/checkout/src/hooks/data.ts b/packages/checkout/src/hooks/data.ts
index a8d605b4..681d7f9b 100644
--- a/packages/checkout/src/hooks/data.ts
+++ b/packages/checkout/src/hooks/data.ts
@@ -1,7 +1,7 @@
 import { useQuery, UseQueryResult } from '@tanstack/react-query'
 import { TokenBalance } from '@0xsequence/indexer'
 
-import { fetchBalances, GetTokenBalancesArgs, fetchCollectionBalance, GetCollectionBalanceArgs } from '../api/data'
+import { fetchBalances, GetTokenBalancesArgs } from '../api/data'
 
 export const time = {
   oneSecond: 1 * 1000,
@@ -17,12 +17,3 @@ export const useBalances = (args: GetTokenBalancesArgs): UseQueryResult<TokenBal
     staleTime: 10 * time.oneMinute,
     enabled: !!args.chainId && !!args.accountAddress
   })
-
-export const useCollectionBalance = (args: GetCollectionBalanceArgs) =>
-  useQuery({
-    queryKey: ['collectionBalance', args],
-    queryFn: () => fetchCollectionBalance(args),
-    retry: true,
-    staleTime: 10 * time.oneMinute,
-    enabled: !!args.chainId && !!args.accountAddress && !!args.collectionAddress
-  })
diff --git a/packages/kit/src/hooks/data.ts b/packages/kit/src/hooks/data.ts
index 44b22036..8d2edcdf 100644
--- a/packages/kit/src/hooks/data.ts
+++ b/packages/kit/src/hooks/data.ts
@@ -1,8 +1,9 @@
-import { GetCoinPricesArgs, GetExchangeRateArgs, SequenceAPIClient, Token } from '@0xsequence/api'
+import { Token } from '@0xsequence/api'
 import { useQuery } from '@tanstack/react-query'
 
 import { useMetadataClient } from './useMetadataClient'
 import { useAPIClient } from './useAPIClient'
+import { useIndexerClient } from './useIndexerClient'
 
 export const time = {
   oneSecond: 1 * 1000,
@@ -10,6 +11,37 @@ export const time = {
   oneHour: 60 * 60 * 1000
 }
 
+interface UseCollectionBalanceArgs {
+  chainId: number
+  accountAddress: string
+  contractAddress: string
+  includeMetadata?: boolean
+  verifiedOnly?: boolean
+}
+
+export const useCollectionBalance = (args: UseCollectionBalanceArgs) => {
+  const indexerClient = useIndexerClient(args.chainId)
+
+  return useQuery({
+    queryKey: ['collectionBalance', args],
+    queryFn: async () => {
+      const res = await indexerClient.getTokenBalances({
+        accountAddress: args.accountAddress,
+        contractAddress: args.contractAddress,
+        includeMetadata: args.includeMetadata ?? true,
+        metadataOptions: {
+          verifiedOnly: args.verifiedOnly ?? true
+        }
+      })
+
+      return res?.balances || []
+    },
+    retry: true,
+    staleTime: time.oneSecond * 30,
+    enabled: !!args.chainId && !!args.accountAddress && !!args.contractAddress
+  })
+}
+
 // From USD to another currency
 export const useExchangeRate = (toCurrency: string) => {
   const apiClient = useAPIClient()
diff --git a/packages/wallet/src/api/data.ts b/packages/wallet/src/api/data.ts
index 95947a33..a700cf12 100644
--- a/packages/wallet/src/api/data.ts
+++ b/packages/wallet/src/api/data.ts
@@ -1,4 +1,4 @@
-import { ContractInfo, GetContractInfoArgs, GetContractInfoBatchReturn, TokenMetadata } from '@0xsequence/metadata'
+import { GetContractInfoBatchReturn } from '@0xsequence/metadata'
 import { Token, TokenPrice } from '@0xsequence/api'
 import { TokenBalance, ContractType, Page, GetTransactionHistoryReturn, Transaction } from '@0xsequence/indexer'
 import { ethers } from 'ethers'
@@ -176,6 +176,7 @@ export const fetchCollectionBalance = async ({
     return []
   }
 }
+
 export interface FetchBalancesAssetsArgs {
   accountAddress: string
   chainIds: number[]
diff --git a/packages/wallet/src/hooks/data.ts b/packages/wallet/src/hooks/data.ts
index 8ceb9276..ec1e15a3 100644
--- a/packages/wallet/src/hooks/data.ts
+++ b/packages/wallet/src/hooks/data.ts
@@ -45,15 +45,6 @@ export const useBalances = (args: UseBalancesArgs, options: GetTokenBalancesOpti
     enabled: args.chainIds.length > 0 && !!args.accountAddress
   })
 
-export const useCollectionBalance = (args: GetCollectionBalanceArgs) =>
-  useQuery({
-    queryKey: ['collectionBalance', args],
-    queryFn: () => fetchCollectionBalance(args),
-    retry: true,
-    staleTime: time.oneSecond * 30,
-    enabled: !!args.chainId && !!args.accountAddress && !!args.collectionAddress
-  })
-
 export const useBalancesAssetsSummary = (args: FetchBalancesAssetsArgs, options: GetTokenBalancesOptions) =>
   useQuery({
     queryKey: ['balancesAssetsSummary', args, options],
diff --git a/packages/wallet/src/views/CollectionDetails/index.tsx b/packages/wallet/src/views/CollectionDetails/index.tsx
index 120769df..be4e1197 100644
--- a/packages/wallet/src/views/CollectionDetails/index.tsx
+++ b/packages/wallet/src/views/CollectionDetails/index.tsx
@@ -2,13 +2,14 @@ import React from 'react'
 import { TokenBalance } from '@0xsequence/indexer'
 import { ethers } from 'ethers'
 import { Box, Image, Text, vars } from '@0xsequence/design-system'
+import { useCollectionBalance } from '@0xsequence/kit'
 import { useAccount } from 'wagmi'
 
 import { CollectionDetailsSkeleton } from './Skeleton'
 
 import { NetworkBadge } from '../../shared/NetworkBadge'
 import { CoinIcon } from '../../shared/CoinIcon'
-import { useCollectionBalance, useNavigation } from '../../hooks'
+import { useNavigation } from '../../hooks'
 import { formatDisplay } from '../../utils'
 
 import * as sharedStyles from '../../shared/styles.css'
@@ -25,7 +26,7 @@ export const CollectionDetails = ({ chainId, contractAddress }: CollectionDetail
   const { data: collectionBalanceData, isPending: isPendingCollectionBalance } = useCollectionBalance({
     chainId,
     accountAddress: accountAddress || '',
-    collectionAddress: contractAddress
+    contractAddress
   })
   const scrollbarWidth = useScrollbarWidth()