⟠ What is the ERC-20 Token Standard?
ERC-20 stands for "Ethereum Request for Comments 20" and is a technical standard used for creating fungible tokens on the Ethereum blockchain. Proposed by Fabian Vogelsteller in November 2015, ERC-20 defines a set of rules and functions that all Ethereum-based tokens must follow, ensuring interoperability between different tokens, wallets, exchanges, and smart contracts.
ERC-20 is the most widely adopted token standard in the cryptocurrency ecosystem. It is the foundation for stablecoins (USDT, USDC, DAI), utility tokens, governance tokens, and thousands of other digital assets. For payment processors and merchants, ERC-20 tokens — particularly stablecoins — have become the preferred method for processing crypto payments due to their price stability, liquidity, and broad ecosystem support.
ERC-20 provides a standardized interface for tokens, enabling seamless integration across wallets, exchanges, and payment processors. This interoperability makes ERC-20 stablecoins like USDC and USDT the most widely accepted payment tokens in the crypto ecosystem, offering merchants price stability, high liquidity, and global accessibility.
⚙️ Core ERC-20 Functions
The ERC-20 standard defines six mandatory functions and three optional ones. These functions enable tokens to be transferred, tracked, and approved for use by other contracts.
Mandatory Functions
| Function | Description | Usage in Payments |
|---|---|---|
| totalSupply() | Returns the total supply of tokens in circulation | Used by wallets and explorers to display market cap |
| balanceOf(address) | Returns the token balance of a given address | Used to check customer and merchant balances |
| transfer(address, uint256) | Transfers tokens to a specified address | Primary payment function — sends tokens from customer to merchant |
| transferFrom(address, address, uint256) | Allows a third party to transfer tokens on behalf of the owner | Used by payment processors and smart contract escrow services |
| approve(address, uint256) | Allows a spender to withdraw tokens from the owner's account | Used to authorize payment processors to withdraw funds |
| allowance(address, address) | Returns the amount of tokens a spender is allowed to withdraw | Used to verify approval limits for payment processors |
Optional Functions
- name() — Returns the token's name (e.g., "USD Coin")
- symbol() — Returns the token's symbol (e.g., "USDC")
- decimals() — Returns the number of decimal places (typically 6 or 18)
Payment processors use the transfer() function to move tokens from customer to merchant. For automated settlement, they may use approve() and transferFrom() to enable smart contract-based payment flows, such as escrow, recurring payments, and split payments.
📡 ERC-20 Events & Monitoring
ERC-20 tokens emit events that allow external applications (like payment processors and block explorers) to track token activity in real time.
| Event | Description | Payment Use Case |
|---|---|---|
| Transfer(from, to, value) | Emitted when tokens are transferred | Used to detect incoming payments and confirm settlement |
| Approval(owner, spender, value) | Emitted when approval is granted | Used to track authorized spenders for payment processing |
Payment processors monitor Transfer events to detect customer payments. When a customer sends tokens to a merchant's wallet, the processor's system detects the event and updates the order status. This enables real-time payment confirmation without relying on centralized intermediaries.
- Customer initiates payment — sends USDC to merchant's wallet address
- Transfer event emitted — blockchain records the transaction
- Payment processor monitors event — detects the incoming transfer
- Order confirmation — merchant's system receives confirmation and completes the order
🪙 Major ERC-20 Payment Tokens
The most widely used ERC-20 tokens for payments are stablecoins — tokens that maintain a stable value relative to fiat currencies. Here are the leading ERC-20 payment tokens:
Issued by Circle, USDC is a fully reserved stablecoin pegged 1:1 to the US dollar. It's the most widely used ERC-20 stablecoin for payments, supported by all major payment processors.
The largest stablecoin by market cap, USDT is available on multiple networks including ERC-20. Widely used for payments and trading.
A decentralized stablecoin issued by MakerDAO, backed by collateral on the Ethereum network. Popular in DeFi payment flows.
Issued by Binance and Paxos, BUSD is a regulated stablecoin available on ERC-20. Used for payments within the Binance ecosystem.
While not a stablecoin, LINK is one of the most widely held ERC-20 tokens and is accepted by some merchants for payments.
The governance token of Uniswap, sometimes accepted as payment by DeFi-focused merchants.
For merchants, USDC and USDT (ERC-20) are the most practical payment tokens due to their price stability, high liquidity, and broad payment processor support. Both tokens are accepted by NOWPayments, CoinPayments, Stripe Crypto, and most other payment gateways.
⚖️ ERC-20 vs. Other Token Standards
While ERC-20 is the dominant standard for fungible tokens, several other standards exist for different use cases.
| Standard | Network | Token Type | Primary Use Case |
|---|---|---|---|
| ERC-20 | Ethereum / EVM | Fungible | Stablecoins, utility tokens, governance |
| ERC-721 | Ethereum / EVM | Non-Fungible (NFT) | Digital art, collectibles, unique assets |
| ERC-1155 | Ethereum / EVM | Semi-Fungible | Gaming items, mixed fungible/non-fungible |
| TRC-20 | TRON | Fungible | Stablecoins (USDT-TRC20), tokens on TRON |
| BEP-20 | BNB Chain | Fungible | Stablecoins, tokens on BNB Chain |
| SPL | Solana | Fungible | Tokens on Solana |
Both ERC-20 and TRC-20 support stablecoin payments. ERC-20 offers broader ecosystem support, more wallet integration, and higher liquidity. TRC-20 offers lower transaction fees and faster settlement on the TRON network. Many merchants accept both to give customers choice.
🔌 Payment Processor Integration with ERC-20
ERC-20 tokens are supported by all major payment processors, making them the most accessible digital assets for merchant payments.
How Payment Processors Work with ERC-20
-
1
Generate Payment Address
The processor generates a unique Ethereum address for each transaction or uses a shared address with a memo/identifier to track payments.
-
2
Monitor Transfer Events
The processor monitors the Ethereum blockchain for Transfer events matching the customer's payment.
-
3
Confirm Payment
Once the transaction is confirmed (typically after 1–12 blocks), the processor updates the order status.
-
4
Settle in Fiat or Stablecoin
The processor may convert the ERC-20 token to fiat (via auto-conversion) or settle in stablecoins.
Supported ERC-20 Tokens by Processor
| Processor | USDT (ERC-20) | USDC (ERC-20) | DAI | Other ERC-20 |
|---|---|---|---|---|
| NOWPayments | ✅ | ✅ | ✅ | 30+ tokens |
| CoinPayments | ✅ | ✅ | ⚠️ | 50+ tokens |
| Stripe Crypto | ⚠️ | ✅ | ❌ | Limited |
| CoinGate | ✅ | ✅ | ❌ | 20+ tokens |
| Coinbase Commerce | ⚠️ | ✅ | ❌ | Limited |
| BTCPay Server | ⚠️ | ⚠️ | ❌ | Community plugins |
⛽ Gas Fees & Cost Considerations
ERC-20 token transfers require gas fees paid in ETH. These fees can vary significantly based on network congestion.
Gas Fee Breakdown
- Simple ETH transfer: ~21,000 gas units
- ERC-20 token transfer: ~50,000–100,000 gas units (more complex than ETH transfer)
- Typical gas price: Varies from 10–100+ Gwei depending on network congestion
- Cost range: $1–$10 on Ethereum mainnet; $0.01–$0.50 on Layer 2 networks (Arbitrum, Optimism, Base, Polygon)
For merchants processing high volumes of ERC-20 payments, consider using Layer 2 networks (Arbitrum, Optimism, Base, Polygon) where gas fees are 90–99% lower. Payment processors like NOWPayments and Stripe Crypto support ERC-20 payments on L2 networks.
| Network | Typical Gas Fee (ERC-20) | Speed | Processor Support |
|---|---|---|---|
| Ethereum Mainnet | $1–$10 | ~12s (blocks) + finality | ✅ All |
| Polygon (PoS) | $0.01–$0.10 | ~2s | ✅ NOWPayments, Stripe |
| Arbitrum | $0.10–$0.50 | ~15s | ✅ NOWPayments |
| Optimism | $0.10–$0.50 | ~15s | ✅ NOWPayments |
| Base | $0.01–$0.10 | ~10s | ✅ Growing |
🛡️ Security & Best Practices
When accepting ERC-20 payments, merchants should follow these security best practices:
- Verify token contract addresses: Always use the official contract address for each token. Scammers often create fake tokens with similar symbols.
- Use reputable payment processors: Processors like NOWPayments and CoinPayments handle the technical complexity of ERC-20 monitoring and provide automatic security checks.
- Monitor for fake tokens: Some wallets may display fake tokens with the same symbol. Always verify the token contract address.
- Consider multi-signature wallets: For large balances, use a multi-signature wallet to prevent unauthorized withdrawals.
- Regularly audit wallet security: Ensure private keys are stored securely and access is limited to authorized personnel.
- Fake token contracts: Scammers create tokens with the same symbol (e.g., "USDC") but a different contract address.
- Approval phishing: Malicious contracts trick users into approving unlimited token spending.
- Airdrop scams: Unsolicited tokens with malicious contracts that drain wallets when interacted with.
🚀 The Future of ERC-20 in Payments
ERC-20's dominance in payment tokens is expected to continue, driven by several key trends:
- Stablecoin growth: USDC and USDT continue to expand their market cap, with more merchants accepting ERC-20 stablecoins as payment.
- Layer 2 adoption: As L2 networks reduce costs, ERC-20 payments become more economical for micro-payments and high-volume merchants.
- Regulatory clarity: With clearer regulations for stablecoins in the US and EU, ERC-20 tokens are becoming more attractive for compliant businesses.
- Cross-chain bridges: Enhanced interoperability allows ERC-20 tokens to flow seamlessly between Ethereum and other networks, increasing their utility.
- Programmable payments: Smart contract-enabled ERC-20 tokens enable automated escrow, recurring payments, and conditional settlement.
For merchants, accepting USDC and USDT on Ethereum (ERC-20) and on Layer 2 networks (Base, Polygon, Arbitrum) provides the best balance of stability, liquidity, and cost efficiency. Most payment processors now support these networks, making integration straightforward.