List electricity products
Get electricity products and product codes. Request fields, response examples and integration guidance.
/products/electricity
Example request
curl --request GET \ --url "https://api.strongmb.ng/v1/products/electricity" \ --header "Authorization: Bearer $STRONGMB_API_KEY" \ --header "Accept: application/json"
// Server-side Node.js 22+; never expose your key in a browser.
async function main() {
const response = await fetch("https://api.strongmb.ng/v1/products/electricity", {
method: "GET",
headers: {
Authorization: `Bearer ${process.env.STRONGMB_API_KEY}`,
Accept: "application/json"
},
signal: AbortSignal.timeout(30000)
});
const result = await response.json();
console.log(response.status, result);
}
main().catch(console.error);<?php
// Requires the PHP cURL extension.
$client = curl_init('https://api.strongmb.ng/v1/products/electricity');
curl_setopt_array($client, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => 'GET',
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTPHEADER => [
'Authorization: Bearer ' . getenv('STRONGMB_API_KEY'),
'Accept: application/json',
],
]);
$raw = curl_exec($client);
if ($raw === false) {
throw new RuntimeException(curl_error($client));
}
$status = curl_getinfo($client, CURLINFO_HTTP_CODE);
curl_close($client);
$result = json_decode($raw, true, 512, JSON_THROW_ON_ERROR);
print_r(['http_status' => $status, 'response' => $result]);require 'net/http'
require 'json'
uri = URI('https://api.strongmb.ng/v1/products/electricity')
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = uri.scheme == 'https'
http.open_timeout = 10
http.read_timeout = 30
request = Net::HTTP::Get.new(uri)
request['Authorization'] = 'Bearer ' + ENV.fetch('STRONGMB_API_KEY')
request['Accept'] = 'application/json'
begin
response = http.request(request)
result = JSON.parse(response.body)
puts({ http_status: response.code, response: result }.to_json)
rescue StandardError => error
warn error.message
endimport json
import os
from urllib.request import Request, urlopen
from urllib.error import HTTPError, URLError
headers = {
"Authorization": "Bearer " + os.environ["STRONGMB_API_KEY"],
"Accept": "application/json",
}
body = None
request = Request(
"https://api.strongmb.ng/v1/products/electricity",
data=body, headers=headers, method="GET"
)
try:
with urlopen(request, timeout=30) as response:
result = json.load(response)
print(response.status, result)
except HTTPError as error:
print(error.code, error.read().decode("utf-8"))
except URLError as error:
print("Network error:", error.reason)Returns all available electricity providers and their prepaid/postpaid products. Use the product_code and meter_type when verifying the meter and making a purchase. Note that electricity uses min_amount — the amount is flexible, not fixed.
{
"status": true,
"message": "Products retrieved successfully",
"data": {
"billers": {
"f0ab4f38-1234-5678-9101-abcdefabcdef": {
"name": "KANO ELECTRICITY DISTRIBUTION COMPANY",
"id": "f0ab4f38-1234-5678-9101-abcdefabcdef",
"description": "This is a test product for the electricity provider",
"icon": "https://cdn.mysite.local/assets/icon/electricity/kedco-cf1c5524-d1d9-4ee2-ad01-3f711d5bdf41.png",
"products": {
"pre": {
"name": "PREPAID",
"id": "123e4567-e89b-12d3-a456-426614174001",
"description": "This is a test product for the electricity provider",
"icon": null,
"api_access": true,
"items": [
{
"id": "123e4567-e89b-12d3-a456-426614174000",
"name": "PREPAID",
"description": "This is a test product for the electricity provider",
"min_amount": "100",
"currency": "NGN",
"product_code": "smb_elec_pre_test",
"image": null
}
]
},
"post": {
"name": "POSTPAID",
"id": "123e4567-e89b-12d3-a456-426614174003",
"description": "This is a test product for the electricity provider",
"icon": null,
"api_access": true,
"items": [
{
"id": "123e4567-e89b-12d3-a456-426614174002",
"name": "POSTPAID",
"description": "This is a test product for the electricity provider",
"min_amount": "100",
"currency": "NGN",
"product_code": "smb_elec_post_test",
"image": null
}
]
}
}
}
}
},
"metadata": {
"code": "PRODUCTS_RETRIEVED",
"timestamp": 1790805496,
"trace_id": "E44E95CFDF"
}
}Read product entries from data.billers.{biller_id}.products.{product_type}.items. Iterate the returned items array and use each item’s product_code for the matching validation or purchase request.
The example product groups use pre and post. For validation and purchase requests, use the matching meter_type value prepaid or postpaid. The product minimum is NGN 100; the sandbox success scenario still requires exactly NGN 1000. See the electricity sandbox instructions.
Response fields and types
Expand an object to explore its fields. [] indicates an array item. Error responses may return data: null.
| Field path | JSON type | Meaning and handling |
|---|---|---|
status | boolean | Whether this API request succeeded. Check the HTTP status and metadata.code when handling errors. |
message | string | Human-readable description of the result. Use metadata.code for programmatic error handling instead of parsing this text. |
data | object | Response data. Check the result before reading nested fields; an error may return null or validation details. |
data.billers | object | Providers keyed by their returned identifiers. |
data.billers.{biller_id} | object | One provider. The key is dynamic, not a literal biller_id field. |
data.billers.{biller_id}.name | string | Display name of the provider. |
data.billers.{biller_id}.id | string | Provider identifier. Use the item product_code when purchasing. |
data.billers.{biller_id}.description | string | Description of the provider or service. |
data.billers.{biller_id}.icon | string | Provider icon URL. Allow for an unavailable image. |
data.billers.{biller_id}.products | object | Product groups keyed by the returned product type. |
data.billers.{biller_id}.products.{product_type} | object | One product group. Iterate the actual keys returned by the API. |
data.billers.{biller_id}.products.{product_type}.name | string | Display name of the product group. |
data.billers.{biller_id}.products.{product_type}.id | string | Identifier of the product group. |
data.billers.{biller_id}.products.{product_type}.description | string | Description of this product group. |
data.billers.{biller_id}.products.{product_type}.icon | string | null | Optional product-group icon. Null means no icon is supplied. |
data.billers.{biller_id}.products.{product_type}.api_access | boolean | Whether this product group is available for API purchases. |
data.billers.{biller_id}.products.{product_type}.items | array | Available product items. Refresh the list to obtain current prices, discounts and availability. |
data.billers.{biller_id}.products.{product_type}.items[] | object | One purchasable product item. |
data.billers.{biller_id}.products.{product_type}.items[].id | string | Identifier of the product item. Use product_code in purchase requests. |
data.billers.{biller_id}.products.{product_type}.items[].name | string | Display name of the product item. |
data.billers.{biller_id}.products.{product_type}.items[].description | string | Description of this product item. |
data.billers.{biller_id}.products.{product_type}.items[].min_amount | string | Minimum electricity purchase amount in the indicated currency, returned as a numeric string. The example minimum is NGN 100. This is a lower bound, not a fixed price. |
data.billers.{biller_id}.products.{product_type}.items[].currency | string | Currency of the price or purchase amount; NGN means Nigerian naira. |
data.billers.{biller_id}.products.{product_type}.items[].product_code | string | Exact code to send in the matching validation or purchase request. |
data.billers.{biller_id}.products.{product_type}.items[].image | string | null | Optional item image reference. Null means no image is supplied. |
metadata | object | Diagnostic information about the response. |
metadata.code | string | Machine-readable result code. Use it to distinguish validation, authentication and service errors. |
metadata.timestamp | integer | Unix timestamp in seconds associated with the response. |
metadata.trace_id | string | Correlation identifier for troubleshooting. Retain it with a redacted request when contacting support. |
Always check metadata.code; do not rely on HTTP status alone. See response codes and recommended handling.
Questions? Let’s work through them.
Having an issue or need help with your integration? Join the Strongmb Slack community to ask questions and get assistance from our team and other developers.
Keep API keys and customer details private when sharing examples.
Experiencing a service issue? Check Strongmb’s service status for incident updates.
Did this page help you?
Up to 100 characters. Please leave out personal details, account information and API keys.