Bills Payment
Electricity

Electricity Bills Payment

Purchase electricity tokens for prepaid meters and pay postpaid bills across all Nigerian electricity distribution companies. Retrieve available providers, validate customer meters, and recharge seamlessly.


Get Electricity Providers

Retrieve a list of available electricity distribution companies.

Endpoint

GET https://api.budpay.com/api/v2/electricity

Sample Request

curl https://api.budpay.com/api/v2/electricity \
-H "Authorization: Bearer YOUR_SECRET_KEY" \
-H "Content-Type: application/json" \
-X GET

Sample Response

{
    "success": true,
    "code": "00000",
    "message": "Fetched successfully",
    "data": [
        {
            "provider": "IKEDC",
            "code": "ikeja-electric",
            "providerLogoUrl": "assets/images/bills/Ikeja-Electric-Payment-PHCN.jpg",
            "minAmount": "500"
        },
        {
            "provider": "EKEDC",
            "code": "eko-electric",
            "providerLogoUrl": "assets/images/bills/Eko-Electric-Payment-PHCN.jpg",
            "minAmount": "500"
        },
        {
            "provider": "KEDCO",
            "code": "kano-electric",
            "providerLogoUrl": "assets/images/bills/Kano-Electric.jpg",
            "minAmount": "500"
        },
        {
            "provider": "PHED",
            "code": "portharcourt-electric",
            "providerLogoUrl": "assets/images/bills/Port-Harcourt-Electric.jpg",
            "minAmount": "500"
        },
        {
            "provider": "JED",
            "code": "jos-electric",
            "providerLogoUrl": "assets/images/bills/Jos-Electric-JED.jpg",
            "minAmount": "500"
        },
        {
            "provider": "IBEDC",
            "code": "ibadan-electric",
            "providerLogoUrl": "assets/images/bills/IBEDC-Ibadan-Electricity-Distribution-Company.jpg",
            "minAmount": "500"
        },
        {
            "provider": "KAEDCO",
            "code": "kaduna-electric",
            "providerLogoUrl": "assets/images/bills/Kaduna-Electric-KAEDCO.jpg",
            "minAmount": "500"
        },
        {
            "provider": "AEDC",
            "code": "abuja-electric",
            "providerLogoUrl": "assets/images/bills/Abuja-Electric.jpg",
            "minAmount": "500"
        }
    ]
}

Try it out

Response Fields

FieldTypeDescription
successBooleanIndicates if request was successful
codeStringResponse code
messageStringResponse message
dataArrayArray of electricity provider objects

Provider Object Fields

FieldTypeDescription
providerStringElectricity distribution company name
codeStringProvider code for transactions
providerLogoUrlStringURL path to provider logo image
minAmountStringMinimum recharge amount (NGN 500)

Validate Meter Number

Validate a customer's meter number and retrieve account details before purchase.

Endpoint

POST https://api.budpay.com/api/v2/electricity/validate

Sample Request

curl https://api.budpay.com/api/v2/electricity/validate \
-H "Authorization: Bearer YOUR_SECRET_KEY" \
-H "Content-Type: application/json" \
-d '{
    "provider": "IBEDC",
    "type": "prepaid",
    "number": "1111111111111"
}' \
-X POST

Sample Response

{
    "success": true,
    "code": "00000",
    "message": "Fetched successfully",
    "data": {
        "provider": "IBEDC",
        "number": "1111111111111",
        "type": "prepaid",
        "Customer_Name": "OLADIPO OLUWAFEMI"
    }
}

Try it out

Request Parameters

Body Parameters

ParameterTypeRequiredDescription
providerStringYesElectricity provider name (IKEDC, EKEDC, IBEDC, etc.)
typeStringYesMeter type: prepaid or postpaid
numberStringYesCustomer meter number

Response Fields

FieldTypeDescription
successBooleanIndicates if validation was successful
codeStringResponse code
messageStringResponse message
data.providerStringElectricity provider
data.numberStringMeter number
data.typeStringMeter type (prepaid/postpaid)
data.Customer_NameStringRegistered customer name

Recharge Electricity

Purchase electricity token for prepaid meters or pay postpaid bills.

Endpoint

POST https://api.budpay.com/api/v2/electricity/recharge

Sample Request

curl https://api.budpay.com/api/v2/electricity/recharge \
-H "Authorization: Bearer YOUR_SECRET_KEY" \
-H "Encryption: Signature_HMAC-SHA-512" \
-H "Content-Type: application/json" \
-d '{
    "provider": "IKEDC",
    "number": "1111111111111",
    "type": "prepaid",
    "amount": 1000,
    "reference": "2022051105275457530"
}' \
-X POST

Sample Response

{
    "success": true,
    "code": "00000",
    "message": "SUCCESSFUL",
    "data": {
        "orderNo": "16651456950755436254604761",
        "reference": "20220511052754574330",
        "status": "delivered",
        "errorMsg": "TRANSACTION SUCCESSFUL",
        "purchased_code": "Token : 26362054405982757802",
        "units": "79.9 kWh"
    }
}

Try it out

Request Parameters

Header Parameters

Field NameDescriptionRequired
AuthorizationBearer token with your secret keyYes
EncryptionSignature_HMAC-SHA-512 for request encryptionYes
Content-Typeapplication/jsonYes

Body Parameters

ParameterTypeRequiredDescription
providerStringYesElectricity provider name (IKEDC, EKEDC, IBEDC, etc.)
numberStringYesCustomer meter number
typeStringYesMeter type: prepaid or postpaid
amountIntegerYesRecharge amount (minimum NGN 500)
referenceStringYesUnique transaction reference

Response Fields

FieldTypeDescription
successBooleanIndicates if recharge was successful
codeStringResponse code
messageStringResponse message
data.orderNoStringOrder number from provider
data.referenceStringYour transaction reference
data.statusStringRecharge status (delivered, pending, failed)
data.errorMsgStringStatus message or error details
data.purchased_codeStringElectricity token (prepaid only)
data.unitsStringEnergy units purchased in kWh (prepaid only)

Supported Providers

ProviderCodeCoverage AreaMin Amount
IKEDCikeja-electricIkeja, LagosNGN 500
EKEDCeko-electricEko, LagosNGN 500
IBEDCibadan-electricIbadan, OyoNGN 500
KEDCOkano-electricKanoNGN 500
PHEDportharcourt-electricPort Harcourt, RiversNGN 500
JEDjos-electricJos, PlateauNGN 500
KAEDCOkaduna-electricKadunaNGN 500
AEDCabuja-electricAbuja, FCTNGN 500

Note: All providers require a minimum purchase amount of NGN 500.


Meter Types

TypeDescriptionToken Generation
PrepaidPay-as-you-go metersToken provided in response
PostpaidMonthly billing metersNo token, credit applied to account

Recharge Status

StatusDescription
deliveredToken generated and delivered successfully
pendingRecharge being processed
failedRecharge failed (check errorMsg)

Error Handling

400 Bad Request

{
    "success": false,
    "message": "Invalid request parameters"
}

401 Unauthorized

{
    "success": false,
    "message": "Authentication failed"
}

422 Validation Error

{
    "success": false,
    "message": "Validation error",
    "errors": {
        "amount": ["Amount must be at least NGN 500"],
        "number": ["Invalid meter number"]
    }
}

Best Practices

Tip: Always validate meter numbers before accepting payment to ensure the meter exists and customer details are correct.

  1. Validate Meter First: Use validate endpoint to confirm meter details and customer name
  2. Display Customer Name: Show validated customer name for user confirmation
  3. Minimum Amount: Enforce NGN 500 minimum requirement
  4. Store Tokens: Save purchased tokens for customer reference
  5. Meter Type Selection: Allow users to specify prepaid or postpaid
  6. Unique References: Generate unique reference IDs for each transaction
  7. Check Balance: Verify wallet balance before purchase
  8. Token Display: For prepaid, prominently display the purchased token
  9. Units Information: Show energy units (kWh) purchased

Electricity Purchase Workflow

💡

Process Flow: Get providers → Select provider → Validate meter → Purchase token

  1. Get Providers: Fetch available electricity providers
  2. Select Provider: User selects their distribution company
  3. Meter Type: User selects prepaid or postpaid meter type
  4. Enter Meter Number: User enters their meter number
  5. Validate Meter: Verify meter exists and retrieve customer name
  6. Confirm Details: Display customer name for verification
  7. Enter Amount: User enters recharge amount (min NGN 500)
  8. Generate Reference: Create unique transaction reference
  9. Purchase Token: Submit recharge request
  10. Display Token: For prepaid, show token and units purchased
  11. Save Transaction: Store order number and token for reference

Security Considerations

⚠️

Security: The Encryption header with HMAC-SHA-512 signature is required for all electricity recharge requests.

  • HMAC Signature: Always include the Encryption: Signature_HMAC-SHA-512 header
  • Server-Side Only: Never expose secret keys in frontend code
  • HTTPS Only: All requests must use secure HTTPS connections
  • Reference IDs: Use unpredictable reference IDs to prevent replay attacks
  • Validate Input: Sanitize meter numbers and amounts before submission
  • Pre-Validation: Always validate meters before accepting payment
  • Token Security: Transmit tokens securely to customers (SMS, email, secure display)

Integration Tips

Complete Recharge Flow

async function purchaseElectricity(provider, meterNumber, type, amount) {
    // 1. Validate meter first
    const validation = await axios.post(
        'https://api.budpay.com/api/v2/electricity/validate',
        {
            provider,
            type,
            number: meterNumber
        },
        {
            headers: {
                'Authorization': 'Bearer YOUR_SECRET_KEY',
                'Content-Type': 'application/json'
            }
        }
    );
    
    // 2. Show customer name for confirmation
    console.log(`Customer: ${validation.data.data.Customer_Name}`);
    
    // 3. Generate unique reference
    const reference = `ELEC_${Date.now()}_${Math.random().toString(36).substring(7)}`;
    
    // 4. Purchase token
    const response = await axios.post(
        'https://api.budpay.com/api/v2/electricity/recharge',
        {
            provider,
            number: meterNumber,
            type,
            amount,
            reference
        },
        {
            headers: {
                'Authorization': 'Bearer YOUR_SECRET_KEY',
                'Encryption': 'Signature_HMAC-SHA-512',
                'Content-Type': 'application/json'
            }
        }
    );
    
    // 5. Display token for prepaid
    if (type === 'prepaid' && response.data.data.purchased_code) {
        console.log(`Token: ${response.data.data.purchased_code}`);
        console.log(`Units: ${response.data.data.units}`);
    }
    
    return response.data;
}

Next Steps