Nurenta
API Docs
v1.0

Nurenta Public API

A single API to handle airtime, data, cable TV, electricity, betting top-ups and more — all from your application.

🇳🇬 Nigeria-focused ⚡ Real-time processing 🔒 Secure key auth 🧪 Sandbox available
📱

Airtime & Data

Top up any Nigerian network — MTN, GLO, Airtel, 9Mobile — instantly.

📺

Cable TV

Pay for DSTV, GOTV, and Startimes subscriptions with one API call.

Electricity

Purchase prepaid or postpaid electricity units across all DISCOs in Nigeria.

🎯

Betting & More

Fund Bet9ja, SportyBet, 1xBet and other platforms directly from your wallet.

🎓

Education

Purchase WAEC, NECO, and JAMB PINs for students — instantly delivered.

Quick Start

Get up and running in three steps.

💡 Base URL: All endpoints are relative to https://api.nurenta.ng/api/public/v1
⚠️ Rate limits: The API allows 100–200 requests per minute. Exceeding this may result in temporary throttling.

Authentication

Every request to the Nurenta API must include your credentials in the request headers.

🔑 You'll receive two keys: a Public Key (starts with pk_) and a Secret Key (starts with sk_). Use the sandbox prefix for testing, and live prefix for production.

Required Headers

HeaderValue
X-Public-KeyYour public key (pk_sandbox_* or pk_live_*)
X-Secret-KeyYour secret key (sk_sandbox_* or sk_live_*)
X-Environmentsandbox or live
Content-Typeapplication/json
Acceptapplication/json
⚠️ Never expose your Secret Key in client-side code or public repositories. Always use it server-side.

Wallet Balance

Check your API wallet balance and get a summary of today's and this month's transactions.

GET

Get Wallet Balance

/wallet/balance

Returns your current wallet balance in NGN, along with a summary of transactions made today and this month. This is a great first call to verify your credentials are working.

curl --location 'https://api.nurenta.ng/api/public/v1/wallet/balance' \
--header 'X-Public-Key: pk_sandbox_YOUR_KEY' \
--header 'X-Secret-Key: sk_sandbox_YOUR_SECRET' \
--header 'X-Environment: sandbox' \
--header 'Accept: application/json'
const response = await fetch(
  'https://api.nurenta.ng/api/public/v1/wallet/balance',
  {
    method: 'GET',
    headers: {
      'X-Public-Key': 'pk_sandbox_YOUR_KEY',
      'X-Secret-Key': 'sk_sandbox_YOUR_SECRET',
      'X-Environment': 'sandbox',
      'Accept': 'application/json'
    }
  }
);
const data = await response.json();
console.log(data);
200 OK Example Response
{
  "status": "success",
  "message": "Wallet balance retrieved successfully",
  "data": {
    "balance": 10000.00,
    "currency": "NGN"
  }
}

Transaction History

Retrieve a list of past transactions, with optional filters by type, status, and date.

GET

Get All Transactions

/transactions/history?limit=50

Returns your full transaction history. Use the limit parameter to control how many records are returned at once.

Parameter Type Required Description
limit number Optional Max records to return. Default is 50.
curl --location \
  'https://api.nurenta.ng/api/public/v1/transactions/history?limit=50' \
--header 'X-Public-Key: pk_sandbox_YOUR_KEY' \
--header 'X-Secret-Key: sk_sandbox_YOUR_SECRET' \
--header 'X-Environment: sandbox' \
--header 'Accept: application/json'
const response = await fetch(
  'https://api.nurenta.ng/api/public/v1/transactions/history?limit=50',
  {
    method: 'GET',
    headers: {
      'X-Public-Key': 'pk_sandbox_YOUR_KEY',
      'X-Secret-Key': 'sk_sandbox_YOUR_SECRET',
      'X-Environment': 'sandbox',
      'Accept': 'application/json'
    }
  }
);
const data = await response.json();
console.log(data);

Airtime Transactions

Filter your transaction history to show only airtime purchases.

GET

Get Airtime Transactions

/transactions/history?service_type=airtime&limit=20

Returns only airtime-related transactions. Use the service_type filter to narrow results by service.

Parameter Type Required Description
service_type string Required Set to airtime to filter by service type.
limit number Optional Max records to return.
curl --location \
  'https://api.nurenta.ng/api/public/v1/transactions/history?service_type=airtime&limit=20' \
--header 'X-Public-Key: pk_sandbox_YOUR_KEY' \
--header 'X-Secret-Key: sk_sandbox_YOUR_SECRET' \
--header 'X-Environment: sandbox' \
--header 'Accept: application/json'
const params = new URLSearchParams({
  service_type: 'airtime',
  limit: 20
});
const response = await fetch(
  `https://api.nurenta.ng/api/public/v1/transactions/history?${params}`,
  {
    headers: {
      'X-Public-Key': 'pk_sandbox_YOUR_KEY',
      'X-Secret-Key': 'sk_sandbox_YOUR_SECRET',
      'X-Environment': 'sandbox',
      'Accept': 'application/json'
    }
  }
);
const data = await response.json();

Completed Transactions

Filter transaction history to show only successfully completed transactions.

GET

Get Completed Transactions

/transactions/history?status=completed&limit=30
Parameter Type Required Description
status string Required Set to completed to show only successful transactions.
limit number Optional Max records to return.
curl --location \
  'https://api.nurenta.ng/api/public/v1/transactions/history?status=completed&limit=30' \
--header 'X-Public-Key: pk_sandbox_YOUR_KEY' \
--header 'X-Secret-Key: sk_sandbox_YOUR_SECRET' \
--header 'X-Environment: sandbox' \
--header 'Accept: application/json'
const params = new URLSearchParams({
  status: 'completed',
  limit: 30
});
const response = await fetch(
  `https://api.nurenta.ng/api/public/v1/transactions/history?${params}`,
  {
    headers: {
      'X-Public-Key': 'pk_sandbox_YOUR_KEY',
      'X-Secret-Key': 'sk_sandbox_YOUR_SECRET',
      'X-Environment': 'sandbox',
      'Accept': 'application/json'
    }
  }
);
const data = await response.json();

Transactions by Date Range

Filter your transaction history by a specific date range.

GET

Get Transactions by Date Range

/transactions/history?date_from=YYYY-MM-DD&date_to=YYYY-MM-DD
Parameter Type Required Description
date_from string Required Start date in YYYY-MM-DD format.
date_to string Required End date in YYYY-MM-DD format.
limit number Optional Max records to return.
curl --location \
  'https://api.nurenta.ng/api/public/v1/transactions/history?date_from=2026-03-01&date_to=2026-03-31&limit=50' \
--header 'X-Public-Key: pk_sandbox_YOUR_KEY' \
--header 'X-Secret-Key: sk_sandbox_YOUR_SECRET' \
--header 'X-Environment: sandbox' \
--header 'Accept: application/json'
const params = new URLSearchParams({
  date_from: '2026-03-01',
  date_to: '2026-03-31',
  limit: 50
});
const response = await fetch(
  `https://api.nurenta.ng/api/public/v1/transactions/history?${params}`,
  {
    headers: {
      'X-Public-Key': 'pk_sandbox_YOUR_KEY',
      'X-Secret-Key': 'sk_sandbox_YOUR_SECRET',
      'X-Environment': 'sandbox',
      'Accept': 'application/json'
    }
  }
);
const data = await response.json();

Get Networks

Fetch the list of available mobile networks and their IDs. Use the returned network_id when purchasing airtime or data.

GET

Get Networks

/networks
💡Network IDs: 1 = MTN, 2 = GLO, 3 = Airtel, 4 = 9Mobile
curl --location \
  'https://api.nurenta.ng/api/public/v1/networks' \
--header 'X-Public-Key: pk_sandbox_YOUR_KEY' \
--header 'X-Secret-Key: sk_sandbox_YOUR_SECRET' \
--header 'X-Environment: sandbox' \
--header 'Content-Type: application/json' \
--header 'Accept: application/json'
const response = await fetch(
  'https://api.nurenta.ng/api/public/v1/networks',
  {
    method: 'GET',
    headers: {
      'X-Public-Key': 'pk_sandbox_YOUR_KEY',
      'X-Secret-Key': 'sk_sandbox_YOUR_SECRET',
      'X-Environment': 'sandbox',
      'Content-Type': 'application/json',
      'Accept': 'application/json'
    }
  }
);
const data = await response.json();
200 OK Example Response
{
  "status": true,
  "message": "Networks retrieved successfully",
  "data": [
    { "network_id": 1, "network_name": "MTN" },
    { "network_id": 2, "network_name": "AIRTEL" },
    { "network_id": 3, "network_name": "GLO" },
    { "network_id": 4, "network_name": "9MOBILE" }
  ]
}

Purchase Airtime

Top up a phone number with airtime on any supported Nigerian network.

POST

Purchase Airtime

/billpayments/airtime
Field Type Required Description
network_id number Required 1=MTN, 2=GLO, 3=Airtel, 4=9Mobile
phone_number string Required Nigerian phone number to recharge.
amount number Required Amount in NGN. Between ₦50 and ₦50,000.
reference string Optional Your unique reference for tracking this transaction.
curl --location \
  'https://api.nurenta.ng/api/public/v1/billpayments/airtime' \
--header 'Content-Type: application/json' \
--header 'Accept: application/json' \
--header 'X-Public-Key: pk_sandbox_YOUR_KEY' \
--header 'X-Secret-Key: sk_sandbox_YOUR_SECRET' \
--data '{
  "network_id": 1,
  "phone_number": "08012345678",
  "amount": 500,
  "reference": "AIR_1777600344"
}'
const response = await fetch(
  'https://api.nurenta.ng/api/public/v1/billpayments/airtime',
  {
    method: 'POST',
    headers: {
      'X-Public-Key': 'pk_sandbox_YOUR_KEY',
      'X-Secret-Key': 'sk_sandbox_YOUR_SECRET',
      'X-Environment': 'sandbox',
      'Content-Type': 'application/json',
      'Accept': 'application/json'
    },
    body: JSON.stringify({
      network_id: 1,
      phone_number: '08012345678',
      amount: 500,
      reference: 'AIR_1777600344'
    })
  }
);
const data = await response.json();
200 OK Example Response
{
  "status": true,
  "message": "Airtime recharge of ₦500 to 08012345678 was successful.",
  "data": {
    "transaction_reference": "APAIR-20260329-69C8E68E3851C",
    "transaction_no": "NUR202629030945029UGWC702",
    "network": "MTN",
    "phone_number": "08012345678",
    "amount": 500,
    "charged": 485,
    "discount": 15,
    "status": "completed",
    "wallet_balance": 4951.50
  }
}

Get Data Plans

Retrieve available mobile data bundle plans for a specific network. Use the returned plan_id when purchasing data.

POST

Get Data Plans by Network

/data/plans
Field Type Required Description
network_id number Required 1=MTN, 2=GLO, 3=Airtel, 4=9Mobile
curl --location \
  'https://api.nurenta.ng/api/public/v1/data/plans' \
--header 'X-Public-Key: pk_sandbox_YOUR_KEY' \
--header 'X-Secret-Key: sk_sandbox_YOUR_SECRET' \
--header 'X-Environment: sandbox' \
--header 'Content-Type: application/json' \
--data '{
  "network_id": 3
}'
const response = await fetch(
  'https://api.nurenta.ng/api/public/v1/data/plans',
  {
    method: 'POST',
    headers: {
      'X-Public-Key': 'pk_sandbox_YOUR_KEY',
      'X-Secret-Key': 'sk_sandbox_YOUR_SECRET',
      'X-Environment': 'sandbox',
      'Content-Type': 'application/json'
    },
    body: JSON.stringify({ network_id: 3 })
  }
);
const data = await response.json();
200 OK Example Response (truncated)
{
  "status": true,
  "message": "Data plans retrieved successfully",
  "data": {
    "network_id": 3,
    "network_name": "AIRTEL",
    "plans": [
      {
        "plan_id": "AIRTEL_DG_110MB_DAILY",
        "name": "110MB Daily Plan",
        "size": "110MB",
        "validity": "1 Day",
        "price": 100,
        "currency": "NGN"
      },
      {
        "plan_id": "AIRTEL_DG_500MB_1DAY",
        "name": "500MB 1-Day Plan",
        "size": "500MB",
        "validity": "1 Day",
        "price": 335,
        "currency": "NGN"
      }
      // ... more plans
    ]
  }
}

Purchase Data

Buy a mobile data bundle for any phone number on a supported network.

POST

Purchase Data Bundle

/billpayments/data
💡First call Get Data Plans to get the correct data_plan_id for your chosen network.
Field Type Required Description
network_id number Required 1=MTN, 2=GLO, 3=Airtel, 4=9Mobile
phone_number string Required Nigerian phone number to receive data.
data_plan_id string Required Plan ID from the Get Data Plans endpoint.
reference string Optional Your unique reference for this transaction.
curl --location \
  'https://api.nurenta.ng/api/public/v1/billpayments/data' \
--header 'X-Public-Key: pk_sandbox_YOUR_KEY' \
--header 'X-Secret-Key: sk_sandbox_YOUR_SECRET' \
--header 'X-Environment: sandbox' \
--header 'Content-Type: application/json' \
--data '{
  "network_id": 1,
  "phone_number": "08012345678",
  "data_plan_id": "MTN_DT_500MB_WK",
  "reference": "DATA_1777600344"
}'
const response = await fetch(
  'https://api.nurenta.ng/api/public/v1/billpayments/data',
  {
    method: 'POST',
    headers: {
      'X-Public-Key': 'pk_sandbox_YOUR_KEY',
      'X-Secret-Key': 'sk_sandbox_YOUR_SECRET',
      'X-Environment': 'sandbox',
      'Content-Type': 'application/json'
    },
    body: JSON.stringify({
      network_id: 1,
      phone_number: '08012345678',
      data_plan_id: 'MTN_DT_500MB_WK',
      reference: 'DATA_1777600344'
    })
  }
);
const data = await response.json();
200 OK Example Response
{
  "status": true,
  "message": "500MB DATA TRANSFER 7DAYS has been successfully purchased.",
  "data": {
    "transaction_reference": "APDAT-20260404-69D10365C8E00",
    "network": "MTN",
    "plan_name": "500MB DATA TRANSFER 7DAYS",
    "plan_size": "500MB",
    "validity": "7 Days",
    "phone_number": "08012345678",
    "amount": 250,
    "status": "completed",
    "wallet_balance": 4153.00
  }
}

Cable TV Providers

Retrieve the list of available cable TV providers. Use the returned cable_type_id in subsequent cable calls.

GET

Get Cable TV Providers

/cable/types
📺Supported providers: DSTV, GOtv, Startimes, and Showmax.
curl --location \
  'https://api.nurenta.ng/api/public/v1/cable/types' \
--header 'X-Public-Key: pk_sandbox_YOUR_KEY' \
--header 'X-Secret-Key: sk_sandbox_YOUR_SECRET' \
--header 'X-Environment: sandbox' \
--header 'Accept: application/json'
const response = await fetch(
  'https://api.nurenta.ng/api/public/v1/cable/types',
  {
    headers: {
      'X-Public-Key': 'pk_sandbox_YOUR_KEY',
      'X-Secret-Key': 'sk_sandbox_YOUR_SECRET',
      'X-Environment': 'sandbox',
      'Accept': 'application/json'
    }
  }
);
const data = await response.json();
200 OK Example Response
{
  "status": true,
  "message": "Cable TV types retrieved successfully",
  "data": [
    { "cable_type_id": 1, "name": "DSTV",      "identifier": "84ee2bdf5d224485b8afd050684cb863" },
    { "cable_type_id": 2, "name": "GOTV",      "identifier": "ae13ef30616a4735b93d6979f14e4c78" },
    { "cable_type_id": 3, "name": "STARTIMES", "identifier": "2f6a200cd4204ffba74d6bc5888e7f02" },
    { "cable_type_id": 4, "name": "SHOWMAX",   "identifier": "09awer00cd4204ffba74d6bc5888e7f02" }
  ]
}

Cable TV Plans

Fetch available subscription packages for a specific cable TV provider.

POST

Get Plans by Provider

/cable/plans
Field Type Required Description
cable_type_id number Required ID of the cable provider from Get Providers endpoint.
curl --location \
  'https://api.nurenta.ng/api/public/v1/cable/plans' \
--header 'X-Public-Key: pk_sandbox_YOUR_KEY' \
--header 'X-Secret-Key: sk_sandbox_YOUR_SECRET' \
--header 'X-Environment: sandbox' \
--header 'Content-Type: application/json' \
--data '{
  "cable_type_id": 3
}'
const response = await fetch(
  'https://api.nurenta.ng/api/public/v1/cable/plans',
  {
    method: 'POST',
    headers: {
      'X-Public-Key': 'pk_sandbox_YOUR_KEY',
      'X-Secret-Key': 'sk_sandbox_YOUR_SECRET',
      'X-Environment': 'sandbox',
      'Content-Type': 'application/json'
    },
    body: JSON.stringify({ cable_type_id: 3 })
  }
);
const data = await response.json();
200 OK Example Response
{
  "status": true,
  "message": "Cable plans retrieved successfully",
  "data": {
    "cable_type": "STARTIMES",
    "plans": [
      {
        "plan_id": "DTT_Nova Weekly",
        "plan_name": "DTT Nova Weekly",
        "price": 700,
        "validity": "7 Days"
      }
    ]
  }
}

Validate IUC Number

Verify a smartcard/IUC number before making a cable TV payment. This returns the customer's name and account status.

POST

Validate IUC / Smartcard Number

/cable/validate
Always validate the IUC number first to confirm the account before charging the customer.
Field Type Required Description
cable_type_id number Required Provider ID (1=DSTV, 2=GOtv, 3=Startimes).
iuc_number string/number Required The smartcard number on the decoder.
curl --location \
  'https://api.nurenta.ng/api/public/v1/cable/validate' \
--header 'X-Public-Key: pk_sandbox_YOUR_KEY' \
--header 'X-Secret-Key: sk_sandbox_YOUR_SECRET' \
--header 'X-Environment: sandbox' \
--header 'Content-Type: application/json' \
--data '{
  "cable_type_id": 1,
  "iuc_number": "7034577634"
}'
const response = await fetch(
  'https://api.nurenta.ng/api/public/v1/cable/validate',
  {
    method: 'POST',
    headers: {
      'X-Public-Key': 'pk_sandbox_YOUR_KEY',
      'X-Secret-Key': 'sk_sandbox_YOUR_SECRET',
      'X-Environment': 'sandbox',
      'Content-Type': 'application/json'
    },
    body: JSON.stringify({
      cable_type_id: 1,
      iuc_number: '7034577634'
    })
  }
);
const data = await response.json();
200 OK Example Response
{
  "status": true,
  "message": "IUC number validated successfully",
  "data": {
    "customer_name": "KELVIN VIHISHIMA",
    "iuc_number": "7034577634",
    "status": "ACTIVE",
    "due_date": "Sun, Apr 19, 2026",
    "renewal_amount": "19000"
  }
}

Purchase Cable TV Subscription

Subscribe or renew a cable TV package for a decoder by its smartcard number.

POST

Purchase Cable TV

/bill-payments/cable
Field Type Required Description
cable_type_id number Required 1=DSTV, 2=GOtv, 3=Startimes
plan_id string Required Package ID from Get Plans endpoint.
smart_card_no string Required The decoder's smartcard/IUC number.
reference string Optional Your unique transaction reference.
curl --location \
  'https://api.nurenta.ng/api/public/v1/bill-payments/cable' \
--header 'X-Public-Key: pk_sandbox_YOUR_KEY' \
--header 'X-Secret-Key: sk_sandbox_YOUR_SECRET' \
--header 'X-Environment: sandbox' \
--header 'Content-Type: application/json' \
--data '{
  "cable_type_id": 1,
  "plan_id": "DSTV_COMPACT_PLUS",
  "smart_card_no": "7034577634",
  "reference": "DSTV_1777600344"
}'
const response = await fetch(
  'https://api.nurenta.ng/api/public/v1/bill-payments/cable',
  {
    method: 'POST',
    headers: {
      'X-Public-Key': 'pk_sandbox_YOUR_KEY',
      'X-Secret-Key': 'sk_sandbox_YOUR_SECRET',
      'X-Environment': 'sandbox',
      'Content-Type': 'application/json'
    },
    body: JSON.stringify({
      cable_type_id: 1,
      plan_id: 'DSTV_COMPACT_PLUS',
      smart_card_no: '7034577634',
      reference: 'DSTV_1777600344'
    })
  }
);
const data = await response.json();
200 OK Example Response
{
  "status": true,
  "message": "Cable subscription purchase successful",
  "data": {
    "transaction_reference": "API_TXN_20260404_192520_A1B2C3D4",
    "cable_type": "DSTV",
    "iuc_number": "7034577634",
    "customer_name": "KELVIN VIHISHIMA",
    "plan_name": "Compact Plus",
    "amount": 15700.00,
    "status": "completed"
  }
}

Electricity Providers (DISCOs)

Get the full list of electricity distribution companies supported by the API.

GET

Get Electricity Providers

/electricity/types
curl --location \
  'https://api.nurenta.ng/api/public/v1/electricity/types' \
--header 'X-Public-Key: pk_sandbox_YOUR_KEY' \
--header 'X-Secret-Key: sk_sandbox_YOUR_SECRET' \
--header 'X-Environment: sandbox' \
--header 'Accept: application/json'
const response = await fetch(
  'https://api.nurenta.ng/api/public/v1/electricity/types',
  {
    headers: {
      'X-Public-Key': 'pk_sandbox_YOUR_KEY',
      'X-Secret-Key': 'sk_sandbox_YOUR_SECRET',
      'X-Environment': 'sandbox',
      'Accept': 'application/json'
    }
  }
);
const data = await response.json();
200 OK Example Response (truncated)
{
  "status": true,
  "message": "Electricity providers retrieved successfully",
  "data": [
    { "electricity_type_id": 1, "name": "IKEDC", "disco": "IKEJA_ELECTRIC" },
    { "electricity_type_id": 2, "name": "EKEDC", "disco": "EKO_ELECTRIC" }
    // ... AEDC, PHED, IBEDC, JED, KAEDCO, KEDCO, EEDC
  ]
}

Validate Meter Number

Verify a meter number against a distribution company before making a payment.

POST

Validate Meter Number

/electricity/validate
Always validate the meter number first to confirm the customer name and avoid failed transactions.
Field Type Required Description
disco_type string Required e.g. IKEDC, EKEDC, AEDC
meter_type string Required PREPAID or POSTPAID
meter_number string Required The meter number on the device.
amount number Required Intended purchase amount in NGN.
phone_number string Optional Customer phone number.
curl --location \
  'https://api.nurenta.ng/api/public/v1/electricity/validate' \
--header 'X-Public-Key: pk_sandbox_YOUR_KEY' \
--header 'X-Secret-Key: sk_sandbox_YOUR_SECRET' \
--header 'X-Environment: sandbox' \
--header 'Content-Type: application/json' \
--data '{
  "disco_type": "EKEDC",
  "meter_type": "POSTPAID",
  "meter_number": "62987654321",
  "amount": 10000,
  "phone_number": "08012345678"
}'
const response = await fetch(
  'https://api.nurenta.ng/api/public/v1/electricity/validate',
  {
    method: 'POST',
    headers: {
      'X-Public-Key': 'pk_sandbox_YOUR_KEY',
      'X-Secret-Key': 'sk_sandbox_YOUR_SECRET',
      'X-Environment': 'sandbox',
      'Content-Type': 'application/json'
    },
    body: JSON.stringify({
      disco_type: 'EKEDC',
      meter_type: 'POSTPAID',
      meter_number: '62987654321',
      amount: 10000,
      phone_number: '08012345678'
    })
  }
);
const data = await response.json();

Buy Electricity

Purchase prepaid electricity units or pay a postpaid electricity bill.

POST

Buy Electricity Units

/bill-payments/electricity
Field Type Required Description
electricity_type_id number Required Provider ID from Get Providers endpoint.
meter_number string Required The meter number on the device.
meter_type string Required prepaid or postpaid
amount number Required Amount in NGN (₦500 – ₦500,000).
phone string Optional Phone number to receive the token via SMS.
curl --location \
  'https://api.nurenta.ng/api/public/v1/bill-payments/electricity' \
--header 'X-Public-Key: pk_sandbox_YOUR_KEY' \
--header 'X-Secret-Key: sk_sandbox_YOUR_SECRET' \
--header 'X-Environment: sandbox' \
--header 'Content-Type: application/json' \
--data '{
  "electricity_type_id": 1,
  "meter_number": "0137230219164",
  "meter_type": "prepaid",
  "amount": 5000,
  "phone": "08012345678"
}'
const response = await fetch(
  'https://api.nurenta.ng/api/public/v1/bill-payments/electricity',
  {
    method: 'POST',
    headers: {
      'X-Public-Key': 'pk_sandbox_YOUR_KEY',
      'X-Secret-Key': 'sk_sandbox_YOUR_SECRET',
      'X-Environment': 'sandbox',
      'Content-Type': 'application/json'
    },
    body: JSON.stringify({
      electricity_type_id: 1,
      meter_number: '0137230219164',
      meter_type: 'prepaid',
      amount: 5000,
      phone: '08012345678'
    })
  }
);
const data = await response.json();
200 OK Example Response
{
  "status": true,
  "message": "Electricity purchase successful",
  "data": {
    "transaction_reference": "TXN_20260404_143025_ABC123",
    "disco": "IKEDC",
    "meter_number": "0137230219164",
    "meter_type": "prepaid",
    "customer_name": "JOHN DOE",
    "amount": 5000,
    "charged": 4950,
    "token": "1234-5678-9012-3456-7890",
    "units": "45.5 kWh",
    "status": "completed"
  }
}

Fund Betting Account

Top up a customer's account on any supported betting or gaming platform.

POST

Fund Betting Account

/billpayments/betting
🎯Supported platforms include Bet9ja, SportyBet, 1xBet, NairaBet, and BetKing.
Field Type Required Description
bet_type string Required Platform name e.g. BET9JA, SPORTYBET, 1XBET
customer_id string Required The user's ID/username on the betting platform.
amount number Required Amount in NGN (₦100 – ₦500,000).
reference string Optional Your unique transaction reference.
curl --location \
  'https://api.nurenta.ng/api/public/v1/billpayments/betting' \
--header 'X-Public-Key: pk_sandbox_YOUR_KEY' \
--header 'X-Secret-Key: sk_sandbox_YOUR_SECRET' \
--header 'X-Environment: sandbox' \
--header 'Content-Type: application/json' \
--data '{
  "bet_type": "BET9JA",
  "customer_id": "123456789",
  "amount": 1000,
  "reference": "BET9JA_1777604449"
}'
const response = await fetch(
  'https://api.nurenta.ng/api/public/v1/billpayments/betting',
  {
    method: 'POST',
    headers: {
      'X-Public-Key': 'pk_sandbox_YOUR_KEY',
      'X-Secret-Key': 'sk_sandbox_YOUR_SECRET',
      'X-Environment': 'sandbox',
      'Content-Type': 'application/json'
    },
    body: JSON.stringify({
      bet_type: 'BET9JA',
      customer_id: '123456789',
      amount: 1000,
      reference: 'BET9JA_1777604449'
    })
  }
);
const data = await response.json();

Buy WAEC PIN

Purchase a WAEC registration or result checker PIN for a student.

POST

Buy WAEC PIN

/billpayments/education
🎓The response includes both a PIN and a Serial Number — the student needs both to access their results on the WAEC portal.
Field Type Required Description
edu_type string Required Set to WAEC.
edu_identifier string Required The exam identifier e.g. waec_registration_2024.
profile_code string Required The student's WAEC profile code.
reference string Optional Your unique transaction reference.
curl --location \
  'https://api.nurenta.ng/api/public/v1/billpayments/education' \
--header 'X-Public-Key: pk_sandbox_YOUR_KEY' \
--header 'X-Secret-Key: sk_sandbox_YOUR_SECRET' \
--header 'X-Environment: sandbox' \
--header 'Content-Type: application/json' \
--data '{
  "edu_type": "WAEC",
  "edu_identifier": "waec_registration_2024",
  "profile_code": "EXAM123456",
  "reference": "WAEC_1777718069"
}'
const response = await fetch(
  'https://api.nurenta.ng/api/public/v1/billpayments/education',
  {
    method: 'POST',
    headers: {
      'X-Public-Key': 'pk_sandbox_YOUR_KEY',
      'X-Secret-Key': 'sk_sandbox_YOUR_SECRET',
      'X-Environment': 'sandbox',
      'Content-Type': 'application/json'
    },
    body: JSON.stringify({
      edu_type: 'WAEC',
      edu_identifier: 'waec_registration_2024',
      profile_code: 'EXAM123456',
      reference: 'WAEC_1777718069'
    })
  }
);
const data = await response.json();
200 OK Example Response
{
  "status": "Success",
  "data": [
    {
      "pin": "959734569450",
      "serialNo": "WRN232833332"
    }
  ]
}

Buy NECO PIN

Purchase a NECO result checker PIN for a student.

POST

Buy NECO PIN

/billpayments/education
Field Type Required Description
edu_type string Required Set to NECO.
edu_identifier string Required The exam identifier e.g. neco_result_checker_2024.
reference string Optional Your unique transaction reference.
curl --location \
  'https://api.nurenta.ng/api/public/v1/billpayments/education' \
--header 'X-Public-Key: pk_sandbox_YOUR_KEY' \
--header 'X-Secret-Key: sk_sandbox_YOUR_SECRET' \
--header 'X-Environment: sandbox' \
--header 'Content-Type: application/json' \
--data '{
  "edu_type": "NECO",
  "edu_identifier": "neco_result_checker_2024",
  "reference": "NECO_1777718069"
}'
const response = await fetch(
  'https://api.nurenta.ng/api/public/v1/billpayments/education',
  {
    method: 'POST',
    headers: {
      'X-Public-Key': 'pk_sandbox_YOUR_KEY',
      'X-Secret-Key': 'sk_sandbox_YOUR_SECRET',
      'X-Environment': 'sandbox',
      'Content-Type': 'application/json'
    },
    body: JSON.stringify({
      edu_type: 'NECO',
      edu_identifier: 'neco_result_checker_2024',
      reference: 'NECO_1777718069'
    })
  }
);
const data = await response.json();

Buy JAMB e-PIN

Purchase a JAMB e-PIN for exam registration or mock exams.

POST

Buy JAMB e-PIN

/billpayments/education
Field Type Required Description
edu_type string Required Set to JAMB.
edu_identifier string Required The exam identifier e.g. jamb_epin_2024.
profile_code string Required The student's JAMB profile code.
reference string Optional Your unique transaction reference.
curl --location \
  'https://api.nurenta.ng/api/public/v1/billpayments/education' \
--header 'X-Public-Key: pk_sandbox_YOUR_KEY' \
--header 'X-Secret-Key: sk_sandbox_YOUR_SECRET' \
--header 'X-Environment: sandbox' \
--header 'Content-Type: application/json' \
--data '{
  "edu_type": "JAMB",
  "edu_identifier": "jamb_epin_2024",
  "profile_code": "JAMB2024USER",
  "reference": "JAMB_1777718069"
}'
const response = await fetch(
  'https://api.nurenta.ng/api/public/v1/billpayments/education',
  {
    method: 'POST',
    headers: {
      'X-Public-Key': 'pk_sandbox_YOUR_KEY',
      'X-Secret-Key': 'sk_sandbox_YOUR_SECRET',
      'X-Environment': 'sandbox',
      'Content-Type': 'application/json'
    },
    body: JSON.stringify({
      edu_type: 'JAMB',
      edu_identifier: 'jamb_epin_2024',
      profile_code: 'JAMB2024USER',
      reference: 'JAMB_1777718069'
    })
  }
);
const data = await response.json();
200 OK Example Response
{
  "status": "Success",
  "data": [
    {
      "pin": "959734569450"
    }
  ]
}