Skip to main content

Overview

Your Monei wallet is automatically created when you sign up. It’s a unified custodial wallet containing subwallets for different assets. Naira, EVM tokens, and Solana tokens. This guide covers how to manage and monitor your wallet. What you’ll learn:
  • Understanding your unified wallet
  • Managing subwallets
  • Viewing balances and portfolios
  • Virtual account for Naira deposits
  • Transaction history

Unified Wallet Structure

When you create a Monei account, you get one unified wallet with three subwallets:

Fiat Subwallet

Nigerian Naira balance with virtual account number for deposits

EVM Subwallet

Single address for all EVM chains (Ethereum, BSC, Polygon, Base, Arbitrum, Optimism)

Solana Subwallet

Separate address for Solana and SPL tokens
All subwallets are managed automatically. You don’t create or delete them individually.

Get Wallet Information

Complete Wallet Overview

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('Total Subwallets:', wallet.subwallets.length);

// Access each subwallet
wallet.subwallets.forEach(subwallet => {
  console.log('\nSubwallet Type:', subwallet.type);
  console.log('Chain:', subwallet.chain || 'Fiat');
  console.log('Balance:', subwallet.balance);
  
  if (subwallet.publicAddress) {
    console.log('Address:', subwallet.publicAddress);
  }
  
  if (subwallet.virtualAccount) {
    console.log('Virtual Account:', subwallet.virtualAccount.accountNumber);
    console.log('Bank:', subwallet.virtualAccount.bankName);
  }
});
Response Structure:
{
  "statusCode": 200,
  "message": "User wallet retreived succesfully",
  "data": {
    "nairaBalance": "1805.00",
    "subwallets": [
      {
        "id": "fiat-subwallet-id",
        "type": "FIAT",
        "currency": "NGN",
        "balance": 1805,
        "chain": null,
        "publicAddress": null,
        "virtualAccount": {
          "accountNumber": "9907581802",
          "bankName": "Indulge MFB",
          "accountName": "John Doe"
        }
      },
      {
        "id": "evm-subwallet-id",
        "type": "CRYPTO",
        "currency": "ETH",
        "balance": 0.00008,
        "chain": "EVM",
        "publicAddress": "0x4e7859f17B7A6b3D440D444b3e2157e3806EDA23",
        "evmPortfolio": {
          "totalValueUSD": 125.50,
          "networks": [
            {
              "chainId": 56,
              "name": "BSC",
              "nativeBalance": 0.05,
              "tokens": [
                {
                  "symbol": "USDT",
                  "balance": 100,
                  "valueUSD": 100
                }
              ]
            }
          ]
        }
      },
      {
        "id": "solana-subwallet-id",
        "type": "CRYPTO",
        "currency": "",
        "balance": 0,
        "chain": "SOLANA",
        "publicAddress": "6E5g2d1roqFZqL1eQay6Us29hzUKn52Ren5jRiiL3Qi",
        "solPortfolio": {
          "nativeBalance": 0.5,
          "nativeBalanceUsd": 75.50,
          "totalValueUsd": 75.50
        }
      }
    ]
  }
}

Fiat Subwallet (Naira)

Virtual Account

Your Naira subwallet includes a virtual account number for receiving deposits.
// Get wallet info
const wallet = await monei.wallet.me();

// Find fiat subwallet
const fiatWallet = wallet.subwallets.find(w => w.type === 'FIAT');

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

// Share these details to receive Naira
console.log('\nShare with sender:');
console.log(`Bank: ${fiatWallet.virtualAccount.bankName}`);
console.log(`Account: ${fiatWallet.virtualAccount.accountNumber}`);
console.log(`Name: ${fiatWallet.virtualAccount.accountName}`);

Deposit Naira

To deposit Naira into your wallet:
1

Get Virtual Account

Retrieve your virtual account details from wallet info
2

Make Bank Transfer

Transfer Naira from any Nigerian bank to your virtual account
  • Bank: Indulge MFB (or as shown)
  • Account Number: Your unique virtual account
  • Account Name: Your registered name
3

Automatic Credit

Your Monei wallet is credited automatically within seconds
4

Verify Balance

const wallet = await monei.wallet.me();
console.log('Updated Balance:', wallet.nairaBalance);
Deposits are processed instantly. No fees for deposits via virtual account.

EVM Subwallet

One address for all EVM chains - no need to manage multiple addresses.

Get EVM Address

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

// Find EVM subwallet
const evmWallet = wallet.subwallets.find(w => w.chain === 'EVM');

console.log('EVM Address:', evmWallet.publicAddress);
console.log('Works on all chains:');
console.log('- Ethereum');
console.log('- BSC');
console.log('- Polygon');
console.log('- Base');
console.log('- Arbitrum');
console.log('- Optimism');

Get Portfolio by Network

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

console.log('BSC Portfolio:');
console.log('Native BNB:', bscPortfolio.nativeToken.balance);
console.log('Total Value:', bscPortfolio.totalPortfolioValueUSD);

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

// Get portfolio for all networks
const networks = [1, 56, 137, 8453, 42161, 10]; // ETH, BSC, Polygon, Base, Arbitrum, Optimism

for (const chainId of networks) {
  const portfolio = await monei.evm.getPortfolio(chainId);
  console.log(`\n${portfolio.networkName}:`);
  console.log(`Total: $${portfolio.totalPortfolioValueUSD}`);
}

Receive EVM Tokens

To receive tokens on any EVM chain:
1

Get Your Address

const wallet = await monei.wallet.me();
const evmWallet = wallet.subwallets.find(w => w.chain === 'EVM');
console.log('Address:', evmWallet.publicAddress);
2

Share Address

Share your EVM address with the sender
Verify the network! Make sure sender is sending on a supported network (Ethereum, BSC, Polygon, Base, Arbitrum, Optimism)
3

Wait for Confirmations

Tokens appear after network confirmations:
  • BSC: ~45 seconds
  • Polygon: ~4 minutes
  • Ethereum: ~3 minutes
  • Base/Arbitrum/Optimism: ~1-2 minutes
4

Verify Receipt

const portfolio = await monei.evm.getPortfolio(chainId);
console.log('Updated balance:', portfolio.tokens);

Solana Subwallet

Separate wallet for Solana ecosystem.

Get Solana Address

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

// Find Solana subwallet
const solWallet = wallet.subwallets.find(w => w.chain === 'SOLANA');

console.log('Solana Address:', solWallet.publicAddress);
console.log('Share this to receive SOL or SPL tokens');

Get Solana Portfolio

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

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

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

Total Portfolio Value

Get Combined Portfolio

// Calculate total portfolio value across all chains
const wallet = await monei.wallet.me();

let totalUSD = 0;

// Add Naira (convert to USD if needed)
const nairaInUSD = wallet.nairaBalance / 1600; // Approximate conversion
totalUSD += nairaInUSD;

// Add EVM portfolio
const evmWallet = wallet.subwallets.find(w => w.chain === 'EVM');
if (evmWallet?.evmPortfolio) {
  totalUSD += evmWallet.evmPortfolio.totalValueUSD;
}

// Add Solana portfolio
const solWallet = wallet.subwallets.find(w => w.chain === 'SOLANA');
if (solWallet?.solPortfolio) {
  totalUSD += solWallet.solPortfolio.totalValueUsd;
}

console.log('Total Portfolio Value: $', totalUSD.toFixed(2));

// Breakdown
console.log('\nBreakdown:');
console.log(`Naira: ₦${wallet.nairaBalance} (~$${nairaInUSD.toFixed(2)})`);
console.log(`EVM: $${evmWallet?.evmPortfolio?.totalValueUSD || 0}`);
console.log(`Solana: $${solWallet?.solPortfolio?.totalValueUsd || 0}`);

Wallet Security

How Monei protects your wallet:
  • 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
  • 24/7 monitoring
You never handle private keys - Monei manages them securely.
Multiple layers of protection:
  • API key authentication
  • Transaction PIN for withdrawals
  • Two-factor authentication (2FA)
  • Session management
  • IP whitelisting (enterprise)
  • Biometric authentication (mobile)
Track all wallet activity:
  • Real-time balance updates
  • Transaction notifications (email, SMS, push)
  • Webhook events for automation
  • Login alerts from new devices
  • Unusual activity warnings
Account recovery options:
  • Email/phone verification
  • KYC document verification
  • Support team assistance
  • Multi-device access
Because Monei is custodial, you can recover wallet access through KYC verification.

Transaction History

Get Wallet Transactions

// Get all wallet transactions
const transactions = await monei.transactions.getAll({
  page: 1,
  limit: 20,
  type: 'all' // 'fiat', 'crypto', 'offramp'
});

console.log('Total Transactions:', transactions.total);
console.log('Current Page:', transactions.page);

transactions.data.forEach(tx => {
  console.log(`\n${tx.type}: ₦${tx.amount}`);
  console.log(`Status: ${tx.status}`);
  console.log(`Date: ${tx.createdAt}`);
  console.log(`ID: ${tx.id}`);
});

// Filter by date range
const filtered = await monei.transactions.getAll({
  startDate: '2024-01-01',
  endDate: '2024-12-31',
  status: 'completed'
});

Best Practices

Regular Balance Checks

Monitor your wallet balances regularly to track deposits and withdrawals

Verify Addresses

Always double-check addresses before sharing for deposits

Keep Records

Save transaction IDs and receipts for your records

Enable Notifications

Turn on transaction notifications to stay informed

Common Operations

  1. Get virtual account details
  2. Transfer from any Nigerian bank
  3. Funds credited automatically
  4. No fees for deposits

Next Steps

User Account

Manage your account profile and KYC

Naira Wallet Operations

Learn about Naira deposits and payouts

EVM Operations

Detailed guide on EVM wallet operations

Solana Operations

Complete Solana wallet guide