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

Returns

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
}