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 Bills Services provides a full suite of methods to manage bill payments: Included services:
  • Discovery: available billers and biller items
  • Payment: for airtime, mobile data, electricity, and cable TV
  • Validation: Validate customer bill details before payment
  • Records: Retrieve bill payment records and generate receipts
All services require a properly configured MoneiClient instance.
Note: All methods return response objects with attributes accessible via dot notation (e.g., response.status, response.data).

Bill Discovery

Get Biller Items

Retrieve available biller items based on bill category and biller name.
category = "electricity"  # e.g. electricity, airtime, data
biller_name = "ikeja-electric"

items = monei.bills_discovery.get_biller(category, biller_name)

print(items.data)

Get Electricity Billers

Retrieve a list of available electricity billers.
billers = monei.bills_discovery.get_electricity_biller()

print(billers.data)

Bill Payments

Buy Airtime

airtime_data = {
    "phone_number": "+2348012345678",
    "amount": 1000,
    "network": "mtn"
}

response = monei.bills_pay.buy_airtime(airtime_data)

print(response.reference)
print(response.status)
print(response.message)

Buy Mobile Data

data_data = {
    "phone_number": "+2348012345678",
    "amount": 2000,
    "network": "glo",
    "data_plan": "2GB"
}

response = monei.bills_pay.buy_mobile_data(data_data)

print(response.transaction_id)
print(response.amount)

Buy Electricity

electricity_data = {
    "meter_number": "1234567890",
    "amount": 5000,
    "meter_type": "prepaid",
    "service_provider": "ikeja-electric"
}

response = monei.bills_pay.buy_electricity(electricity_data)

print(response.reference)
print(response.units_purchased)

Subscribe to Cable TV

cable_data = {
    "smart_card_number": "1234567890",
    "bouquet": "dstv-padi",
    "service_provider": "dstv"
}

response = monei.bills_pay.subscribe_cable_tv(cable_data)

print(response.reference)
print(response.expiration_date)

Bill Validation

Validate customer bill information before making a payment.
validate_data = {
    "customer_id": "1234567890",
    "biller_code": "ikeja-electric",
    "amount": 5000
}

response = monei.bills_validation.validate(validate_data)

print(response.customer_name)
print(response.customer_address)
print(response.due_date)

Bill Records Service

Retrieve bill payment history and receipts.

Get All Bills

Retrieve a paginated list of bill payment records.
bills = monei.bills_record.get_bills()

# Access paginated response
transactions = bills.data.transactions
pagination = bills.data.pagination

for bill in transactions:
    print(bill.reference, bill.amount, bill.status)
    
print(f"Page {pagination.page} of {pagination.total_pages}")

Get Bill by Reference

Retrieve a bill record using a unique reference.
reference = "TXN-123456"

bill = monei.bills_record.get_bill_by_reference(reference)

print(bill.reference)
print(bill.amount)
print(bill.status)
print(bill.created_at)

Generate Receipt

Generate a receipt for a specific bill transaction.
transaction_id = "transaction-id"

receipt = monei.bills_record.generate_receipt(transaction_id)

print(receipt.receipt_url)
print(receipt.receipt_pdf)

Working with Response Objects

Since all methods return objects with attributes, here’s how to access the data:
# Successful payment response
response = monei.bills_pay.buy_airtime(airtime_data)

# Access attributes using .
if response.status == "success":
    reference = response.reference
    amount = response.amount
    print(f"Payment successful! Reference: {reference}, Amount: {amount}")

# Access nested data
bills = monei.bills_record.get_bills()
transactions = bills.data.transactions

for transaction in transactions:
    print(transaction.reference, transaction.amount)

# Handle optional attributes
units = getattr(response, "units_purchased", 0)

Notes

  • All methods require a properly configured MoneiClient instance with authentication.
  • DTOs used by the SDK include:
    • BillerItemsResponseDto
    • ElectricityBillerResponseDto
    • PaginatedBillResponseDto
    • BillResponseDto
    • AirtimePurchaseDto
    • DataPurchaseDto
    • ElectricityPaymentDto
    • CableTvPaymentDto
    • BillPaymentResponseDto
    • ValidateBillDto
  • Validate bills before payment to avoid failed or incorrect transactions.
  • All responses are strongly typed objects with attribute access, and some may include nested objects depending on the biller.