WDK logoWDK documentation

Check Balances

Query SOL and SPL token balances on Solana.

This guide explains how to check owned account balances, batch SPL token balances, and read-only account balances.

Owned Account Balances

Use an account retrieved from WalletManagerSolana to query balances.

Native SOL Balance

You can retrieve the native SOL balance from an Account object using account.getBalance():

Get SOL Balance
const balance = await account.getBalance()
console.log('Native SOL balance:', balance, 'lamports')

SPL Token Balance

You can retrieve an SPL token balance from an Account object using account.getTokenBalance(tokenMint):

Get SPL Token Balance
const splTokenAddress = 'Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB' // USDT mint address
const splTokenBalance = await account.getTokenBalance(splTokenAddress)
console.log('SPL token balance:', splTokenBalance)

Token balances are returned in the token's smallest units. Adjust for the token's decimals when displaying (e.g., USD₮ has 6 decimals).

Batch SPL Token Balances

You can retrieve multiple SPL token balances in one batch using account.getTokenBalances():

Get Batch SPL Token Balances
const tokenBalances = await account.getTokenBalances([
  'Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB',
  'So11111111111111111111111111111111111111112'
])

console.log('USDT balance:', tokenBalances['Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB'])
console.log('Wrapped SOL balance:', tokenBalances['So11111111111111111111111111111111111111112'])

The returned object maps each token mint address to a bigint balance in base units. Missing associated token accounts return 0n.

Read-Only Account Balances

Use WalletAccountReadOnlySolana to check balances for any public key without a seed phrase.

Native Balance

Read-Only SOL Balance
import { WalletAccountReadOnlySolana } from '@tetherto/wdk-wallet-solana'

const readOnlyAccount = new WalletAccountReadOnlySolana('publicKey', {
  provider: 'https://api.mainnet-beta.solana.com',
  commitment: 'confirmed'
})

const balance = await readOnlyAccount.getBalance()
console.log('Native balance:', balance, 'lamports')

Token Balance

Read-Only Token Balance
const tokenBalance = await readOnlyAccount.getTokenBalance('Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB')
console.log('Token balance:', tokenBalance)

You can also batch read SPL token balances from a read-only account using readOnlyAccount.getTokenBalances():

Read-Only Batch Token Balances
const tokenBalances = await readOnlyAccount.getTokenBalances([
  'Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB',
  'So11111111111111111111111111111111111111112'
])
console.log('Read-only token balances:', tokenBalances)

You can also create a read-only account from an existing owned account using await account.toReadOnlyAccount().

Next Steps

With balance checks in place, learn how to send SOL.

On this page