ERC20 Address: Format, balanceOf and Creating One via API
How an ERC-20 address and balanceOf work under the hood, how it carries over to Polygon and Arbitrum, and how to create and watch ERC-20 addresses over REST instead of raw JSON-RPC.
An ERC20 address is the same 0x-prefixed, 42-character address format Ethereum uses for every account — it becomes an "ERC-20 address" in context whenever that account holds tokens built to the ERC-20 standard. Because the format is shared across every EVM chain, the same erc20 address you use on Ethereum works unchanged on Polygon and Arbitrum, though the tokens and balances at that address are chain-specific. This page covers the format, the balanceOf call that reads a token balance, and creating addresses over an API.
The ERC-20 standard, briefly
ERC-20 is Ethereum's fungible-token standard: a small set of functions — transfer, approve, balanceOf and a handful of others — that any compliant token contract implements, which is why wallets and exchanges can support new ERC-20 tokens without custom integration work per token. The full mechanics are in the ERC20 token standard article on the blog; this page focuses on the address side: what an erc20 address is and how to work with it programmatically.
balanceOf: how an ERC-20 balance is actually read
An ERC-20 token balance isn't stored on the address itself — it's stored inside the token's smart contract, in a mapping keyed by address. balanceOf(address) is the standard read-only function every ERC-20 contract exposes to look that value up. Calling it directly means encoding a raw JSON-RPC eth_call against the token contract and decoding the returned hex. The Chaingateway API does that decoding for you: balance and transaction-history endpoints return plain numbers, so "erc20 balanceof" stops being a raw-RPC problem and becomes a normal API response.
The same address on Polygon and Arbitrum
Polygon and Arbitrum are both EVM-compatible, so a Polygon address and an Arbitrum address use the identical 0x format as an Ethereum address, and in fact can be the very same address if it's derived from the same key. That's also why Polygon tokens are ERC-20 tokens in every functional sense — is Polygon an ERC-20 token network, not a different address standard — POL and Polygon-native tokens implement the same interface as Ethereum's. The token contracts differ per chain even when the address format doesn't; a token deployed on Ethereum needs a separate deployment (or bridge) to exist on Polygon.
ERC-721 and ERC-721A: a different standard, same address format
ERC-721 is Ethereum's non-fungible token standard — each token ID is unique rather than interchangeable, unlike ERC-20's fungible balances. ERC-721A is a widely used gas-optimized implementation of the same ERC-721 interface, popular for NFT collections minted in batches; it changes how the contract stores data internally, not what a holder's address looks like. Both use the identical erc20-style 0x address for ownership. The ERC721 token standard article covers the NFT side in depth.
Create and read ERC-20 addresses over REST
| Endpoint | What it does |
|---|---|
POST /api/v2/ethereum/addresses | Generate a new Ethereum address |
POST /api/v2/ethereum/addresses/import | Import a private key so the API can sign for that address |
POST /api/v2/ethereum/webhooks | Register a webhook for ERC-20 deposits to the address |
POST /api/v2/ethereum/transactions/erc20 | Send an ERC-20 token from the address |
The same request shape applies with /polygon/ or /arbitrum/ in place of /ethereum/ in the path, since all three chains share the address format and the ERC-20 interface.
Need ERC-20 balances without hand-decoding balanceOf calls? Create a free account and query a testnet address over REST — 7-day trial, no card, no KYC.
FAQ: ERC-20 addresses
Ready to build on Ethereum, Polygon or Arbitrum?
Create an account and query a testnet ERC-20 balance today — 7-day trial, no card, no KYC. Full reference in the Ethereum API docs, or cover all seven chains with the multi-chain blockchain API.