Our API is a RESTful interface that enables seamless integration of our services into your application. It uses RESTful endpoints and standard HTTP methods, providing conventional HTTP response codes to signify the success or failure of API requests.
We advise that you keep your API token and account login credentials as secret as possible. If you suspect that your API token or account login credentials have been compromised, login to your account, change your password oand generate another API token as fast as possibe to render the former token and password invalid.
URL: They are stated in the latter part of this documentation
Method: POST
Header: It contains the 'Content-Type' (content format our server accepts), 'Accept' (format of response our server pushes back) and 'Authorization' key (Token your-api-token).
Body/Content: The request body must be in json format. The fields/parameters are stated in the latter part of this documentation. All parameters are compulsory except stated otherwise.
<?php
$postRequest = array(
'parameter1' => 'value1',
'parameter' => 'value1');
$xpostRequest=json_encode($postRequest);
$url= 'url-stated-in-each-service-below';
$cURLConnection = curl_init($url);
curl_setopt($cURLConnection, CURLOPT_POSTFIELDS, $xpostRequest);
curl_setopt($cURLConnection, CURLOPT_RETURNTRANSFER, true);
curl_setopt($cURLConnection, CURLOPT_HTTPHEADER, array(
"Content-Type: application/json",
"Accept: application/json",
"Authorization: Token ".$your_token
));
$data = curl_exec($cURLConnection);
curl_close($cURLConnection);
$xdata= json_decode($data, true);
echo $data;
exit;
?>
For all requests, our API returns standard HTTP response codes ranging from 200s-400s (2** to 4**). More details of response returned are included in the 'description' key. Below are the various codes you are likely to recieve and what they mean.
| Code | Meaning |
|---|---|
| 200 & 201 | You did everything right |
| 400 | Not all required parameters were provided |
| 401 | Authentication failed |
| 402 | Request could not be processed |
| 403 | The account cannot perform the request |
| 409 | Duplicate request detected |
| 424 | Transaction failed |
| 500 & above | Processing: We are not sure of the status. It has possibly delivered or it could still deliver |
It is safer to mark requests that return error codes outside 2** and 4** clearly defined above as pending!
This is used to fetch user wallet balance. Works for Msorg, Adex & Vicoms websites
URL: https://subzid.com/api/user/
Parameters:
| Parameter | Description |
|---|---|
| none | none |
Success
{
"code":"200",
"description": {
"balance":"373,500.0",
}
"Status":"successful",
"status":"success",
"balance":"373,500.0",
"wallet":"373,500.0",
"user": {
"wallet_balance":"373,500.0",
"wallet":"373,500.0"
}
}
Failure
{
"code":"403",
"description": {
"errorResponse":"Authorization not set",
}
"status":"fail",
"message":"Authorization not set",
"error":{
"Authorization not set"
}
}
This is used to purchase airtime for all networks.
URL: https://subzid.com/api/airtime
Parameters:
| Parameter | Description |
|---|---|
| networkId | The ID of the network to recharge from. It can be either '1' for MTN, '2' for Airtel, '3' for Glo or '4' for 9mobile |
| type | Type of airtime recharge. It has the value 'VTU' |
| phone | Beneficiary phone number |
| amount | Amount of airtime to be purchased. A minimum of N50 |
| ref | Custom user reference ID (optional) |
Success
{
"code":"200",
"description": {
"userEmail":"your-email@xyz.com",
"recipient":"07033333333",
"narration":"MTN VTU N200",
"trueResponse":"VTU vending N200.00 for 07033333333",
"amountCharged":"186.00",
"ourRef":"202407140837823726ae834d34d",
"userRef":"",
},
"time":"2024-07-12 16:56:14"
}
Failure
{
"code":"424",
"description": {
"userEmail":"your-email@xyz.com",
"recipient":"07033333333",
"narration":"MTN VTU N200",
"errorResponse":"Invalid phone number",
"amountCharged":"186.00",
"ourRef":"202407140837823726ae834d34d",
"userRef":""
},
"time":"2024-07-12 16:56:14"
}
OR
{
"code":"403",
"description": {
"errorResponse":"User account disabled. Please contact support"
},
"time":"2024-07-12 16:56:14"
}
This returns all data bundles currently available.
URL: https://subzid.com/api/data/fetch_all_data_bundles
Parameters:
| Parameter | Description |
|---|---|
| networkId | The ID of the network whose bundles are to be fetched. It can be either '1' for MTN, '2' for Glo, '3' for 9mobile or '4' for Airtel (Optional) |
| data_type | SME, CG, AWOOF or GIFTING (Optional) |
Success
{
"code": "200",
"Status": "success",
"bundles": [
{
"Network Name": "MTN",
"Plan Type": "DIRECT-GIFTING",
"Plan Name": "75 MB Daily Plan@75 valid for 1 day",
"Plan ID": "52",
"Network Price": "75.00"
},
{
"Network Name": "MTN",
"Plan Type": "DIRECT-GIFTING",
"Plan Name": "110 MB Daily Plan@100 valid for 1 day",
"Plan ID": "53",
"Network Price": "100.00"
},
{
"Network Name": "MTN",
"Plan Type": "DIRECT-GIFTING",
"Plan Name": "200MB Social Daily Plan@100 valid for 1 day",
"Plan ID": "54",
"Network Price": "100.00"
},
{
"Network Name": "MTN",
"Plan Type": "DIRECT-GIFTING",
"Plan Name": "230 MB Daily Plan@200 valid for 1 day",
"Plan ID": "55",
"Network Price": "200.00"
},
{
"Network Name": "MTN",
"Plan Type": "DIRECT-GIFTING",
"Plan Name": "500MB Daily Plan@350 valid for 1 day",
"Plan ID": "56",
"Network Price": "350.00"
}
]
}
Failure
{
"code":"424",
"Status":"success",
"bundles":"No bundles found"
}
This is used to purchase data bundles for all networks. For Msorg, Adex & Vicom, please use their respective authentication modes, parameters and responses as preconfigured on your website admin area.
URL: https://subzid.com/api/data/
Parameters:
| Parameter | Description |
|---|---|
| network | The ID of the network to recharge from. For MSORG, MTN= 1, Glo= 2, 9mobile= 3 & Airtel= 4 For Adex & Vicom, MTN= 1, Airtel= 2, Glo= 3 & 9mobile= 4 |
| plan data_plan (ADEX & VICOM) |
This is the plan ID of the data bundle to be purchased. Please click PLAN/BOUQUET IDs/DISCOs for the IDs |
| mobile_number phone (ADEX & VICOM) |
Beneficiary phone number |
| ref request-id (ADEX & VICOM) |
Custom user reference ID (optional) |
Success
{
"code":"200",
"description": {
"recipient":"07033333333",
"narration":"MTN SME Data 1GB",
"trueResponse":"You have successfully gifted 2347033333333 with 1GB of Data. valid till 20/07/2024 12:00:00 PM",
"amountCharged":"500.00",
"ourRef":"202606200837823726ae834d34d"
},
"Status":"successful",
"ident":"202606200837823726ae834d34d",
"network":"1",
"balance_before":"5532.00",
"plan_type":"SME",
"balance_after":"5032.00",
"mobile_number":"07033333333",
"plan":"7",
"api_response":"You have successfully gifted 2347033333333 with 1GB of Data. valid till 20/07/2026 12:00:00 PM",
"plan_network":"MTN",
"plan_name":"1GB",
"plan_amount":"500.00",
"create_date":"2026-06-20 08:37:14"
}
Processing
{
"code":"501",
"description": {
"recipient":"07033333333",
"narration":"MTN SME Data 1GB",
"trueResponse":"Your request is currently being processed. Please do not retry!",
"amountCharged":"500.00",
"ourRef":"202606200837823726ae834d34d"
},
"Status":"processing",
"ident":"202606200837823726ae834d34d",
"network":"1",
"balance_before":"5532.00",
"plan_type":"SME",
"balance_after":"5032.00",
"mobile_number":"07033333333",
"plan":"7",
"api_response":"Your request is currently being processed. Please do not retry!",
"plan_network":"MTN",
"plan_name":"1GB",
"plan_amount":"500.00",
"create_date":"2026-06-20 08:37:14"
}
Failure
{
"code":"424",
"description": {
"recipient":"07033333333",
"narration":"MTN SME Data 1GB",
"errorResponse":"Invalid phone number",
"amountCharged":"0.00",
"ourRef":"202606200837823726ae834d34d",
},
"Status":"failed",
"ident":"202606200837823726ae834d34d",
"network":"1",
"balance_before":"5532.00",
"plan_type":"SME",
"balance_after":"5532.00",
"mobile_number":"07033333333",
"plan":"7",
"api_response":"Invalid phone number",
"plan_network":"MTN",
"plan_name":"1GB",
"plan_amount":"500.00",
"create_date":"2026-06-20 08:37:14"
}
OR
{
"code":"403",
"description": {
"errorResponse":"User account disabled. Please contact support"
},
"error":"User account disabled. Please contact support"
}
This returns all bouquets currently available for the cableType. You can also refer to PLAN/BOUQUET IDs/DISCOs
URL: https://subzid.com/api/fetch_cable_tv_bouquets
Parameters:
| Parameter | Description |
|---|---|
| cableType | Either 'DSTV', 'GOTV' or 'STARTIMES' |
Success
{
"code":"200",
"description": {
"cableType":"DSTV",
"bouquets":[
{
"planName":"DSTV HDPVR/XTRAVIEW_ADDON",
"planId":"dstv_hdpvrxtraview_addon",
"providerPrice":"40000.00"
},
{
"planName":"DSTV PADI",
"planId":"dstv_padi",
"providerPrice":"45000.00"
},
{
"planName":"DSTV CONFAM",
"planId":"dstv_confam",
"providerPrice":"50000.00"
}
]
}
}
Failure
{
"code":"424",
"description": {
"errorResponse":"No bouquet found"
}
}
This is used to ensure that payment is about to be made to the correct Cable TV customer.
URL: https://subzid.com/api/verify_cable_tv_customer
Parameters:
| Parameter | Description |
|---|---|
| cableType | Either 'DSTV', 'GOTV' or 'STARTIMES' |
| smartcardNo | The smartcard or IUC number of the customer's decoder |
Success
{
"code":"200",
"description": {
"smartcard":"7031xxxxxx",
"customerName":"Customer Name",
"customerNumber":"1176237165",
"status":"Open"
}
}
Failure
{
"code":"424",
"description": {
"errorResponse":"Verification failed"
}
}
This is used pay for cable tv subscriptions.
URL: https://subzid.com/api/cabletv
Parameters:
| Parameter | Description |
|---|---|
| cableType | Either 'DSTV', 'GOTV' or 'STARTIMES' |
| bouquetId | This is the bouquet being paid for. All the bouquets have fixed amounts. |
| smartcardNo | The smartcard or IUC number of the customer's decoder |
| amount | Amount to be credited to the decoder account (leave empty if bouquet selected is not 'Topup') |
| ref | Custom user reference ID (optional) |
Success
{
"code":"200",
"description": {
"userEmail":"your-email@xyz.com",
"recipient":"7031xxxxxx",
"narration":"DSTV Yanga @ 5000",
"trueResponse":"Payment successful",
"amountCharged":"4950.00",
"ourRef":"202407171522426934ae834d34d",
"userRef":"",
},
"time":"2024-07-17 15:22:42"
}
Failure
{
"code":"424",
"description": {
"userEmail":"your-email@xyz.com",
"recipient":"07033333333",
"narration":"DSTV Yanga @ 5000",
"errorResponse":"Payment failed",
"amountCharged":"4900.00",
"ourRef":"202407171522426934ae834d34d",
"userRef":""
},
"time":"2024-07-17 15:22:42"
}
This is used to ensure that payment is about to be made to the correct customer.
URL: https://subzid.com/api/verify_electricity_meterno
Parameters:
| Parameter | Description |
|---|---|
| discoId | For Disco IDs, please refer to PLAN/BOUQUET IDs/DISCOs |
| meterNo | This is the electricity account number attached to the customer's postpaid or prepaid meter. |
Success
{
"code":"200",
"description": {
"meterNo":"3122XXXXXX",
"customerName":"Akinjide Akin Flat 4",
"customerAddress":"102 Akinjide Close USA Avenue Abuja"
}
}
Failure
{
"code":"424",
"description": {
"errorResponse":"Verification failed"
}
}
This is used to make payments for electricity.
URL: https://subzid.com/api/electricity
Parameters:
| Parameter | Description |
|---|---|
| discoId | For Disco types and their IDs, please refer to PLAN/BOUQUET IDs/DISCOs |
| meterNo | This is the electricity account number attached to the customer's postpaid or prepaid meter. |
| amount | Amount to be credited to the meter account |
| ref | Custom user reference ID (optional) |
Success (Store all data in trueResponse key)
{
"code":"200",
"description": {
"userEmail":"your-email@xyz.com",
"recipient":"3122XXXXXX",
"narration":"ENUGU ELECTRIC PREPAID N5000",
"trueResponse": {
"meterNo":"3122XXXXXX",
"customerNumber":"25113291196"
"customerName":"Testmeter1",
"token":"82376716826361231"
},
"amountCharged":"5000.00",
"ourRef":"202407171522426934ae834d34d",
"userRef":"",
},
"time":"2024-07-17 15:22:42"
}
Failure
{
"code":"424",
"description": {
"userEmail":"your-email@xyz.com",
"recipient":"3122XXXXXX",
"narration":"EEDC PREPAID N5000",
"errorResponse":"TRANSACTION FAILED",
"amountCharged":"5000.00",
"ourRef":"202407171522426934ae834d34d",
"userRef":""
},
"time":"2024-07-17 15:22:42"
}
This is used to purchase examination result checker PINs.
URL: https://subzid.com/api/educational-pins
Parameters:
| Parameter | Description |
|---|---|
| examType | This can be either 'waec_pin', 'neco_pin', 'utme_pin' or 'nabteb_pin' |
| quantity | The number of examination result checker PINs needed. |
| phone | Phone number of the beneficiary |
| ref | Custom user reference ID (optional) |
Success
{
"code":"200",
"description": {
"userEmail":"your-email@xyz.com",
"recipient":"07035XXXXXX",
"narration":"3 NECO PIN(s)",
"trueResponse": [
{"pin":"857256XXXXXXXXX","serial_no":"WR37278XXXXXXXXX"},
{"pin":"857256XXXXXXXXX","serial_no":"WR37278XXXXXXXXX"}
],
"amountCharged":"2400.00",
"ourRef":"202407171522426934ae834d34d",
"userRef":"",
},
"time":"2024-07-17 15:22:42"
}
Failure
{
"code":"424",
"description": {
"userEmail":"your-email@xyz.com",
"recipient":"07035XXXXXX",
"narration":"3 NECO PIN(s)",
"errorResponse":"Payment failed",
"amountCharged":"2400.00",
"ourRef":"202407171522426934ae834d34d",
"userRef":""
},
"time":"2024-07-17 15:22:42"
}
This is used to generate BVN & NIN slips (PNG/JPG) returned in base64 formats. You are expected to convert the 'base64' value to image.
URL: https://subzid.com/api/kyc-slip
All parameters descriptions:
| Parameter | Description |
|---|---|
| idType | It can either be 'nin' or 'bvn' |
| slipType | The type of slip you wish to generate. * For NIN, it can either be 'nin long slip', 'nin basic slip', 'nin premium slip' or 'nin improved slip'. * For BVN, it can either be 'bvn slip', 'bvn slip 2' or 'bvn card' |
| searchCriteria | * For NIN, the value can either be 'nin', 'phone' or 'demographics'. * For BVN, the value can only be 'bvn'. |
| nin | NIN number to be queried. This is only applicable to NIN slips generation using 'nin' as searchCriteria |
| bvn | BVN numbr to be queried. This is only applicable to BVN slips generation using 'bvn' as searchCriteria. |
| phone | Phone number attached to NIN to be queried. This is only applicable to NIN slips generation using 'nin' as searchCriteria |
| surName | Surname on the NIN to be queried. This is only applicable to NIN slips generation using 'demographics' as searchCriteria. |
| firstName | First name on the NIN to be queried. This is only applicable to NIN slips generation using 'demographics' as searchCriteria. |
| gender | Gender on the NIN to be queried. It can either be 'male' or 'female'. This is only applicable to NIN slips generation using 'demographics' as searchCriteria. |
| dateOfBirth | Date of birth on the NIN to be queried. This is only applicable to NIN slips generation using 'demographics' as searchCriteria. |
| ref | Custom user reference ID (optional) |
Params required for each searchCriteria:
| idType | searchCriteria | Required Params |
|---|---|---|
| nin | nin | idType, searchCriteria, slipType, nin, ref (optional) |
| nin | phone | idType, searchCriteria, slipType, phone, ref (optional) |
| nin | demographics | idType, searchCriteria, slipType, surName, firstName, dateOfBirth, gender, ref (optional) |
| bvn | bvn | idType, searchCriteria, slipType, bvn, ref (optional) |
Success
{
"code":"200",
"description": {
"userEmail":"your-email@xyz.com",
"recipient":"07035XXXXXX",
"narration":"Nin Basic Slip",
"trueResponse": "Slip generated successfully!",
"base64": "iVBORw0KGgoAAAANSUhEUgAACWwAAAQMCAIAAACH8............",
"amountCharged":"1000.00",
"ourRef":"202407171522426934ae834d34d",
"userRef":"",
},
"time":"2024-07-17 15:22:42"
}
Failure
{
"code":"424",
"description": {
"userEmail":"your-email@xyz.com",
"recipient":"07035XXXXXX",
"narration":"Nin Basic Slip",
"errorResponse":"valid 11 digit nin is required for search by nin",
"amountCharged":"0.00",
"ourRef":"202407171522426934ae834d34d",
"userRef":"0231009712021012"
},
"time":"2024-07-17 15:22:42"
}