Skip to main content

Overview

Monei provides a unified custodial wallet that is automatically created when you sign up. This single wallet contains multiple subwallets for different assets and chains, giving you one interface to manage fiat, EVM tokens, and Solana assets. What you’ll learn:
  • How the unified wallet works
  • Understanding subwallets
  • Viewing balances and portfolios
  • Managing transactions across chains

Unified Wallet Architecture

When you create a Monei account, you automatically get one unified wallet that contains:

Fiat Subwallet

Nigerian Naira balance with virtual account for deposits

EVM Subwallet

Single address for all EVM chains (Ethereum, BSC, Polygon, etc.)

Solana Subwallet

Solana address for SOL and SPL tokens

Key Characteristics

Monei manages the private keys
  • No seed phrases to manage
  • Built-in security measures
  • Recovery through KYC verification
  • Insurance coverage
  • Hardware security modules (HSM)
You authenticate via API key - Monei handles the blockchain interactions securely.

Getting Your Wallet

Your wallet is automatically created when you sign up. Access it via the API:
import MoneiSDK from 'monei-sdk';

const monei = new MoneiSDK({
  apiKey: process.env.MONEI_API_KEY,
});

// Get complete wallet information
const wallet = await monei.wallet.me();

console.log('Naira Balance:', wallet.nairaBalance);
console.log('Subwallets:', wallet.subwallets.length);

// Access specific subwallet
const evmWallet = wallet.subwallets.find(w => w.chain === 'EVM');
console.log('EVM Address:', evmWallet.publicAddress);

const solWallet = wallet.subwallets.find(w => w.chain === 'SOLANA');
console.log('Solana Address:', solWallet.publicAddress);
Response Structure:
{
  "statusCode": 200,
  "message": "User wallet retreived succesfully",
  "data": {
    "nairaBalance": "1805.00",
    "subwallets": [
      {
        "id": "uuid-here",
        "type": "FIAT",
        "currency": "NGN",
        "balance": 1805,
        "chain": null,
        "publicAddress": null,
        "virtualAccount": {
          "accountNumber": "9907581802",
          "bankName": "Indulge MFB"
        }
      },
      {
        "id": "uuid-here",
        "type": "CRYPTO",
        "currency": "ETH",
        "balance": 0.00008,
        "chain": "EVM",
        "publicAddress": "0x4e7859f17B7A6b3D440D444b3e2157e3806EDA23",
        "evmPortfolio": { /* portfolio data */ }
      },
      {
        "id": "uuid-here",
        "type": "CRYPTO",
        "currency": "",
        "balance": 0,
        "chain": "SOLANA",
        "publicAddress": "6E5g2d1roqFZqL1eQay6Us29hzUKn52Ren5jRiiL3Qi",
        "solPortfolio": { /* portfolio data */ }
      }
    ]
  }
}

Fiat Subwallet (Naira)

Your Naira balance with a virtual bank account for easy deposits.

Virtual Account

// Get or create virtual account
const virtualAccount = await monei.wallet.createVirtualAccount({
  nin: 'your-nin-number', // National ID Number
  reference: 'optional-reference'
});

console.log('Account Number:', virtualAccount.accountNumber);
console.log('Bank Name:', virtualAccount.bankName);
console.log('Account Name:', virtualAccount.accountName);

// Use this account number to receive Naira deposits

Naira Operations

// Send Naira to bank account
const transfer = await monei.payout.bankTransfer({
  amount: 5000,
  bank: '058', // GTBank bank code
  accountNumber: '0123456789',
  transactionPin: 'your-pin',
  narration: 'Payment for services'
});

// Transfer to another Monei user (P2P)
const p2pTransfer = await monei.payout.peerTransfer({
  receiver: 'user@email.com', // or phone number
  amount: 1000,
  transactionPin: 'your-pin',
  currency: 'NGN'
});

EVM Subwallet

One address for all EVM chains - Ethereum, BSC, Polygon, Base, Arbitrum, Optimism, Scroll, Lisk, and Starknet.

Get EVM Portfolio

// Get portfolio for specific chain
const portfolio = await monei.evm.getPortfolio(56); // BSC chain ID

console.log('Total Value:', portfolio.totalPortfolioValueUSD);
console.log('Native Token:', portfolio.nativeToken.symbol);
console.log('Native Balance:', portfolio.nativeToken.balance);

// List all ERC-20 tokens
portfolio.tokens.forEach(token => {
  console.log(`${token.symbol}: ${token.balance} ($${token.balanceUSD})`);
});

Get Supported Networks

// Get all supported EVM 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}`);
});

Send EVM Tokens

// Send native token (ETH, BNB, MATIC, etc.)
const nativeTx = await monei.evm.sendNativeToken({
  to: '0xRecipientAddress',
  amount: '0.01',
  chainId: 56 // BSC
});

console.log('Transaction Hash:', nativeTx.txHash);

// Send ERC-20 token
const tokenTx = await monei.evm.sendToken({
  to: '0xRecipientAddress',
  tokenAddress: '0xUSDTContractAddress',
  amount: '100',
  chainId: 56
});

console.log('Transaction Hash:', tokenTx.txHash);

Solana Subwallet

Your Solana address for SOL and SPL tokens.

Get Solana Portfolio

// Get complete Solana portfolio
const solPortfolio = await monei.solana.getPortfolio({
  network: 'mainnet-beta' // or 'devnet'
});

console.log('SOL Balance:', solPortfolio.nativeBalance);
console.log('USD Value:', solPortfolio.nativeBalanceUsd);
console.log('Total Value:', solPortfolio.totalValueUsd);

// List SPL tokens
solPortfolio.tokens.forEach(token => {
  console.log(`${token.symbol}: ${token.balance}`);
  if (token.priceUsd) {
    console.log(`  Value: $${token.valueUsd}`);
  }
});

Send Solana Tokens

// Send SOL
const solTx = await monei.solana.transfer({
  to: '5AH3qo1v1EZfT3QKQpSsx1F8W5JyGEVZPcD5DzkX1N1d',
  amount: '0.1',
  network: 'mainnet-beta'
});

console.log('Signature:', solTx.signature);

// Send SPL token
const splTx = await monei.solana.transferToken({
  to: '5AH3qo1v1EZfT3QKQpSsx1F8W5JyGEVZPcD5DzkX1N1d',
  tokenMintAddress: 'EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v', // USDC
  amount: '10',
  network: 'mainnet-beta'
});

console.log('Signature:', splTx.signature);

Wallet Security

How Monei protects your assets:
  • Private keys stored in Hardware Security Modules (HSM)
  • Multi-signature protection for large transactions
  • Encrypted at rest and in transit
  • Regular security audits
  • Insurance coverage
  • KYC-based recovery system
You never handle private keys directly - Monei manages them securely.
Protect your API keys:
  • Store in environment variables
  • Never commit to version control
  • Use different keys for dev/prod
  • Rotate keys every 90 days
  • Monitor key usage
  • Set IP whitelisting (enterprise)
Additional protection layers:
  • Transaction PIN for withdrawals
  • KYC tier limits (₦200K-₦2M daily)
  • Two-factor authentication
  • Webhook notifications
  • Real-time monitoring
  • Fraud detection
Account recovery options:
  • Email/phone verification
  • KYC document verification
  • Support team assistance
  • Multi-device access
Because Monei is custodial, you can recover access through KYC verification even if you lose your credentials.

Understanding Subwallet Types

Subwallet TypeChainPurposeKey Feature
FIATNoneNaira storageVirtual bank account
CRYPTO (EVM)EVMMulti-chain tokensSame address across 9+ chains
CRYPTO (SOLANA)SolanaSOL & SPL tokensSeparate Solana address
All subwallets are part of your single unified wallet. You don’t create or delete subwallets - they’re automatically available.

Common Operations

Check Balances

View balances across all chains and currencies in one API call

Send Transactions

Send fiat, native tokens, or ERC-20/SPL tokens programmatically

Receive Payments

Share your addresses or virtual account to receive payments

Portfolio Tracking

Monitor portfolio value and token balances across all chains

Best Practices

  • Never share API keys
  • Use transaction PINs for withdrawals
  • Enable 2FA for your account
  • Monitor transaction history regularly
  • Set up webhook notifications
  • Use low-fee networks for small transactions (Polygon, BSC)
  • Consider confirmation time vs. cost
  • Verify recipient network before sending
  • Check gas prices before transactions
  • Keep minimum balance for gas fees
  • Monitor KYC tier limits
  • Spread assets across networks as needed
  • Regular balance reconciliation

Next Steps

Transactions

Learn how to manage and track transactions

Networks

Understand supported blockchain networks

Naira Wallet Operations

Deep dive into fiat wallet management

EVM Operations

Complete EVM wallet operations guide