BEP20 Address: Format, Validation and Creating One via API
How a BEP20 address is built, how it differs from a BEP-2 or contract address, and how to generate and watch BSC deposit addresses over the Chaingateway API.
A BEP20 address is the 42-character, 0x-prefixed hex string that holds BNB and BEP-20 tokens on BNB Smart Chain — the same address format Ethereum uses, because BSC's execution layer is EVM-compatible. If you're integrating BSC deposits or payouts, the address is where every flow starts: generate one per customer, watch it, credit the deposit. This page covers the format and how to get addresses through an API instead of a wallet UI; for the deeper technical explainer on checksums and the BEP-2 vs. BEP-20 distinction, see the BEP20 address guide on the blog.
What is a BEP20 address?
A BEP20 address is a 20-byte value, written as 40 hexadecimal characters with a 0x prefix — for example 0x8894E0a0c962CB723c1976a4421c95949bE2D4E. It's derived the same way an Ethereum address is: from the public key of a keypair, via Keccak-256 hashing. That shared derivation is why a wallet holding an Ethereum address can display the identical string on BSC — the format doesn't distinguish chains, only the network you broadcast a transaction to does.
BSC BEP20 vs. BEP-2: not the same standard
BEP20 is BNB Smart Chain's token standard, functionally close to Ethereum's ERC-20 and using the same address format. BEP-2 is a different, older standard that runs on BNB Beacon Chain (formerly Binance Chain), with its own address format that starts with bnb1 instead of 0x. "BSC BEP20" and "BEP-2" addresses are not interchangeable, and sending a BEP-2 asset to a BEP20-formatted address (or the reverse) fails or, on some exchanges, requires an explicit cross-chain conversion step. If a search led you here from "bep20 bsc", this is the distinction that matters: you're on the right chain.
What is a BEP20 wallet address, in practice?
Functionally, a BEP20 wallet address is your account identifier on BSC: the destination for incoming BNB or BEP-20 tokens (BEP20 tokens such as USDT, USDC or a project's own token) and the source address for outgoing ones. The same binance smart chain wallet address format holds native BNB and every BEP-20 token simultaneously — there's one address per account, not one per asset, and a token's balance under that address is tracked by the token's own smart contract rather than by the address itself.
Create and watch a BEP20 address over REST
Instead of generating an address in a wallet app and copying it into your backend, the BSC API creates and imports addresses directly, and a webhook tells you when a deposit lands.
| Endpoint | What it does |
|---|---|
POST /api/v2/bsc/addresses | Generate a new BEP20 address |
POST /api/v2/bsc/addresses/import | Import an existing private key so the API can sign for that address |
POST /api/v2/bsc/webhooks | Register a webhook so a deposit to the address triggers an HMAC-signed callback |
GET /api/v2/bsc/webhooks/notifications | List past deposit notifications for reconciliation |
Watching an address for deposits needs no imported key — only sending from it does. That split matters for BEP20 tokens: your deposit-collection addresses can stay watch-only, and only the hot wallet that pays out needs an imported key.
Need addresses at scale rather than one at a time? Create a free account and generate a batch of BEP20 addresses in testnet — 7-day trial, no card, no KYC.
FAQ: BEP20 addresses
Ready to build on BNB Smart Chain?
Create an account and generate a testnet BEP20 address in minutes — 7-day trial, no card, no KYC. Full endpoint reference in the BSC API docs, or cover all seven chains with the multi-chain blockchain API.