> ## Documentation Index
> Fetch the complete documentation index at: https://docs.dynamic.xyz/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Fetch Balance

> [card] Recommended: JavaScript SDK with React Hooks
>
> For new React apps, we recommend the JavaScript SDK with React Hooks (`@dynamic-labs-sdk/react-hooks`) instead of the legacy React SDK documented here. The JS SDK comes with many benefits such as a much smaller bundle size and other optimizations. Use the [React quickstart (JavaScript SDK)](https://docs.dynamic.xyz/docs/javascript/reference/react-quickstart.md) to get started.

You can show a wallet's full portfolio by using the [useMultichainTokenBalances](https://docs.dynamic.xyz/docs/react/reference/hooks/usemultichaintokenbalances.md) hook, which batches token balances across chains and networks in a single call.

```jsx React theme={"system"}
import { useMultichainTokenBalances, useDynamicContext } from '@dynamic-labs/sdk-react-core';
import { ChainEnum } from '@dynamic-labs/sdk-api-core';

const { primaryWallet } = useDynamicContext();

const { multichainTokenBalances, isLoading } = useMultichainTokenBalances({
  filterSpamTokens: true,
  requests: [
    {
      address: primaryWallet?.address || '',
      chain: ChainEnum.Evm,
      networkIds: [1, 137, 56], // Ethereum, Polygon, BNB
    },
  ],
});
```

Each token entry includes `marketValue` (USD value) and `price` (USD per unit), so the total portfolio value is the sum of `marketValue` across tokens:

```jsx React theme={"system"}
const totalUsd = multichainTokenBalances
  ?.flatMap((chain) => chain.networks)
  .flatMap((network) => network.balances ?? [])
  .reduce((sum, token) => sum + (token.marketValue ?? 0), 0);
```

## Native asset balance

> [!NOTE]
>
> `getBalance` returns the native asset only (for example ETH on Ethereum, SOL on Solana) for the wallet's active network. For total portfolio value across tokens and chains, use `useMultichainTokenBalances` above.

To show the balance of just the wallet's native asset, use the `getBalance` method from the wallet connector via [useDynamicContext](https://docs.dynamic.xyz/docs/react/reference/hooks/usedynamiccontext.md).

```jsx React theme={"system"}
import { useDynamicContext } from '@dynamic-labs/sdk-react-core'

const { primaryWallet } = useDynamicContext()

const [balance, setBalance] = useState(null)

useEffect(() => {
  const fetchBalance = async () => {
    if (primaryWallet) {
      const value = await primaryWallet.getBalance()
      setBalance(value)
    }
  }
  fetchBalance()
}, [primaryWallet])

return <p>{balance}</p>
```


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.