Skip to Content
Bill paymentsElectricity

Electricity

DisCo names and typical min/max (no plan IDs): Catalog.

Pay prepaid or postpaid electricity for Nigerian DisCos. Put the meter number in customer_msisdn and send the matching plan_code from the plans list. Optionally send phone as the customer’s mobile number (not the meter).

POST /v1/transactions

External create is sync — the response includes the final outcome (response_code 00 or 01). No status polling required. Response shapes: Field conventions.

1. List electricity plans

GET /v1/plans/bills/electricity

Optional filter: ?network=Ikeja Electric.

curl "https://api.breezeinnovations.io/v1/plans/bills/electricity?network=Ikeja Electric" \ -H "X-Merchant-Key: mk_your_key_id" \ -H "X-Merchant-Secret: your_issued_secret"

Use the returned plan id as plan_code on purchase.

DisCo network values

Ikeja Electric, EKEDC, AEDC, IBEDC, EEDC, KEDCO, JED, PHED, BEDC, ABEDC, KAEDCO, YEDC, ABA

Prepaid vs postpaid

List plans with GET /v1/plans/bills/electricity (optionally filter by network). Each DisCo returns separate prepaid and postpaid rows.

DisCoPrepaid plan_codePostpaid plan_code
Ikeja Electric10011002
EKEDC10031015
AEDC10041016
IBEDC10051017
EEDC10061018
KEDCO10071019
JED10081020
PHED10091010
BEDC10111021
KAEDCO10121022
YEDC10131023
ABEDC10141024

Successful prepaid purchases include token and units in data. Postpaid purchases return a receipt without a token.

2. Pay electricity

curl -X POST "https://api.breezeinnovations.io/v1/transactions" \ -H "Content-Type: application/json" \ -H "X-Merchant-Key: mk_your_key_id" \ -H "X-Merchant-Secret: your_issued_secret" \ -d '{ "merchant_code": "YOUR_MERCHANT", "customer_msisdn": "10000000001", "phone": "08012345678", "network": "Ikeja Electric", "product": "ELECTRICITY", "plan_code": "1001", "amount": "5000", "client_request_id": "breeze-electricity-001" }'
FieldRequiredDescription
merchant_codeYesYour merchant profile
customer_msisdnYesMeter number
phoneNoCustomer mobile (080… or 234…). Not the meter. Omit if you do not have it.
networkYesBiller name (e.g. Ikeja Electric)
productYesELECTRICITY
plan_codeYesCatalog id from plans list
amountYesPayment amount in Naira (string)
client_request_idYesUnique idempotency key

HTTP 200 — success (prepaid):

{ "status": "success", "response_code": "00", "response_message": "Successful", "data": { "internal_reference": "019262ab-7c4d-7000-8000-000000000010", "msisdn": "10000000001", "product": "ELECTRICITY", "request_id": "breeze-electricity-001", "network": "Ikeja Electric", "amount": "5000", "plan": "1001", "merchant_id": 10, "created_at": "2026-05-17T10:30:00Z", "token": "1234-5678-9012-3456-7890", "units": "45.2 kWh" } }

3. Check status (optional)

To re-fetch a transaction later:

GET /v1/transactions/status?client_request_id={client_request_id}
curl "https://api.breezeinnovations.io/v1/transactions/status?client_request_id=breeze-electricity-001" \ -H "X-Merchant-Key: mk_your_key_id" \ -H "X-Merchant-Secret: your_issued_secret"

Successful prepaid electricity includes token and units in the create data response above (and again on status). Optional kct1 and kct2 (20-digit Key Change Tokens) appear when required by the DisCo — load them on the meter before the recharge token. Omitted on most purchases.

When the DisCo applies the payment to outstanding meter debt instead of issuing a token, create and status data may include payment_spent_on (e.g. "debt") with no token. This field is response-only.

Test meters

On test credentials, only these meters are accepted. The purchase completes with the same success envelope as live (response_code 00, response_message Successful) and is simulated. Any other meter is rejected.

Typecustomer_msisdnStatus data extras
Prepaid10000000001Any prepaid plan_code (e.g. 1001). token: 47861234567890123456, units: 10.00, customer_name: Test Customer
Postpaid10000000002Any postpaid plan_code (e.g. 1002, 1010, 1017). customer_name: Test Customer (no token)

Live credentials always require a real meter.

Ask your account manager to enable electricity on your merchant profile before go-live.

Last updated on