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():
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):
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():
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
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
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():
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.