Working with Tokens
Make sure to implement the prerequisite code, or else the examples in this page will not work!
Of note: When working with official Fan Tokens in your project, you must use their correct addresses in your dApp. See here:
Testnet Fan Token addressesMainnet Fan Token addressesPrerequisite: ERC20ABI JSON file
When working with Fan Tokens, and for some use-cases described in this page (the ones that import ERC20ABI), you will need the below ERC20ABI.json file saved in your project folder.
Make sure that you import that file in your code in order to achieve the wanted step (the samples already have the necessary import code).
Retrieve user token balances
You can retrieve how many tokens of a specific type (ERC-20) a user holds in their wallet.
From there, you can create any scenario related to the balance. For instance, you can implement token-gating contents: giving access to certain content of your website only to holders of a certain token.
import erc20ABI from './ERC20ABI.json';
const tokenAddress = '0xYourTokenAddress'; // Replace with the actual ERC-20 contract address
const userAddress = '0xUserWalletAddress'; // Replace with the user's wallet address
async function getTokenBalance() {
const balance = await client.readContract({
address: tokenAddress,
abi: erc20ABI,
functionName: 'balanceOf', // This is standard ERC-20 function to get balance
args: [userAddress],
});
return balance.toString();
}
// Example usage
getTokenBalance().then(console.log);If you want to know if the user holds a specific token, make sure to check their wallet balance and also to check their staked balance. Read how to know what's staked.
Indeed, staked tokens are not taken into account in the wallet balance as they are not held in the wallet anymore: they are held on the staking smart-contract.
Retrieve user CHZ balance
You can retrieve how many tokens of a specific native token a user has held in their wallet; for instance, CHZ on Chiliz Chain.
Send ERC-20 Tokens to a wallet
You can send any token held in your wallet to any other wallet.
This is a code-based alternative to the POST /admin/wallet/transfer/fan-token endpoint, which was deprecated from the Socios.com API in Q1 2025.
Your private key must only be used in server-side code. DO NOT release code on production with your private key shared on front-end side code.
Last updated