Skip to main content

Wallet Account Service

monei.wallet_account, view wallet balances and create virtual bank accounts.

Get Wallet Info

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

Create Virtual Account

account = monei.wallet_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, fund the Naira wallet via multiple channels.

Initialize a Deposit

from monei.enums import DepositMethod

deposit = monei.deposit.initialize_deposit(
    method=DepositMethod.BANK_TRANSFER,
    deposit_data={
        "amount": 5000,
        "currency": "NGN",
        "sub_wallet_id": "sub-wallet-id",
    }
)

print(deposit.reference, deposit.payment_url)

Deposit with Saved Payment Method

deposit = monei.deposit.deposit_with_payment_method({
    "amount": 5000,
    "currency": "NGN",
    "payment_method_id": "pm-id",
    "sub_wallet_id": "sub-wallet-id",
})

Authorize a Deposit (OTP / 3DS)

monei.deposit.authorize_deposit({
    "reference": deposit.reference,
    "otp": "123456",
})
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, 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)

monei.payout.peer_transfer({
    "amount": 2000,
    "recipient_tag": "@john",
    "narration": "Lunch split",
    "sub_wallet_id": "sub-wallet-id",
})

Wallet Utility Service

monei.wallet_utility, look up banks and verify account numbers before sending.

Get All Banks

response = monei.wallet_utility.get_banks()
for bank in response.banks:
    print(bank.name, bank.code)

Verify Bank Account

verified = monei.wallet_utility.verify_bank_account({
    "account_number": "0123456789",
    "bank_code": "GTBINGLA",
})

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