getStablecoinBalances.md
getStablecoinBalances RPC Method - Multi-Chain Stablecoin Balance API
Retrieves stablecoin balances for a given wallet address across multiple blockchain networks with support for automatic wallet type detection (EVM, Solana, Tron) and flexible filtering options.
Please note that this RPC method requires the Multi-Chain Stablecoin Balance API add-on enabled on your Quicknode endpoint. This method is only supported on Mainnet networks of all supported chains.
Parameters
address (string (REQUIRED)): The wallet address to query. Supports EVM (0x...), Solana (base58), and Tron (T...) address formats.
chains (array (optional)): An array of blockchain identifiers to filter results. Supported chains: blast, ethereum, polygon, bsc, arbitrum, optimism, avalanche, base, solana, tron (mainnet networks only). If not specified, queries all supported chains
tokens (array (optional)): Optional array of token symbols to filter results (e.g., ["USDT", "USDC", "DAI"]).
contract_addresses (array (optional)): Optional array of specific token contract addresses or mint addresses to filter results.
peg_types (array (optional)): An array of peg types to filter stablecoins by their pegged currency. Supported types: usd, eur, jpy. If not specified, includes all peg types
backing_types (array (optional)): An array of backing types to filter stablecoins by their collateralization method. Supported types: fiat_backed, crypto_backed, algorithmic, algorithmic_hybrid, synthetic. If not specified, includes all backing types
issuer_types (array (optional)): An array of issuer types to filter stablecoins by their governance model. Supported types: centralized, decentralized. If not specified, includes all issuer types
vm_types (array (optional)): An array of virtual machine types to filter results by blockchain VM architecture. Supported types: evm, svm, tvm. If not specified, includes all VM types
Returns
- result (object): The stablecoin balance data for the requested address
- address (string): The wallet address that was queried
- chains (object): Balances organized by chain name
- chain_name (object): Balance data for a specific blockchain such as arbitrum, avalanche, base, bsc, ethereum, optimism, polygon
- chain_id (number): EVM chain ID for this network
- balances (array): Array of stablecoin balance objects on this chain
- token (string): Token symbol such as USDT, USDC, TUSD
- contract_address (string): ERC-20 contract address for EVM chains
- decimals (number): Token decimals on this chain
- balance_raw (string): Raw balance in smallest unit as a string
- balance_formatted (string): Human-readable balance formatted using decimals
- chain_name (object): Balance data for a specific blockchain such as arbitrum, avalanche, base, bsc, ethereum, optimism, polygon
- timestamp (string): ISO 8601 timestamp when the balances were computed
- total_balances (array): Aggregated totals across all chains grouped by token symbol
- token (string): Token symbol
- decimals (number): Maximum decimals encountered for this token across chains
- balance_raw (string): Total raw balance across all chains as a string
- balance_formatted (string): Total human-readable balance across all chains
Code Examples
CURL
curl -X POST "https://docs-demo.quiknode.pro/" \
-H "Content-Type: application/json" \
-d '{\n "jsonrpc": "2.0",\n "method": "getStablecoinBalances",\n "params": {\n "address": "0xF977814e90dA44bFA03b6295A0616a897441aceC",\n "chains": [\n "ethereum",\n "polygon"\n ],\n "tokens": [\n "USDT",\n "USDC"\n ]\n },\n "id": 1\n}'
ETHERS
import { ethers } from "ethers";
async function main() {
const provider = new ethers.JsonRpcProvider("https://docs-demo.quiknode.pro/");
const response = await provider.send("getStablecoinBalances", {
"address": "0xF977814e90dA44bFA03b6295A0616a897441aceC",
"chains": [
"ethereum",
"polygon"
],
"tokens": [
"USDT",
"USDC"
]
});
console.log(response);
}
main();
ETH_RB
require 'eth'
client = Eth::Client.create 'https://docs-demo.quiknode.pro/'
payload = {
"jsonrpc": "2.0",
"method": "getStablecoinBalances",
"params": {
"address": "0xF977814e90dA44bFA03b6295A0616a897441aceC",
"chains": [
"ethereum",
"polygon"
],
"tokens": [
"USDT",
"USDC"
]
},
"id": "1"
}
response = client.send(payload.to_json)
puts response
WEB3PY
from web3 import Web3, HTTPProvider
w3 = Web3(HTTPProvider('https://docs-demo.quiknode.pro/'))
response = w3.provider.make_request("getStablecoinBalances", {"address":"0xF977814e90dA44bFA03b6295A0616a897441aceC","chains":["ethereum","polygon"],"tokens":["USDT","USDC"]})
print(response)
VIEM
import { createPublicClient, http } from 'viem'
async function main() {
const client = createPublicClient({
transport: http('https://docs-demo.quiknode.pro/')
})
const result = await client.request({
method: 'getStablecoinBalances',
params: {
"address": "0xF977814e90dA44bFA03b6295A0616a897441aceC",
"chains": [
"ethereum",
"polygon"
],
"tokens": [
"USDT",
"USDC"
]
}
})
console.log(result)
}
main()
QNSDK
import { Core } from '@quicknode/sdk'
const core = new Core({
endpointUrl: "https://docs-demo.quiknode.pro/",
})
core.client
.request({
method: 'getStablecoinBalances',
params: {"address":"0xF977814e90dA44bFA03b6295A0616a897441aceC","chains":["ethereum","polygon"],"tokens":["USDT","USDC"]}
})
.then(res => console.log(res))
JAVASCRIPT
const body = {
jsonrpc: '2.0',
method: 'getStablecoinBalances',
params: {"address":"0xF977814e90dA44bFA03b6295A0616a897441aceC","chains":["ethereum","polygon"],"tokens":["USDT","USDC"]},
id: 1
}
async function main() {
const response = await fetch('https://docs-demo.quiknode.pro/', {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify(body)
})
const data = await response.json()
console.log(data)
}
main()
PYTHON
import requests
import json
url = "https://docs-demo.quiknode.pro/"
payload = json.dumps({
"jsonrpc": "2.0",
"method": "getStablecoinBalances",
"params": {
"address": "0xF977814e90dA44bFA03b6295A0616a897441aceC",
"chains": [
"ethereum",
"polygon"
],
"tokens": [
"USDT",
"USDC"
]
},
"id": 1
})
headers = {
'Content-Type': 'application/json'
}
response = requests.request("POST", url, headers=headers, data=payload)
print(response.text)
RUBY
require "uri"
require "json"
require "net/http"
uri = URI("https://docs-demo.quiknode.pro/")
payload = {
jsonrpc: "2.0",
id: 1,
method: "getStablecoinBalances",
params: {"address":"0xF977814e90dA44bFA03b6295A0616a897441aceC","chains":["ethereum","polygon"],"tokens":["USDT","USDC"]}
}
request = Net::HTTP::Post.new(uri)
request["Content-Type"] = "application/json"
request.body = JSON.generate(payload)
response = Net::HTTP.start(uri.host, uri.port, use_ssl: true) do |http|
http.request(request)
end
puts response.body
STATIC-RESPONSE
{
"jsonrpc": "2.0",
"result": {
"address": "0xF977814e90dA44bFA03b6295A0616a897441aceC",
"chains": {
"ethereum": {
"balances": [
{
"balance_formatted": "22794505870.275000",
"balance_raw": "22794505870275000",
"contract_address": "0xdAC17F958D2ee523a2206206994597C13D831ec7",
"decimals": 6,
"token": "USDT"
}
],
"chain_id": 1
},
"polygon": {
"balances": [
{
"balance_formatted": "64.555497",
"balance_raw": "64555497",
"contract_address": "0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359",
"decimals": 6,
"token": "USDC"
}
],
"chain_id": 137
}
},
"timestamp": "2025-10-16T10:56:11.915517401+00:00",
"total_balances": [
{
"balance_formatted": "64.555497",
"balance_raw": "64555497",
"decimals": 6,
"token": "USDC"
},
{
"balance_formatted": "22794505870.275",
"balance_raw": "22794505870275000",
"decimals": 6,
"token": "USDT"
}
]
},
"id": 1
}