Skip to main content
Query SOL and SPL token balances for Para wallets using Solana libraries. This guide covers checking native SOL balances and SPL token balances.
import { useParaSolanaSigner } from '@getpara/react-sdk';
import { createSolanaRpc, address } from '@solana/kit';
import { getAssociatedTokenAddress } from '@solana/spl-token';

const rpc = createSolanaRpc("https://api.mainnet-beta.solana.com");

function WalletBalance() {
  const { solanaSigner, isLoading } = useParaSolanaSigner({ rpc });
  const [solBalance, setSolBalance] = useState(0);
  const [tokenBalance, setTokenBalance] = useState(0);

  const fetchBalances = async () => {
    if (!solanaSigner) return;

    try {
      // Get SOL balance
      const { value } = await rpc.getBalance(solanaSigner.address).send();
      setSolBalance(Number(value) / 1e9);

      // Get SPL token balance
      const usdcMint = address("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v");
      const tokenAccount = await getAssociatedTokenAddress(
        usdcMint,
        solanaSigner.address
      );

      const { value: accountData } = await rpc.getAccountInfo(tokenAccount).send();
      if (accountData && accountData.data) {
        const parsed = JSON.parse(accountData.data);
        setTokenBalance(Number(parsed.parsed.info.tokenAmount.amount) / 1e6);
      } else {
        setTokenBalance(0);
      }
    } catch (error) {
      console.error("Error fetching balances:", error);
    }
  };

  return (
    <div>
      <button onClick={fetchBalances}>Refresh Balances</button>
      <p>SOL Balance: {solBalance}</p>
      <p>USDC Balance: {tokenBalance}</p>
    </div>
  );
}

Next Steps