Documentation Index Fetch the complete documentation index at: https://docs.monei.cc/llms.txt
Use this file to discover all available pages before exploring further.
Overview
Your Monei EVM wallet works across all supported Ethereum-compatible networks with a single address. This guide covers wallet operations, balance management, and portfolio tracking.
What you’ll learn:
Get wallet address and details
Check balances (native tokens and ERC-20)
View portfolio across networks
Get supported networks
Send tokens and native currency
Multi-chain management
Your EVM Wallet
Your EVM wallet uses the same address across all supported networks:
Single Address One address works on all 6+ EVM chains
Multi-Chain Manage assets across Ethereum, BSC, Polygon, etc.
Custodial Monei securely manages your private keys
Get Wallet Address
Retrieve your EVM wallet address.
import MoneiSDK from 'monei-sdk' ;
const monei = new MoneiSDK ({
apiKey: process . env . MONEI_API_KEY ,
});
// Get wallet information
const wallet = await monei . account . me ();
// Find EVM subwallet
const evmWallet = wallet . subwallets . find ( w => w . chain === 'EVM' );
console . log ( 'EVM Address:' , evmWallet . publicAddress );
console . log ( 'Chain:' , evmWallet . chain );
console . log ( 'Balance:' , evmWallet . balance );
Response:
{
"statusCode" : 200 ,
"message" : "User wallet retrieved successfully" ,
"data" : {
"nairaBalance" : "1805.00" ,
"subwallets" : [
{
"id" : "uuid-here" ,
"type" : "CRYPTO" ,
"currency" : "ETH" ,
"balance" : 0.00008 ,
"chain" : "EVM" ,
"publicAddress" : "0x4e7859f17B7A6b3D440D444b3e2157e3806EDA23" ,
"evmPortfolio" : { /* portfolio data */ }
}
]
}
}
Supported Networks
Get all supported EVM networks.
// Get supported networks
const networks = await monei . evm . getSupportedNetworks ();
networks . forEach ( network => {
console . log ( ` ${ network . name } (Chain ID: ${ network . chainId } )` );
console . log ( ` Native Token: ${ network . nativeToken } ` );
console . log ( ` Explorer: ${ network . blockExplorerUrl } ` );
console . log ( ` Testnet: ${ network . isTestnet } ` );
});
Response:
{
"statusCode" : 200 ,
"message" : "Networks retrieved successfully" ,
"data" : [
{
"chainId" : 56 ,
"name" : "BNB Smart Chain" ,
"nativeToken" : "BNB" ,
"blockExplorerUrl" : "https://bscscan.com" ,
"isTestnet" : false
},
{
"chainId" : 137 ,
"name" : "Polygon" ,
"nativeToken" : "MATIC" ,
"blockExplorerUrl" : "https://polygonscan.com" ,
"isTestnet" : false
}
]
}
Supported Networks:
Network Chain ID Native Token Block Time Ethereum 1 ETH ~12s BNB Smart Chain 56 BNB ~3s Polygon 137 MATIC ~2s Base 8453 ETH ~2s Arbitrum 42161 ETH ~0.25s Optimism 10 ETH ~2s
Get Native Token Balance
Check your native token balance (ETH, BNB, MATIC, etc.).
// Get native token balance for a specific chain
const balance = await monei . evm . getNativeBalance ({
chainId: 56 // BSC
});
console . log ( 'Balance:' , balance . balance , 'BNB' );
console . log ( 'In Wei:' , balance . balanceWei );
Response:
{
"statusCode" : 200 ,
"message" : "Balance retrieved successfully" ,
"data" : {
"balance" : "0.5234"
}
}
Get ERC-20 Token Balance
Check balance for specific ERC-20 tokens.
// Get USDT balance on BSC
const usdtBalance = await monei . evm . getTokenBalance ({
tokenAddress: '0x55d398326f99059fF775485246999027B3197955' , // USDT on BSC
chainId: 56
});
console . log ( 'USDT Balance:' , usdtBalance . balance );
// Get USDC balance on Polygon
const usdcBalance = await monei . evm . getTokenBalance ({
tokenAddress: '0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174' , // USDC on Polygon
chainId: 137
});
console . log ( 'USDC Balance:' , usdcBalance . balance );
Get Portfolio
View complete portfolio for a specific chain.
// Get portfolio for BSC (Chain ID 56)
const portfolio = await monei . evm . getPortfolio ( 56 );
console . log ( 'Network:' , portfolio . network );
console . log ( 'Wallet Address:' , portfolio . walletAddress );
console . log ( 'Total Value:' , portfolio . totalPortfolioValueUSD , 'USD' );
// Native token
console . log ( ' \n Native Token:' );
console . log ( ' Symbol:' , portfolio . nativeToken . symbol );
console . log ( ' Balance:' , portfolio . nativeToken . balance );
console . log ( ' USD Value:' , portfolio . nativeToken . balanceUSD );
// ERC-20 tokens
console . log ( ' \n ERC-20 Tokens:' );
portfolio . tokens . forEach ( token => {
console . log ( ` ${ token . symbol } : ${ token . balance } ($ ${ token . balanceUSD } )` );
console . log ( ` Contract: ${ token . contractAddress } ` );
console . log ( ` Price: $ ${ token . priceUSD } ` );
});
Response:
{
"statusCode" : 200 ,
"message" : "Portfolio retrieved successfully" ,
"data" : {
"userId" : "user-id-here" ,
"walletAddress" : "0x4e7859f17B7A6b3D440D444b3e2157e3806EDA23" ,
"network" : "BNB Smart Chain" ,
"totalPortfolioValueUSD" : "1250.75" ,
"nativeToken" : {
"contractAddress" : null ,
"name" : "BNB" ,
"symbol" : "BNB" ,
"decimals" : 18 ,
"type" : "native" ,
"balance" : "0.5234" ,
"balanceUSD" : "150.25" ,
"priceUSD" : "287.00" ,
"rawBalance" : "523400000000000000" ,
"network" : "BNB Smart Chain"
},
"tokens" : [
{
"contractAddress" : "0x55d398326f99059fF775485246999027B3197955" ,
"name" : "Tether USD" ,
"symbol" : "USDT" ,
"decimals" : 18 ,
"type" : "token" ,
"balance" : "1000.50" ,
"balanceUSD" : "1000.50" ,
"priceUSD" : "1.00" ,
"rawBalance" : "1000500000000000000000" ,
"network" : "BNB Smart Chain" ,
"logoUrl" : "https://assets.coingecko.com/coins/images/325/large/Tether.png"
},
{
"contractAddress" : "0x8AC76a51cc950d9822D68b83fE1Ad97B32Cd580d" ,
"name" : "USD Coin" ,
"symbol" : "USDC" ,
"decimals" : 18 ,
"type" : "token" ,
"balance" : "100.00" ,
"balanceUSD" : "100.00" ,
"priceUSD" : "1.00" ,
"rawBalance" : "100000000000000000000" ,
"network" : "BNB Smart Chain"
}
],
"updatedAt" : "2024-02-15T10:30:00Z"
}
}
Send Native Token
Send native tokens (ETH, BNB, MATIC, etc.) to another address.
// Send 0.01 BNB on BSC
const tx = await monei . evm . sendNativeToken ({
to: '0xRecipientAddress' ,
amount: '0.01' ,
chainId: 56
});
console . log ( 'Transaction Hash:' , tx . txHash );
console . log ( 'Explorer:' , `https://bscscan.com/tx/ ${ tx . txHash } ` );
// Check transaction status
const status = await monei . evm . getTransactionStatus ( tx . txHash , 56 );
console . log ( 'Status:' , status . status );
console . log ( 'Confirmations:' , status . confirmations );
Response:
{
"statusCode" : 200 ,
"message" : "Transaction sent successfully" ,
"data" : {
"txHash" : "0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef"
}
}
Send ERC-20 Token
Send ERC-20 tokens to another address.
// Send 100 USDT on BSC
const tx = await monei . evm . sendToken ({
to: '0xRecipientAddress' ,
tokenAddress: '0x55d398326f99059fF775485246999027B3197955' , // USDT on BSC
amount: '100' ,
chainId: 56
});
console . log ( 'Transaction Hash:' , tx . txHash );
console . log ( 'Explorer:' , `https://bscscan.com/tx/ ${ tx . txHash } ` );
// Send USDC on Polygon
const usdcTx = await monei . evm . sendToken ({
to: '0xRecipientAddress' ,
tokenAddress: '0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174' , // USDC on Polygon
amount: '50' ,
chainId: 137
});
console . log ( 'USDC Transaction:' , usdcTx . txHash );
Response:
{
"statusCode" : 200 ,
"message" : "Token transfer successful" ,
"data" : {
"txHash" : "0xabcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890"
}
}
Multi-Chain Portfolio
View assets across all networks.
// Get portfolio across all chains
const chains = [ 56 , 137 , 1 , 8453 , 42161 , 10 ]; // BSC, Polygon, ETH, Base, Arbitrum, Optimism
const portfolios = [];
let totalValue = 0 ;
for ( const chainId of chains ) {
try {
const portfolio = await monei . evm . getPortfolio ( chainId );
portfolios . push ( portfolio );
totalValue += parseFloat ( portfolio . totalPortfolioValueUSD );
console . log ( ` ${ portfolio . network } : $ ${ portfolio . totalPortfolioValueUSD } ` );
} catch ( error ) {
console . log ( ` ${ chainId } : No assets` );
}
}
console . log ( ' \n Total Portfolio Value:' , totalValue , 'USD' );
// Group by token
const tokenBalances = {};
portfolios . forEach ( p => {
p . tokens . forEach ( token => {
if ( ! tokenBalances [ token . symbol ]) {
tokenBalances [ token . symbol ] = 0 ;
}
tokenBalances [ token . symbol ] += parseFloat ( token . balanceUSD );
});
});
console . log ( ' \n Balances by Token:' );
Object . entries ( tokenBalances ). forEach (([ symbol , value ]) => {
console . log ( ` ${ symbol } : $ ${ value . toFixed ( 2 ) } ` );
});
Common Token Addresses
Stablecoins
Network Contract Address BSC 0x55d398326f99059fF775485246999027B3197955Polygon 0xc2132D05D31c914a87C6611C10748AEb04B58e8FEthereum 0xdAC17F958D2ee523a2206206994597C13D831ec7Arbitrum 0xFd086bC7CD5C481DCC9C85ebE478A1C0b69FCbb9
Network Contract Address BSC 0x8AC76a51cc950d9822D68b83fE1Ad97B32Cd580dPolygon 0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174Ethereum 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48Base 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913
Network Contract Address BSC 0xaAa9214F675316182Eaa21C85f0Ca99160CC3AAAPolygon 0x8a87497488073307E1a17e8A12475a94Afcb413fEthereum 0x... (check latest)
Best Practices
Verify Addresses Always verify recipient addresses before sending
Check Network Ensure recipient supports the network you’re using
Test Small First Send small test amount before large transfers
Monitor Gas Keep native token for gas fees on each chain
Use Low-Cost Chains Use Polygon or BSC for smaller transactions
Track Portfolio Regularly check portfolio across all chains
Gas Fees
Keep native tokens for gas on each network:
Network Typical Gas Cost Recommended Balance Polygon 0.001 − 0.001 - 0.001 − 0.010.1 MATIC BSC 0.05 − 0.05 - 0.05 − 0.200.01 BNB Base 0.02 − 0.02 - 0.02 − 0.100.001 ETH Arbitrum 0.10 − 0.10 - 0.10 − 0.500.002 ETH Optimism 0.05 − 0.05 - 0.05 − 0.300.002 ETH Ethereum 2.00 − 2.00 - 2.00 − 10.000.01 ETH
Troubleshooting
Common causes:
Insufficient balance for amount + gas
Invalid recipient address
Network congestion
Gas price too low
Solutions:
Check balance includes gas fees
Verify address format
Retry with higher gas
Wait for network congestion to clear
Problem: Transaction stuck in pending stateConfirmations needed:
Ethereum: 12 blocks (~3 min)
BSC: 15 blocks (~45 sec)
Polygon: 128 blocks (~4 min)
Base/Arbitrum/Optimism: Near instant
Action:
Wait for required confirmations
Check block explorer
Contact support if pending > 1 hour
Problem: Sent to wrong networkPrevention:
Always verify network before sending
Check recipient supports the network
Use network-specific explorers
Recovery:
If same address on both networks, tokens are safe
Import wallet to correct network
Contact support for assistance
Next Steps
Transactions Learn about EVM transaction management
Token Swaps Swap tokens across DEXs
Networks Deep dive into supported networks
Security Learn security best practices