Skip to main content

Bill Payments

Pay utility bills, buy airtime, purchase data bundles, and more — all through a unified API backed by the Interswitch Quickteller network.

Supported Categories

CategoryExamples
ElectricityEko Electric, Ikeja Electric, Kano Electric, PHCN
TelecommunicationsMTN, Airtel, Glo, 9mobile
Airtime Top-upAll major networks
Data BundlesAll major networks
Cable TVDStv, GOtv, StarTimes
InternetSpectranet, Smile, IPNX
InsuranceVarious providers
EducationSchool fees, WAEC, JAMB
GovernmentTaxes, licenses, permits
WaterState water boards
Waste ManagementLAWMA, state agencies

Payment Flow

1. Browse categories          GET /api/v1/bill-payment/categories
2. Select provider GET /api/v1/bill-payment/categories/:code/providers
3. Get payment items GET /api/v1/bill-payment/providers/:billerId/items
4. Validate customer POST /api/v1/bill-payment/validate
5. Make payment POST /api/v1/bill-payment/pay
6. Check status GET /api/v1/bill-payment/:id

Step 1: Browse Categories

GET /api/v1/bill-payment/categories
{
"success": true,
"data": [
{ "code": "electricity", "name": "Electricity", "description": "Power utility bills" },
{ "code": "airtime", "name": "Airtime", "description": "Mobile airtime top-up" },
{ "code": "data", "name": "Data", "description": "Mobile data bundles" },
{ "code": "cabletv", "name": "Cable TV", "description": "TV subscriptions" }
]
}

Step 2: Get Providers

GET /api/v1/bill-payment/categories/electricity/providers
{
"success": true,
"data": [
{ "billerId": "biller_001", "name": "Eko Electric (EKEDC)", "code": "ekedc" },
{ "billerId": "biller_002", "name": "Ikeja Electric", "code": "ikedc" }
]
}

Step 3: Get Payment Items

GET /api/v1/bill-payment/providers/biller_001/items

Returns available payment plans (e.g., prepaid vs. postpaid, token amounts).

Step 4: Validate Customer

Before paying, validate the customer reference (meter number, phone number, smart card number, etc.):

POST /api/v1/bill-payment/validate
{
"billerId": "biller_001",
"customerReference": "04567890123"
}

Response:

{
"success": true,
"data": {
"customerName": "JOHN DOE",
"customerReference": "04567890123",
"outstandingBalance": 15000.00
}
}

Step 5: Make Payment

curl -X POST https://api.korastratum.com/api/v1/banking/bill-payment/pay \
-H "Authorization: Bearer $TOKEN" \
-H "X-Tenant-ID: fmfb" \
-H "Content-Type: application/json" \
-d '{
"billerId": "biller_001",
"customerReference": "04567890123",
"amount": 15000.00,
"description": "Electricity prepaid"
}'

Response:

{
"success": true,
"data": {
"paymentId": "p1a2b3c4-...",
"reference": "BP20260227001234",
"billerReference": "ISW123456",
"status": "completed",
"amount": 15000.00,
"fees": 100.00,
"totalAmount": 15100.00,
"customerName": "JOHN DOE",
"timestamp": "2026-02-27T14:22:00Z"
}
}

Airtime & Data

For quick airtime and data purchases, use the mobile money endpoints:

Buy Airtime

POST /api/v1/mobile-money/airtime
{
"phoneNumber": "08012345678",
"amount": 5000.00,
"network": "mtn"
}

Buy Data Bundle

POST /api/v1/mobile-money/data
{
"phoneNumber": "08012345678",
"bundleId": "mtn_5gb_30days",
"network": "mtn"
}

List Providers

GET /api/v1/mobile-money/providers

Payment History

GET /api/v1/bill-payment/history

Returns all bill payments with pagination. Filter by date range, category, or status.

GET /api/v1/bill-payment/history?from=2026-01-01&to=2026-02-28&category=electricity

Payment Details

GET /api/v1/bill-payment/:id

Returns full payment details including biller reference, receipt, and status.

Provider Failover

Bill payment processing uses a circuit breaker:

  • Primary: Interswitch Quickteller API v5
  • Failover: NIBSS (if configured)
  • Failover trigger: 2 consecutive failures
  • Retry: Up to 5 status polling attempts after submission

Next Steps

  • Transfers — Money transfers and beneficiary management.
  • Webhooks — Get notified when payments complete.
  • Error Codes — Payment-specific error codes.