For an EVM payment route, add the public 0x... address of a wallet you control. Ethereum, Optimism, BNB Chain, Base, Polygon and Arbitrum all use EVM-style addresses, but they maintain separate balances, transactions and token contracts. A valid-looking address does not prove that the chosen wallet supports the intended network or asset.
Never add a private key or seed phrase. Never paste the USDT or USDC token contract into the merchant receiving-address field.
The short answer
An EVM account address contains 0x followed by 40 hexadecimal characters:
0x + 40 characters from 0–9 and a–f = 42 characters total
Copy it from the wallet’s Receive screen after selecting the exact network. Check the beginning, middle and end, not only the first and last four characters. Address-poisoning transactions can place visually similar addresses into wallet history.
What mixed upper- and lowercase means
Ethereum addresses are hexadecimal. All-lowercase representations can be parsed, while the mixed-case format defined by ERC-55 encodes a checksum in letter casing. A checksum can catch many typing errors, but it does not prove ownership, network support or that an account is safe to receive a particular token.
Do not “fix” capitalization by hand. Copy the checksummed address from the wallet and let a trusted wallet library validate it. ENS or another human-readable name should resolve to the complete address before it is stored in GramPayBot.
Why the same address can appear on several networks
One private key normally derives the same visible EVM address on multiple compatible networks. That does not make those networks interchangeable:
- ETH on Ethereum is separate from ETH on Base, Optimism or Arbitrum;
- every network has its own transaction history and state;
- USDT and USDC use network-specific token contracts;
- an exchange may support a deposit address on one EVM network but not another;
- sending through the wrong network does not pay the selected invoice.
Always record the pair network + receiving address, never the address alone.
EOA and contract account share the same format
The official Ethereum account documentation distinguishes externally owned accounts, controlled by private keys, from contract accounts, controlled by code. Both use 42-character 0x... addresses and both can hold tokens.
Therefore syntax alone cannot tell whether a destination is a normal wallet, multisig, smart wallet, exchange deposit contract or token contract. Before using a contract-based wallet, confirm that its code and interface support receiving and later moving the selected token on that network.
How to prepare an EVM receiving address
- Open a self-custody wallet or exchange account that explicitly supports the intended network.
- Select the exact network: Ethereum, Optimism, BNB Chain, Base, Polygon or Arbitrum.
- Select USDT or USDC and open the receiving/deposit screen.
- Copy the full
0x...address and preserve its checksum capitalization. - Read any exchange warning about minimum deposits, credited token versions or unsupported smart-contract deposits.
- Open the explorer for the same network and paste the full address.
- Make a low-value test above the provider’s minimum and confirm the balance is usable.
For direct control, a self-custody address is usually clearer. An exchange deposit address can be reassigned, paused or restricted to one token representation.
How to verify control without exposing secrets
You never need to send GramPayBot a private key. For a self-custody EOA, control can be demonstrated by signing a clearly worded message in the wallet or by sending a small outgoing transaction. Do not sign an opaque message from an unknown site.
For a multisig or smart wallet, control depends on its owners and execution rules rather than one private key. Confirm that you can create and complete an outgoing token transaction on the chosen network before accepting customer payments.
Receiving address versus token contract
Both values begin with 0x, but they are not interchangeable:
- the receiving address identifies the merchant account;
- the token contract identifies USDT or USDC on one network.
For example, Ethereum USDT uses 0xdAC17F958D2ee523a2206206994597C13D831ec7, while Ethereum USDC uses 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48. Neither is your merchant wallet. Use the token verification guide before crediting a payment.
Add the address to GramPayBot
Choose one token and one network, paste the verified public address and create a small invoice. The buyer must select the same network in their wallet or exchange. GramPayBot matches network, token contract, recipient and amount; it does not treat any transfer to a similar-looking address as payment.
Start with the detailed USDT on Ethereum or USDC on Ethereum route, or review the complete supported matrix.
For newer EVM routes, compare USDT on Polygon, USDC on Polygon, USDT on Arbitrum and USDC on Arbitrum.
Stop if any of these happens
- the wallet cannot show the selected network;
- one copied character differs;
- an address was copied from transaction history instead of the receiving screen;
- the value is a USDT/USDC contract rather than your account;
- the exchange supports another representation of the token;
- you cannot sign or move a low-value test;
- the buyer intends to send through a different EVM network.
Correct the route before publishing the invoice. A shared 0x format is not a cross-chain recovery guarantee.
Next step
Create a tracked crypto payment link
Issue a USDT or USDC invoice manually, send one hosted checkout and follow its payment status without an API.
Explore payment links →