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 Offramp Services provides a full suite of services for converting crypto to fiat, tracking transactions, and managing payout accounts. Included services:
  • Exchange — retrieve assets, get quotes, and initiate swaps
  • Ledger — view transaction history and track orders
  • Payouts — retrieve supported banks and verify bank accounts
All services require a properly configured MoneiClient instance.
Note: All methods return response objects with attributes accessible via dot notation (e.g., assets.data, quote.fiat_amount).

Offramp Exchange

monei.offramp_exchange allows you to retrieve available assets, get crypto-to-fiat quotes, and initiate swaps.

Get Offramp Assets

Retrieve a list of assets available for offramp transactions.
assets = monei.offramp_exchange.get_assets()

print(assets)

Get Crypto-to-Fiat Quote

Retrieve a quote for swapping crypto to fiat.
quote_request = {
    "crypto": "USDT",
    "fiat": "NGN",
    "amount": 100
}

quote = monei.offramp_exchange.get_quote(quote_request)

print(quote)

Initiate Swap

Initiate a crypto-to-fiat swap.
swap_data = {
    "crypto": "USDT",
    "fiat": "NGN",
    "amount": 100,
    "destination_bank_account": "1234567890"
}

order = monei.offramp_exchange.initiate_swap(swap_data)

print(order)

Offramp Ledger

monei.offramp_ledger provides methods to track transaction history and order statuses.

Get Offramp Transactions

Retrieve a paginated list of offramp transactions.
request_data = {
    "user_id": "user-123",
    "page": 1,
    "limit": 10
}

transactions = monei.offramp_ledger.get_transactions(request_data)

print(transactions)

Track Order

Track an individual order by reference.
reference = "order-123"

order_details = monei.offramp_ledger.track_order(reference)

print(order_details)

Offramp Payouts

monei.offramp_payouts provides methods to retrieve supported banks and verify payout accounts.

Get Offramp Banks

Retrieve a list of supported payout banks.
banks = monei.offramp_payouts.get_banks()

print(banks)

Verify Offramp Bank Account

Verify a bank account before initiating a payout.
verify_data = {
    "account_number": "0123456789",
    "bank_code": "057"
}

verification = monei.offramp_payouts.verify_bank_account(verify_data)

print(verification)

Working with Response Objects

All methods return objects with attribute access:
# Get assets response
assets = monei.offramp_exchange.get_assets()
for asset in assets.data:
    print(asset.symbol)       # Asset symbol (e.g., "USDT")
    print(asset.name)         # Asset name (e.g., "Tether USD")
    print(asset.decimals)     # Token decimals
    print(asset.min_amount)   # Minimum swap amount
    print(asset.max_amount)   # Maximum swap amount

# Get quote response
quote = monei.offramp_exchange.get_quote({
    "crypto": "USDT",
    "fiat": "NGN",
    "amount": 100
})
print(quote.crypto_amount)     # Amount of crypto to send
print(quote.fiat_amount)       # Expected fiat amount
print(quote.exchange_rate)     # Exchange rate
print(quote.fee)               # Service fee
print(quote.total_amount)      # Total fiat after fees
print(quote.expires_at)        # Quote expiration time

# Initiate swap response
order = monei.offramp_exchange.initiate_swap({
    "crypto": "USDT",
    "fiat": "NGN",
    "amount": 100,
    "destination_bank_account": "1234567890"
})
print(order.id)                 # Order ID
print(order.reference)          # Order reference
print(order.status)             # Order status
print(order.crypto_amount)      # Crypto amount
print(order.fiat_amount)        # Fiat amount
print(order.bank_account)       # Destination bank account
print(order.created_at)         # Creation date

# Get transactions response
transactions = monei.offramp_ledger.get_transactions({
    "user_id": "user-123",
    "page": 1,
    "limit": 10
})
for tx in transactions.data:
    print(tx.id)                # Transaction ID
    print(tx.reference)         # Transaction reference
    print(tx.type)              # Transaction type
    print(tx.crypto_amount)     # Crypto amount
    print(tx.fiat_amount)       # Fiat amount
    print(tx.status)            # Transaction status
    print(tx.created_at)        # Creation date
print(transactions.pagination)  # Pagination info
print(transactions.pagination.total)     # Total count
print(transactions.pagination.page)      # Current page
print(transactions.pagination.limit)     # Items per page

# Track order response
order_details = monei.offramp_ledger.track_order("order-123")
print(order_details.id)            # Order ID
print(order_details.reference)     # Order reference
print(order_details.status)        # Current status
print(order_details.crypto_amount) # Crypto amount
print(order_details.fiat_amount)   # Fiat amount
print(order_details.bank_account)  # Destination bank account
print(order_details.tx_hash)       # Transaction hash
print(order_details.confirmations) # Block confirmations
print(order_details.updated_at)    # Last update date

# Get banks response
banks = monei.offramp_payouts.get_banks()
for bank in banks.data:
    print(bank.name)          # Bank name
    print(bank.code)          # Bank code
    print(bank.country)       # Country code

# Verify bank account response
verification = monei.offramp_payouts.verify_bank_account({
    "account_number": "0123456789",
    "bank_code": "057"
})
print(verification.account_number)  # Verified account number
print(verification.account_name)    # Account holder name
print(verification.bank_name)       # Bank name
print(verification.bank_code)       # Bank code
print(verification.verified)        # Verification status

Response Types

AssetDto

{
    "symbol": str,
    "name": str,
    "decimals": int,
    "min_amount": float,
    "max_amount": float
}

OfframpQuoteResponseDto

{
    "crypto_amount": float,
    "fiat_amount": float,
    "exchange_rate": float,
    "fee": float,
    "total_amount": float,
    "expires_at": str
}

OfframpOrderResponseDto

{
    "id": str,
    "reference": str,
    "status": "pending" | "processing" | "completed" | "failed",
    "crypto_amount": float,
    "fiat_amount": float,
    "bank_account": str,
    "created_at": str
}

OfframpTransactionDto

{
    "id": str,
    "reference": str,
    "type": str,
    "crypto_amount": float,
    "fiat_amount": float,
    "status": str,
    "created_at": str
}

BankDto

{
    "name": str,
    "code": str,
    "country": str
}

VerifyBankAccountResponseDto

{
    "account_number": str,
    "account_name": str,
    "bank_name": str,
    "bank_code": str,
    "verified": bool
}

Error Handling

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

try:
    quote = monei.offramp_exchange.get_quote({
        "crypto": "USDT",
        "fiat": "NGN",
        "amount": 100
    })
    print(quote.fiat_amount)
except MoneiError as err:
    print(err.status_code)  # HTTP status code
    print(err.message)      # Error message
    print(err.code)         # Error code

Service Overview

ServiceMethodDescription
Exchangeget_assets()Retrieve available assets
get_quote(request)Get crypto-to-fiat quote
initiate_swap(data)Initiate crypto-to-fiat swap
Ledgerget_transactions(request)Get offramp transactions
track_order(reference)Track order by reference
Payoutsget_banks()Get supported payout banks
verify_bank_account(data)Verify bank account

Notes

  • All requests require a properly configured MoneiClient with authentication
  • Always validate input data and ensure the correct crypto/fiat codes before initiating swaps
  • Quotes expire after a certain period - obtain a fresh quote before swapping
  • Bank account verification is recommended before initiating payouts
  • All responses are strongly typed objects with attribute access