Skip to main content

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

The Wallet Services provides a comprehensive set of services for managing wallets, checking balances, transferring funds, and tracking transactions. Included services:
  • Account — view wallet info and create virtual accounts
  • Deposit — fund Naira wallet via multiple channels
  • Payout — send Naira to bank accounts or other Monei users
  • Utility — look up banks and verify account numbers
All services require a properly configured MoneiClient instance.
Note: All methods return response objects with attributes accessible via dot notation (e.g., wallet.balance, deposit.reference).

Account Service

monei.account provides methods to view wallet balances and create virtual bank accounts for deposits.

Get Wallet Info

# Optionally scope to a specific EVM chain
wallet = monei.account.me(56)  # BSC chain ID
print(wallet.balance, wallet.address)

Create Virtual Account

Virtual accounts give users a dedicated Nigerian bank account number to fund their Naira wallet.
account = monei.account.create_virtual_account(
    sub_wallet_id="sub-wallet-id"
)

print(account.account_number)  # e.g. "0123456789"
print(account.bank_name)       # e.g. "Wema Bank"

Deposit Service

monei.deposit provides methods to fund the Naira wallet via multiple channels.

Initialize a Deposit

from monei import DEPOSIT_METHOD

deposit = monei.deposit.initialize(
    DEPOSIT_METHOD.BANK_TRANSFER,
    amount=5000,           # Amount in kobo
    currency="NGN",
    sub_wallet_id="sub-wallet-id"
)

print(deposit.reference, deposit.payment_url)

Deposit with Saved Payment Method

deposit = monei.deposit.with_payment_method(
    amount=5000,
    currency="NGN",
    payment_method_id="pm-id",
    sub_wallet_id="sub-wallet-id"
)

print(deposit.reference, deposit.status)

Authorize a Deposit (OTP / 3DS)

monei.deposit.authorize(
    reference=deposit.reference,
    otp="123456"
)
Share a payment link so anyone can fund your wallet without an account.
link = monei.deposit.generate_payment_link(
    amount=10000,
    currency="NGN",
    description="Invoice #42",
    sub_wallet_id="sub-wallet-id"
)

print(link.url)

Check Deposit Status

status = monei.deposit.get_status(deposit.reference)
print(status.status)  # "pending" | "successful" | "failed"

Payout Service

monei.payout provides methods to send Naira to bank accounts or other Monei users.

Bank Transfer

transfer = monei.payout.bank_transfer(
    amount=5000,
    bank_code="GTBINGLA",
    account_number="0123456789",
    account_name="John Doe",
    narration="Payment for services",
    sub_wallet_id="sub-wallet-id"
)

print(transfer.reference, transfer.status)

Peer Transfer (Monei-to-Monei)

Send funds instantly to another Monei user’s wallet — zero fees, instant settlement.
transfer = monei.payout.peer_transfer(
    amount=2000,
    recipient_tag="@john",   # or email / user ID
    narration="Lunch split",
    sub_wallet_id="sub-wallet-id"
)

print(transfer.reference, transfer.status)

Wallet Utility Service

monei.utility provides methods to look up banks and verify account numbers before sending.

Get All Banks

banks_response = monei.utility.get_banks()

for bank in banks_response.banks:
    print(bank.name, bank.code)

Verify Bank Account

Always call this before a bank transfer to confirm the account name matches.
verified = monei.utility.verify_bank_account(
    account_number="0123456789",
    bank_code="GTBINGLA"
)

print(verified.account_name)  # "JOHN ADEWALE DOE"

Working with Response Objects

All methods return objects with attribute access:
# Account response
wallet = monei.account.me(56)
print(wallet.balance)      # Wallet balance
print(wallet.address)      # Wallet address
print(wallet.currency)     # Currency code

# Virtual account response
account = monei.account.create_virtual_account(sub_wallet_id="...")
print(account.account_number)  # Virtual account number
print(account.bank_name)       # Bank name
print(account.account_name)    # Account holder name

# Deposit response
deposit = monei.deposit.initialize(DEPOSIT_METHOD.BANK_TRANSFER, ...)
print(deposit.reference)   # Deposit reference
print(deposit.payment_url) # Payment URL
print(deposit.status)      # Deposit status

# Payment link response
link = monei.deposit.generate_payment_link(...)
print(link.url)            # Payment link URL
print(link.reference)      # Payment reference

# Bank transfer response
transfer = monei.payout.bank_transfer(...)
print(transfer.reference)  # Transfer reference
print(transfer.status)     # Transfer status
print(transfer.fee)        # Transfer fee

# Peer transfer response
peer_transfer = monei.payout.peer_transfer(...)
print(peer_transfer.reference)  # Transfer reference
print(peer_transfer.status)     # Transfer status

# Banks response
banks_response = monei.utility.get_banks()
for bank in banks_response.banks:
    print(bank.name)   # Bank name
    print(bank.code)   # Bank code

# Verified account response
verified = monei.utility.verify_bank_account(...)
print(verified.account_name)   # Verified account name
print(verified.account_number) # Account number
print(verified.bank_name)      # Bank name

Error Handling

All wallet service calls may raise an exception if the request fails.
from monei import MoneiError

try:
    wallet = monei.account.me(56)
    print(wallet.balance)
except MoneiError as err:
    print(err.status_code)  # HTTP status code
    print(err.message)      # Error message
    print(err.code)         # Error code

Service Overview

ServiceMethodDescription
Accountme(chain_id=None)Get wallet info
create_virtual_account(sub_wallet_id)Create virtual bank account
Depositinitialize(method, amount, currency, sub_wallet_id)Initialize a deposit
with_payment_method(amount, currency, payment_method_id, sub_wallet_id)Deposit with saved payment method
authorize(reference, otp)Authorize deposit with OTP
generate_payment_link(amount, currency, description, sub_wallet_id)Generate payment link
get_status(reference)Check deposit status
Payoutbank_transfer(amount, bank_code, account_number, account_name, narration, sub_wallet_id)Send bank transfer
peer_transfer(amount, recipient_tag, narration, sub_wallet_id)Send peer-to-peer transfer
Utilityget_banks()Get all supported banks
verify_bank_account(account_number, bank_code)Verify bank account details

Notes

  • All methods require a properly configured MoneiClient instance with authentication
  • Amounts are in kobo (1 NGN = 100 kobo)
  • Virtual accounts are only available for Naira wallets
  • Bank transfers require verification before processing
  • All responses are strongly typed objects with attribute access