Developer Documentation
Comprehensive API documentation for NIN verification slips, BVN verification slips, and IPE clearance services. Integrate seamlessly with our secure APIs.
How to use this page: The table below lists every available endpoint. Click any "View Details" link to jump to full documentation with code examples. Each section also shows all slip tier endpoints in a clear table — no need to guess!
Quick Reference — All API Endpoints
Every endpoint at a glance. Use this table to quickly find the URL you need.
| Service | Slip Tier | Method | Endpoint URL | Details |
|---|---|---|---|---|
| NIN Verification by NIN Number | ||||
| NIN by NIN | Premium | POST | https://abjiktech.com.ng/api/verification/nin_by_nin.php | View Details ↓ |
| NIN by NIN | Standard | POST | https://abjiktech.com.ng/api/verification/nin_standard_slip.php | View Details ↓ |
| NIN by NIN | Regular | POST | https://abjiktech.com.ng/api/verification/nin_regular_slip.php | View Details ↓ |
| NIN by NIN | VNIN | POST | https://abjiktech.com.ng/api/verification/vnin_slip.php | View Details ↓ |
| NIN Verification by Phone Number | ||||
| NIN by Phone | Premium | POST | https://abjiktech.com.ng/api/verification/nin_by_phone_premium.php | View Details ↓ |
| NIN by Phone | Standard | POST | https://abjiktech.com.ng/api/verification/nin_by_phone_standard.php | View Details ↓ |
| NIN by Phone | Regular | POST | https://abjiktech.com.ng/api/verification/nin_by_phone_regular.php | View Details ↓ |
| NIN by Phone | VNIN | POST | https://abjiktech.com.ng/api/verification/vnin_slip.php | View Details ↓ |
| NIN Verification by Demographics | ||||
| NIN by Demo | Premium | POST | https://abjiktech.com.ng/api/verification/nin_by_demo.php | View Details ↓ |
| BVN Verification | ||||
| BVN Verification | Premium | POST | https://abjiktech.com.ng/api/verification/bvn_premium_slip.php | View Details ↓ |
| BVN Verification | Standard | POST | https://abjiktech.com.ng/api/verification/bvn_full_details_slip.php | View Details ↓ |
| IPE Clearance (API) | ||||
| IPE Clearance | Submit Request | POST | https://abjiktech.com.ng/api/verification/ipe_clearance.php | View Details ↓ |
| IPE Clearance | Check Status | POST | https://abjiktech.com.ng/api/verification/get_status.php | View Details ↓ |
| NIN Validation (API) | ||||
| NIN Validation | Submit Request | POST | https://abjiktech.com.ng/api/verification/validation.php | View Details ↓ |
| NIN Validation | Check Status | POST | https://abjiktech.com.ng/api/verification/validation_status.php | View Details ↓ |
| NIN Personalization (API) | ||||
| NIN Personalization | Submit Request | POST | https://abjiktech.com.ng/api/verification/personalization.php | View Details ↓ |
| NIN Personalization | Check Status | POST | https://abjiktech.com.ng/api/verification/personalization_status.php | View Details ↓ |
| NIN Modification (API) | ||||
| NIN Name | Submit Request | POST | https://abjiktech.com.ng/api/modification/nin_name.php | View Details ↓ |
| NIN Phone | Submit Request | POST | https://abjiktech.com.ng/api/modification/nin_phone.php | View Details ↓ |
| NIN Address | Submit Request | POST | https://abjiktech.com.ng/api/modification/nin_address.php | View Details ↓ |
| BVN Modification (API) | ||||
| BVN Name | Submit Request | POST | https://abjiktech.com.ng/api/modification/bvn_name.php | View Details ↓ |
| BVN Phone | Submit Request | POST | https://abjiktech.com.ng/api/modification/bvn_phone.php | View Details ↓ |
| BVN Address | Submit Request | POST | https://abjiktech.com.ng/api/modification/bvn_address.php | View Details ↓ |
| BVN Date of Birth | Submit Request | POST | https://abjiktech.com.ng/api/modification/bvn_dob.php | View Details ↓ |
| Modification Utilities (API) | ||||
| Check Modification Status | Check Status | POST | https://abjiktech.com.ng/api/verification/get_status.php | View Details ↓ |
| List BVN Enrollment Types | Lookup | POST | https://abjiktech.com.ng/api/modification/get_bvn_banks.php | View Details ↓ |
| Notification | POST | |||
API Authentication
All API requests require authentication using your API key. Include it in the request payload as shown below.
// PHP Example
$apiKey = 'YOUR_API_KEY_HERE';
$url = 'https://abjiktech.com.ng/api/verification/nin_by_nin.php';
$payload = json_encode([
'api_key' => $apiKey,
'nin' => '12345678901'
]);
// JavaScript Example
const apiKey = 'YOUR_API_KEY_HERE';
const url = 'https://abjiktech.com.ng/api/verification/nin_by_nin.php';
const payload = {
api_key: apiKey,
nin: '12345678901'
};
# Python Example
import requests
import json
api_key = 'YOUR_API_KEY_HERE'
url = 'https://abjiktech.com.ng/api/verification/nin_by_nin.php'
payload = {
'api_key': api_key,
'nin': '12345678901'
}
1 NIN Verification Slips by NIN Number
Generate NIN verification slips using the 11-digit NIN number. 4 slip tiers available — each with its own endpoint URL, same request parameters, no special access needed. Need the tracking ID and address? Use Regular or VNIN — Premium and Standard return identity fields only.
| Slip Tier | Method | Endpoint URL |
|---|---|---|
| Premium Slip | POST | https://abjiktech.com.ng/api/verification/nin_by_nin.php |
| Standard Slip | POST | https://abjiktech.com.ng/api/verification/nin_standard_slip.php |
| Regular Slip | POST | https://abjiktech.com.ng/api/verification/nin_regular_slip.php |
| VNIN Slip | POST | https://abjiktech.com.ng/api/verification/vnin_slip.php |
Code Examples & Parameters
All 4 slip tiers accept the same parameters — just change the endpoint URL to the one you need from the table above.
Request Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| api_key | string | Yes | Your API authentication key |
| nin | string | Yes | 11-digit NIN number |
{
"api_key": "YOUR_API_KEY_HERE",
"nin": "12345678901"
}
{
"status": "success",
"response_code": "00",
"user_data": {
"nin": "12345678901",
"firstName": "JOHN",
"middleName": "MICHAEL",
"surname": "DOE",
"gender": "m",
"birthDate": "1985-05-15",
"telephoneNo": "08012345678",
"photo": "base64_encoded_jpeg..."
},
"message": "PDF generated successfully",
"pdf_base64": "base64_encoded_pdf_data_here..."
}
This is what nin_by_nin.php (Premium) and nin_standard_slip.php (Standard) actually return — identity fields only. There is no trackingId and no address in this shape. If your users need the tracking ID and residential address, see the "Response (Full Details)" tab and use the Regular or VNIN slip endpoint instead.
{
"status": "success",
"response_code": "00",
"user_data": {
"nin": "12345678901",
"firstname": "JOHN",
"surname": "DOE",
"middlename": "MICHAEL",
"gender": "m",
"birthdate": "1985-05-15",
"telephoneno": "08012345678",
"trackingId": "ABC1234567890XY",
"residence_AdressLine1": "123 Sample Street",
"residence_Town": "Ikeja",
"residence_state": "Lagos",
"birthcountry": "Nigeria",
"birthstate": "Lagos",
"birthlga": "Ikeja",
"photo": "base64_encoded_jpeg...",
"signature": "base64_encoded_jpeg..."
},
"message": "PDF generated successfully",
"pdf_base64": "base64_encoded_pdf_data_here...",
"transaction_id": "6ada933bafdb83488dc4e92a41da86"
}
Only the Regular Slip (nin_regular_slip.php) and VNIN Slip (vnin_slip.php) endpoints return this shape. This is the complete NIN record, including the real 15-character NIMC trackingId, residential address (residence_AdressLine1, residence_Town, residence_state) and place of birth (birthcountry, birthstate, birthlga). Swap the endpoint URL to nin_regular_slip.php or vnin_slip.php (same request parameters) to get this response. The user_data object is passed through exactly as our upstream provider returns it, so always read fields defensively. Note: the top-level transaction_id is our own internal reference for this request (useful for support lookups) — it is not issued by NIMC. The real NIMC tracking ID is user_data.trackingId.
$apiKey = "YOUR_API_KEY_HERE";
$nin = "12345678901"; // your NIN
$url = 'https://abjiktech.com.ng/api/verification/nin_by_nin.php';
// Make API request
$payload = json_encode([
'api_key' => $apiKey,
'nin' => $nin
]);
$ch = curl_init($url);
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => $payload,
CURLOPT_HTTPHEADER => [
'Content-Type: application/json',
'Content-Length: ' . strlen($payload)
]
]);
$response = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
$curlError = curl_error($ch);
curl_close($ch);
// Handle response
if ($curlError) {
echo "API connection failed: " . $curlError;
exit;
}
$apiResponse = json_decode($response, true);
if ($apiResponse['status'] === 'success' && !empty($apiResponse['pdf_base64'])) {
// Decode and save PDF
$pdfData = base64_decode($apiResponse['pdf_base64']);
$fileName = "nin_slip_" . $nin . ".pdf";
file_put_contents($fileName, $pdfData);
echo "PDF saved successfully: " . $fileName;
} else {
echo "Error: " . $apiResponse['message'];
}
2 NIN Verification Slips by Phone Number
Generate NIN verification slips using registered phone number. 4 slip tiers available — each with its own endpoint URL.
| Slip Tier | Method | Endpoint URL |
|---|---|---|
| Premium Slip | POST | https://abjiktech.com.ng/api/verification/nin_by_phone_premium.php |
| Standard Slip | POST | https://abjiktech.com.ng/api/verification/nin_by_phone_standard.php |
| Regular Slip | POST | https://abjiktech.com.ng/api/verification/nin_by_phone_regular.php |
| VNIN Slip | POST | https://abjiktech.com.ng/api/verification/vnin_slip.php |
Code Examples & Parameters
All 4 slip tiers accept the same parameters — just change the endpoint URL to the one you need from the table above.
Request Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| api_key | string | Yes | Your API authentication key |
| phone | string | Yes | 11-digit phone number (e.g., 08012345678) |
{
"api_key": "YOUR_API_KEY_HERE",
"phone": "08012345678"
}
{
"status": "success",
"response_code": "00",
"user_data": {
"nin": "12345678901",
"first_name": "JOHN",
"last_name": "DOE",
"middle_name": "MICHAEL",
"gender": "MALE",
"date_of_birth": "15-05-1985",
"phone_number": "08012345678",
"address": "123 Sample Street, Lagos"
},
"message": "PDF generated successfully",
"pdf_base64": "base64_encoded_pdf_data_here..."
}
3 NIN Verification Slips by Demographic Details
Generate NIN verification slips using personal demographic information.
| Slip Tier | Method | Endpoint URL |
|---|---|---|
| Premium Slip | POST | https://abjiktech.com.ng/api/verification/nin_by_demo.php |
Code Examples & Parameters
Request Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| api_key | string | Yes | Your API authentication key |
| firstname | string | Yes | Individual's first name |
| lastname | string | Yes | Individual's last name |
| dob | string | Yes | Date of birth (DD-MM-YYYY format) |
| gender | string | Yes | Accepts m, f, male, or female (case-insensitive) |
This endpoint matches against the provider's records by exact first name, last name, date of birth, and gender — there is no middle name parameter. Demographic search is inherently less reliable than searching by NIN number: even a genuine NIN holder will get a "No record found" response if any of these details differ from what was recorded at NIMC enrollment. If you have the individual's NIN, prefer the NIN-by-NIN endpoint for an exact-match lookup.
{
"api_key": "YOUR_API_KEY_HERE",
"firstname": "JOHN",
"lastname": "DOE",
"dob": "15-05-1985",
"gender": "MALE"
}
{
"status": "success",
"response_code": "00",
"user_data": {
"response_code": "00",
"description": "Successful",
"verificationType": "NIN-VERIFY",
"verificationStatus": "VERIFIED",
"transactionStatus": "SUCCESSFUL",
"transactionReference": 1783936751000,
"searchParameter": "JOHN DOE",
"response": [
{
"firstname": "JOHN",
"surname": "DOE",
"middlename": "MICHAEL",
"gender": "Male",
"telephoneno": "08012345678",
"nin": "12345678901",
"birthdate": "15-05-1985",
"photo": "base64_encoded_jpeg_data...",
"birthcountry": "Nigeria",
"birthlga": "Example LGA",
"birthstate": "Example State",
"residence_AdressLine1": "123 Sample Street",
"signature": "base64_encoded_image_data...",
"trackingId": "S7Y0NYF88000A09",
"residence_Town": "Example Town",
"residence_state": "Example State"
}
]
},
"matches": 1,
"records": [
{
"nin": "12345678901",
"firstname": "JOHN",
"surname": "DOE",
"middlename": "MICHAEL",
"gender": "Male",
"birthdate": "15-05-1985",
"birthlga": "Example LGA",
"birthstate": "Example State",
"residence_state": "Example State",
"page": 1
}
],
"message": "PDF generated successfully",
"pdf_base64": "base64_encoded_pdf_data..."
}
Field names are the provider's own casing (note residence_AdressLine1 is misspelled by the provider, and firstname/surname are lowercase, nested inside user_data.response[]) — always read fields defensively rather than assuming the exact shape shown here. Multiple matches: since this endpoint searches by demographic details rather than an exact NIN, more than one person can share the same first name, last name, date of birth, and gender. When that happens, matches will be > 1, user_data.response[] and records[] will each contain one entry per match, and the single pdf_base64 contains one page per match — the provider's own message field tells you to have the end user pick the page that's theirs (e.g. "2 records matched these details. Each one is on its own page in the PDF - select the one that is yours.").
$apiKey = "YOUR_API_KEY_HERE";
$firstName = "JOHN";
$lastName = "DOE";
$dob = "1985-05-15"; // yyyy-mm-dd from form
$gender = "MALE";
// Convert DOB from yyyy-mm-dd to dd-mm-yyyy
$formattedDob = date("d-m-Y", strtotime($dob));
$url = 'https://abjiktech.com.ng/api/verification/nin_by_demo.php';
$payload = json_encode([
'api_key' => $apiKey,
'firstname' => $firstName,
'lastname' => $lastName,
'dob' => $formattedDob,
'gender' => $gender
]);
$ch = curl_init($url);
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => $payload,
CURLOPT_HTTPHEADER => [
'Content-Type: application/json',
'Content-Length: ' . strlen($payload)
],
CURLOPT_SSL_VERIFYPEER => false,
CURLOPT_SSL_VERIFYHOST => false
]);
$response = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
$curlError = curl_error($ch);
curl_close($ch);
if (!empty($curlError)) {
echo "cURL Error: $curlError";
} elseif ($httpCode !== 200) {
echo "HTTP Error: $httpCode";
} else {
$result = json_decode($response, true);
if (!empty($result['pdf_base64'])) {
$pdfData = base64_decode($result['pdf_base64']);
$filePath = 'nin_slip_' . time() . '.pdf';
file_put_contents($filePath, $pdfData);
echo "PDF saved successfully: $filePath";
} else {
echo "Error: " . $result['message'];
}
}
4 BVN Verification Slips
Generate BVN verification slips using 11-digit BVN number. 2 service tiers available — each with its own endpoint URL.
| Slip Tier | Method | Endpoint URL |
|---|---|---|
| Premium Slip | POST | https://abjiktech.com.ng/api/verification/bvn_premium_slip.php |
| Standard Slip | POST | https://abjiktech.com.ng/api/verification/bvn_full_details_slip.php |
Code Examples & Parameters
Both slip tiers accept the same parameters — just change the endpoint URL to the one you need from the table above.
Request Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| api_key | string | Yes | Your API authentication key |
| bvn | string | Yes | 11-digit BVN number |
{
"api_key": "YOUR_API_KEY_HERE",
"bvn": "12345678901"
}
{
"status": "success",
"response_code": "00",
"user_data": {
"bvn": "12345678901",
"first_name": "JOHN",
"last_name": "DOE",
"middle_name": "MICHAEL",
"gender": "MALE",
"date_of_birth": "15-05-1985",
"phone_number": "08012345678",
"address": "123 Sample Street, Lagos"
},
"message": "BVN slip generated successfully",
"pdf_base64": "base64_encoded_pdf_data_here..."
}
5 IPE Clearance Services (API)
Manual Pending Service: Submit IPE clearance requests via API. Your request is stored as pending for manual processing by the admin team. Your balance is validated at submission, and actual deduction happens only when the request is completed. Use the Check Status endpoint to track progress.
| Service | Method | Endpoint URL |
|---|---|---|
| IPE Clearance Submission | POST | https://abjiktech.com.ng/api/verification/ipe_clearance.php |
| IPE Check Status | POST | https://abjiktech.com.ng/api/verification/get_status.php |
How it works: When you call this endpoint, your balance is checked for sufficiency and the IPE request is saved as "pending". Actual deduction happens only when the request is completed by the processing team. You'll receive a transaction ID to track your request.
Code Examples & Parameters
Request Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| api_key | string | Yes | Your API authentication key |
| trackingID | string | Yes | Unique tracking ID for the IPE submission (1-20 alphanumeric characters) |
{
"api_key": "YOUR_API_KEY_HERE",
"trackingID": "IPE202400001"
}
{
"success": true,
"message": "IPE clearance request submitted successfully. Your request is now pending processing.",
"data": {
"transaction_id": "ipe_a1b2c3d4e5f6a1b2c3d4e5f6",
"tracking_id": "IPE202400001",
"status": "pending",
"amount_charged": "500.00",
"balance_before": "5000.00",
"balance_after": "5000.00",
"note": "Your IPE clearance is being processed. You can check the status in your transaction history."
}
}
HTTP Status: 200 OK
// Insufficient balance
{
"success": false,
"message": "Insufficient balance. Your balance is ₦200.00 but IPE clearance costs ₦500.00"
}
// Duplicate tracking ID
{
"success": false,
"message": "This tracking ID has already been submitted and is pending processing."
}
// Invalid parameters
{
"success": false,
"message": "Invalid trackingID format. Must be 1 to 20 alphanumeric characters."
}
HTTP Status: 400 Bad Request
$apiKey = "YOUR_API_KEY_HERE";
$trackingID = "IPE202400001";
$url = 'https://abjiktech.com.ng/api/verification/ipe_clearance.php';
$payload = json_encode([
'api_key' => $apiKey,
'trackingID' => $trackingID
]);
$ch = curl_init($url);
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => $payload,
CURLOPT_HTTPHEADER => [
'Content-Type: application/json',
'Content-Length: ' . strlen($payload)
]
]);
$response = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
$result = json_decode($response, true);
if ($result['success'] === true) {
echo "IPE submitted! Transaction ID: " . $result['data']['transaction_id'];
echo "Status: " . $result['data']['status'];
echo "Balance after: ₦" . $result['data']['balance_after'];
} else {
echo "Error: " . $result['message'];
}
5b IPE Clearance — Check Status (API)
Check the status of a previously submitted IPE clearance request. When the IPE is completed, the response includes the new NIN and new tracking ID.
| Service | Method | Endpoint URL |
|---|---|---|
| IPE Check Status | POST | https://abjiktech.com.ng/api/verification/get_status.php |
6. NIN Validation (API)
Manual Pending Service: Submit NIN validation requests via API. This API collects the NIN and error type, stores the request as pending for manual processing by the admin team, and checks your balance at submission. Actual deduction happens only when the request is completed. Use the Check Status endpoint to track progress.
| Service | Method | Endpoint URL |
|---|---|---|
| NIN Validation | POST | https://abjiktech.com.ng/api/verification/validation.php |
| Validation Check Status | POST | https://abjiktech.com.ng/api/verification/get_status.php |
6b NIN Validation — Check Status (API)
Check the status of a previously submitted NIN validation request. Use either your ticket_id or transaction_id to look up the request.
| Service | Method | Endpoint URL |
|---|---|---|
| Validation Check Status | POST | https://abjiktech.com.ng/api/verification/validation_status.php |
NIN Personalization (API)
Submit a NIN personalization request by tracking ID. Your balance is charged upfront at your account's personalization_price. The request is forwarded to the provider and processed asynchronously — poll the status endpoint until it is completed. Refundable: if the provider rejects the submission, you are automatically refunded.
1. Submit — POST https://abjiktech.com.ng/api/verification/personalization.php
| Parameter | Type | Required | Description |
|---|---|---|---|
api_key | string | Yes | Your API authentication key |
tracking_id | string | Yes | NIN tracking ID (5–30 alphanumeric characters) |
{
"api_key": "YOUR_API_KEY_HERE",
"tracking_id": "0SXXXXXXXXXXX"
}
{
"success": true,
"message": "NIN personalization submitted successfully.",
"data": {
"transaction_id": "nin_per_xxxxxxxxxxxxxxxxxxxxxx",
"tracking_id": "0SXXXXXXXXXXX",
"status": "inprogress",
"amount_charged": "200.00",
"balance_before": "5000.00",
"balance_after": "4800.00"
},
"provider": { "success": true, "approved": true, "category": "to_get_slip", "tracking_id": "0SXXXXXXXXXXX" }
}
2. Check Status — POST https://abjiktech.com.ng/api/verification/personalization_status.php
| Parameter | Type | Required | Description |
|---|---|---|---|
api_key | string | Yes | Your API authentication key |
tracking_id | string | Yes | The tracking ID from your submit request |
Status values
| Status | Meaning | Extra |
|---|---|---|
inprogress | Still being processed by the provider | — |
completed | Personalization successful | Response includes nin |
failed | Could not be completed | — |
// Completed
{
"success": true,
"status": "completed",
"tracking_id": "0SXXXXXXXXXXX",
"nin": "12345678901",
"message": "Personalization completed."
}
Error Handling
All API responses follow a consistent format. Check the status field for success or error indications.
HTTP Status Codes
{
"status": "success",
"response_code": "00",
"user_data": {
"nin": "12345678901",
"first_name": "JOHN",
"last_name": "DOE",
"middle_name": "MICHAEL",
"gender": "MALE",
"date_of_birth": "15-05-1985",
"phone_number": "08012345678",
"address": "123 Sample Street, Lagos"
},
"message": "PDF generated successfully",
"pdf_base64": "base64_encoded_data..."
}
HTTP Status: 200 OK
{
"status": "error",
"response_code": "01",
"message": "Invalid NIN number provided",
"error_code": "INVALID_NIN"
}
HTTP Status: 400 Bad Request
{
"status": "error",
"response_code": "02",
"message": "API Response: Record not found. The ID data you entered does not exist or may be incorrect. Please ensure all details are correct and resubmit"
}
HTTP Status: 400 Bad Request
7 NIN Modification (API)
Manual Pending Service: Submit NIN modification requests on behalf of your users. Each endpoint checks your balance sufficiency and creates a pending request that is processed manually by the admin team. Balance is deducted only when the request is completed. Use the Check Status endpoint to track progress.
All NIN modification endpoints accept JSON (POST) and require your api_key.
| Service | Method | Endpoint |
|---|---|---|
| NIN Name | POST | https://abjiktech.com.ng/api/modification/nin_name.php |
| NIN Phone | POST | https://abjiktech.com.ng/api/modification/nin_phone.php |
| NIN Address | POST | https://abjiktech.com.ng/api/modification/nin_address.php |
8 BVN Modification (API)
Manual Pending Service: Submit BVN modification requests on behalf of your users. BVN modifications use a bank enrollment type that determines the cost. Use get_bvn_banks.php to list available banks and their prices. Each request checks balance sufficiency and is stored as pending and processed manually by the admin team. Balance is deducted only when the request is completed. Use the Check Status endpoint to track progress.
| Service | Method | Endpoint |
|---|---|---|
| List BVN Banks | POST | https://abjiktech.com.ng/api/modification/get_bvn_banks.php |
| BVN Name | POST | https://abjiktech.com.ng/api/modification/bvn_name.php |
| BVN Phone | POST | https://abjiktech.com.ng/api/modification/bvn_phone.php |
| BVN Address | POST | https://abjiktech.com.ng/api/modification/bvn_address.php |
| BVN Date of Birth | POST | https://abjiktech.com.ng/api/modification/bvn_dob.php |
9 Check Modification Status (API)
Look up the current status of any modification request using its transaction_id, nin, or bvn.
| Service | Method | Endpoint |
|---|---|---|
| Check Modification Status | POST | https://abjiktech.com.ng/api/modification/check_status.php |
9 NIN Validation (API)
Manual Pending Service: Submit NIN validation requests for error types like "No Record Found", "SIM Validation", etc. Each request checks balance sufficiency and creates a pending request that is processed manually by the admin team. Balance is deducted only when the request is completed. Use the Check Status endpoint to track progress.
| Service | Method | Endpoint |
|---|---|---|
| NIN Validation | POST | https://abjiktech.com.ng/api/verification/validation.php |
10 IPE Clearance (API)
Manual Pending Service: Submit IPE clearance requests using a tracking ID. Each request checks balance sufficiency and creates a pending request that is processed manually by the admin team. Balance is deducted only when the request is completed. Use the Check Status endpoint to track progress.
| Service | Method | Endpoint |
|---|---|---|
| IPE Clearance | POST | https://abjiktech.com.ng/api/verification/ipe_clearance.php |
9 Check Request Status (API)
Check the status of your pending NIN Validation, IPE Clearance, NIN Modification, or BVN Modification requests. All manual services return a transaction_id that you can use to track progress.
| Service | Method | Endpoint URL |
|---|---|---|
| Check Status | POST | https://abjiktech.com.ng/api/modification/check_status.php |
Status Flow: pending → processing → completed or failed. Check regularly using the transaction_id from your submission.
Parameters & Examples
Request Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| api_key | string | Yes | Your API authentication key |
| transaction_id | string | Yes | The transaction_id returned from your submission request |
{
"api_key": "YOUR_API_KEY_HERE",
"transaction_id": "nin_val_a1b2c3d4e5f6g7h8i9j0kl"
}
{
"success": true,
"message": "Transaction status retrieved successfully.",
"data": {
"transaction_id": "nin_val_a1b2c3d4e5f6g7h8i9j0kl",
"service_type": "NIN Validation",
"nin": "12345678901",
"error_type": "no_record",
"status": "pending",
"price": "300.00",
"submitted_at": "2026-05-09 14:30:25",
"note": "Your request is being processed by our team."
}
}
HTTP Status: 200 OK
{
"success": true,
"message": "Transaction status retrieved successfully.",
"data": {
"transaction_id": "ipe_a1b2c3d4e5f6a1b2c3d4e5f6",
"service_type": "IPE Clearance",
"tracking_id": "IPE202400001",
"status": "completed",
"price": "500.00",
"submitted_at": "2026-05-09 10:15:30",
"processed_at": "2026-05-09 16:45:12",
"result_data": "IPE clearance completed successfully. Reference: IPE-789012",
"note": "Request processed successfully."
}
}
HTTP Status: 200 OK
{
"success": true,
"message": "Transaction status retrieved successfully.",
"data": {
"transaction_id": "bvn_name_a1b2c3d4e5f6...",
"service_type": "BVN Name Modification",
"bvn": "12345678901",
"new_value": "John Doe",
"status": "failed",
"price": "5000.00",
"submitted_at": "2026-05-08 09:20:15",
"processed_at": "2026-05-09 11:30:45",
"failure_reason": "Invalid BVN or enrollment type not supported.",
"note": "Request could not be processed."
}
}
HTTP Status: 200 OK
$apiKey = "YOUR_API_KEY_HERE";
$transactionId = "nin_val_a1b2c3d4e5f6g7h8i9j0kl";
$url = 'https://abjiktech.com.ng/api/modification/check_status.php';
$payload = json_encode([}]}
'api_key' => $apiKey,
'transaction_id' => $transactionId
]);
$ch = curl_init($url);
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => $payload,
CURLOPT_HTTPHEADER => [
'Content-Type: application/json',
'Content-Length: ' . strlen($payload)
]
]);
$response = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
$result = json_decode($response, true);
if ($result['success'] === true) {
echo "Status: " . $result['data']['status'];
echo "Service: " . $result['data']['service_type'];
if ($result['data']['status'] === 'completed') {
echo "Result: " . $result['data']['result_data'];
} elseif ($result['data']['status'] === 'failed') {
echo "Reason: " . $result['data']['failure_reason'];
}
} else {
echo "Error: " . $result['message'];
}
Webhooks (Real-Time Notifications)
To avoid constantly polling our single status check endpoint, you can configure a Webhook URL in your API Summary / Developer Dashboard. Whenever an admin updates the status of your manual processing requests (NIN Modification, BVN Modification, IPE Clearance, etc.), we will immediately send an HTTP POST request to your specified Webhook URL with the updated status and data.
Example Webhook Payload
When an event occurs, your endpoint will receive a JSON payload that looks like this:
{
"event_type": "modification_status_update",
"timestamp": "2026-05-11T12:00:00+01:00",
"webhook_id": "wh_a1b2c3d4e5f6g7h8i9j0",
"data": {
"transaction_id": "MOD-1234567890",
"service_type": "NIN Modification",
"status": "Successful",
"remarks": "Modification completed successfully",
"updated_at": "2026-05-11 12:00:00"
}
}
How to Handle Webhooks (PHP Example)
Your webhook handler should be set up to accept incoming JSON streams, process them, and return an HTTP 200 response to acknowledge receipt.
<?php
// read incoming JSON payload
$input = file_get_contents("php://input");
$event = json_decode($input, true);
// Verify webhook has required data
if (isset($event['event_type']) && isset($event['data'])) {
// Extract transaction detail
$transactionId = $event['data']['transaction_id'];
$newStatus = $event['data']['status'];
$remarks = $event['data']['remarks'];
// Update your database...
// mysqli_query($conn, "UPDATE my_orders SET status='$newStatus' WHERE txn_id='$transactionId'");
// IMPORTANT: Always respond with 200 OK so we know you received it.
http_response_code(200);
echo json_encode(["status" => "success", "message" => "Webhook received"]);
} else {
// Bad request
http_response_code(400);
}
?>