Introduction!
The Eazy-verif RESTFUL API is a very important part of the Eazymobile platform. The API is built using restful endpoints, standard HTTP verbs which uses standard HTTP response codes to indicate if an API request is successful or not. This allows you to verify the identities of other individuals all over the country. This could be for hiring, Background checks, etc
Get started!
start integrating our restful API's into your beautiful products by following the steps below:
Step 1
Register an account with us on Eazymobile, complete the necessary KYC VERIFICATION process, and upgrade to the MERCHANT LEVEL. Doing these automatically generates an API token
(a dedicated Secret Key
and Public Key
) for you. Register an account
Step 2
Log in to your account, and on your Dashboard, Navigate to Account Settings, select 'Profile'
and click on 'API settings
' to get your API Keys
. Copy your
dedicated API Keys
( sk_live_xxxxx
or pk_live_xxxxx
)
to your desire workspace.
Base url: https://app.eazymobile.ng
Sandbox: https://sandbox.eazymobile.ng coming soon
Fetch Available Kyc Type
Fetch Available Kyc Type
This endpoint allows you to query all the kyc type that we have. It returns json array for kyc types.
/v2/seamless/allkyc/typePOST
Parameter | Type | Field | Description |
---|---|---|---|
Authorization | Bearer | Required | Your bearer key might be your sk_live_xxxxx or pk_live_xxxxx |
accessToken | String | Required | This is a unique identifier which gives you access to our API, contact us for provision |
Sample Request Code
We have made things easier for you, through our step-by-step procedures.
-
{
"accessToken" : "02505b8b0db740a7b221f177599f6c6d"
}
{
"accessToken" : "02505b8b0db740a7b221f177599f6c6d"
}
Sample Response Code
We have made things easier for you, through our step-by-step procedures.
-
{
"status": true,
"response": {
"code": 200,
"kycList": [
{
"kycName": "BANK VERIFICATION NUMBER",
"kycType": "BVN_V",
"kycAmount": "70.00"
},
{
"kycName": "NATIONAL IDENTIFICATION NUMBER",
"kycType": "NIN_V",
"kycAmount": "70.00"
},
{
"kycName": "VOTER'S CARD NUMBER",
"kycType": "VIN_V",
"kycAmount": "70.00"
},
{
"kycName": "DRIVERS LICENSE",
"kycType": "DLICENSE_VERIF",
"kycAmount": "70.00"
},
{
"kycName": "INTERNATIONAL PASSPORT",
"kycType": "INTL_V",
"kycAmount": "70.00"
}
]
}
}
{
"status": true,
"response": {
"code": 200,
"kycList": [
{
"kycName": "BANK VERIFICATION NUMBER",
"kycType": "BVN_V",
"kycAmount": "70.00"
},
{
"kycName": "NATIONAL IDENTITY NUMBER",
"kycType": "NIN_V",
"kycAmount": "70.00"
},
{
"kycName": "VOTER'S CARD NUMBER",
"kycType": "VIN_V",
"kycAmount": "70.00"
},
{
"kycName": "DRIVERS LICENSE",
"kycType": "DLICENSE_VERIF",
"kycAmount": "70.00"
},
{
"kycName": "INTERNATIONAL PASSPORT",
"kycType": "INTL_V",
"kycAmount": "70.00"
}
]
}
}
Bank Verification Number (BVN)
This endpoint allows you to shoot your 'bvn verification' request to our system. It returns json array for 'BVN'.
/api/v2/seamless/bvn/verify POST
Parameter | Type | Field | Description |
---|---|---|---|
Authorization | Bearer | Required | Your bearer key might be your sk_live_xxxxx or pk_live_xxxxx |
accessToken | String | Required | This is a unique identifier which gives you access to our API, contact us for provision |
merchantUrl | String | Required | This is a unique identifier which allows us to verify your request server against our record |
kycType | String | Required | You're required to send us the kycType, check the 'Fetch Available Kyc Type' documentaion for more info |
bvnNo | String | Required | This is the bank verification number (BVN). |
firstName | String | Required | This is the BVN firstname |
lastName | String | Required | This is the BVN lastname (known as Surname). |
Sample Request Code
We have made things easier for you, through our step-by-step procedures
{
"accessToken" : "02505b8b0db740a7b221f177599f6c6d",
"merchantUrl" : "www.eazymobile.ng",
"kycType" : "BVN_V",
"bvnNo" : "00000000000",
"firstName" : "MNENA",
"lastName" : "AWE"
}
Sample Response Code
We have made things easier for you, through our step-by-step procedures
-
{
"status": true,
"response": {
"code": 200,
"data": {
"verified": "SUCCESS",
"bvn": "2200000000",
"firstname": "MNUNI",
"lastname": "AWE",
"birthdate": "07-01-1982",
"middlename": "",
"phone": "08000000000",
"gender": "Female",
"photo": "/9j/4AAQSkZJRgABAgAAAQABAAD/2/9k=",
"nationality": "Nigeria",
"type": "BVN"
},
"queryID": "E-KYCB-LR4DALWV0T325"
},
"requestTime": "2022-24-04 01:57:30"
}
{
"status": true,
"response": {
"code": 200,
"data": {
"verified": "SUCCESS",
"bvn": "2200000000",
"firstname": "MNUNI",
"lastname": "AWE",
"birthdate": "07-01-1982",
"middlename": "",
"phone": "08000000000",
"gender": "Female",
"photo": "/9j/4AAQSkZJRgABAgAAAQABAAD/2/9k=",
"nationality": "Nigeria",
"type": "BVN"
},
"queryID": "E-KYCB-LR4DALWV0T325"
},
"requestTime": "2022-24-04 01:57:30"
}
National Identification Number (NIN)
This endpoint allows you to shoot your 'NIN verification' request to our system. It returns json array for 'NIN'.
/api/v2/seamless/nin/verify POST
Parameter | Type | Field | Description |
---|---|---|---|
Authorization | Bearer | Required | Your bearer key might be your sk_live_xxxxx or pk_live_xxxxx |
accessToken | String | Required | This is a unique identifier which gives you access to our API, contact us for provision |
kycType | String | Required | You're required to send us the kycType, check the 'Fetch Available Kyc Type' documentaion for more info |
ninNo | String | Required | This is the National Identification number (NIN). |
firstName | String | Required | This is the NIN firstname |
lastName | String | Required | This is the NIN lastname (known as Surname). |
Sample Request Code
We have made things easier for you, through our step-by-step procedures
{
"accessToken" : "02505b8b0db740a7b221f177599f6c6d",
"merchantUrl" : "www.eazymobile.ng",
"kycType" : "NIN_V",
"ninNo" : "00000000000",
"firstName" : "MNENA",
"lastName" : "AWE"
}
Sample Response Code
We have made things easier for you, through our step-by-step procedures
-
{
"status": true,
"response": {
"code": 200,
"data": {
"verified": "SUCCESS",
"nin": "2200000000",
"firstname": "MNUNI",
"lastname": "AWE",
"birthdate": "07-01-1982",
"middlename": "",
"phone": "08000000000",
"gender": "Female",
"photo": "/9j/4AAQSkZJRgABAgAAAQABAAD/2/9k=",
"nationality": "Nigeria",
"type": "NIN"
},
"queryID": "E-KYCN-LR4DALWV0T325"
},
"requestTime": "2022-24-04 01:57:30"
}
{
"status": true,
"response": {
"code": 200,
"data": {
"verified": "SUCCESS",
"nin": "2200000000",
"firstname": "MNUNI",
"lastname": "AWE",
"birthdate": "07-01-1982",
"middlename": "",
"phone": "08000000000",
"gender": "Female",
"photo": "/9j/4AAQSkZJRgABAgAAAQABAAD/2/9k=",
"nationality": "Nigeria",
"type": "NIN"
},
"queryID": "E-KYCN-LR4DALWV0T325"
},
"requestTime": "2022-24-04 01:57:30"
}
Voter's Identification Number (VIN)
This endpoint allows you to shoot your 'VIN verification' request to our system. It returns json array for 'VIN'.
/api/v2/seamless/vin/verify POST
Parameter | Type | Field | Description |
---|---|---|---|
Authorization | Bearer | Required | Your bearer key might be your sk_live_xxxxx or pk_live_xxxxx |
accessToken | String | Required | This is a unique identifier which gives you access to our API, contact us for provision |
kycType | String | Required | You're required to send us the kycType, check the 'Fetch Available Kyc Type' documentaion for more info |
vinNo | String | Required | This is the Voter's Identification number (VIN). |
state | String | Required | This is the Voter's Identification number State. |
dob | String | Required | This is the VIN bearer Date of Birth. Format: YYYY-MM-DD |
firstName | String | Required | This is the VIN firstname |
lastName | String | Required | This is the VIN lastname (known as Surname). |
Sample Request Code
We have made things easier for you, through our step-by-step procedures
{
"accessToken" : "02505b8b0db740a7b221f177599f6c6d",
"merchantUrl" : "www.eazymobile.ng",
"kycType" : "VIN_V",
"vinNo" : "00000000000",
"state" : "OYO",
"dob" : "1997-11-21",
"firstName" : "MNENA",
"lastName" : "AWE"
}
Sample Response Code
We have made things easier for you, through our step-by-step procedures
-
{
"status": true,
"response": {
"code": 200,
"data": {
"verified": "SUCCESS",
"lastname": "MNANU",
"firstname": "WILLIAM",
"birthdate": "27/06/1974",
"vinno": "90F5000000000000",
"pollingunit": "CARPENTER'S HALL",
"pollingunitcode": "",
"stateofIssue": "",
"lga": "",
"gender": "Male",
"type": "VIN"
},
"queryID": "E-KYCV-X8TXN6RU7SY44"
},
"requestTime": "2022-24-04 02:20:48"
}
{
"status": true,
"response": {
"code": 200,
"data": {
"verified": "SUCCESS",
"lastname": "MNANU",
"firstname": "WILLIAM",
"birthdate": "27/06/1974",
"vinno": "90F5000000000000",
"pollingunit": "CARPENTER'S HALL",
"pollingunitcode": "",
"stateofIssue": "",
"lga": "",
"gender": "Male",
"type": "VIN"
},
"queryID": "E-KYCV-X8TXN6RU7SY44"
},
"requestTime": "2022-24-04 02:20:48"
}
Driver's License Number (DLICENSE)
This endpoint allows you to shoot your 'DLICENSE verification' request to our system. It returns json array for 'DLICENSE'.
/api/v2/seamless/dlicense/verify POST
Parameter | Type | Field | Description |
---|---|---|---|
Authorization | Bearer | Required | Your bearer key might be your sk_live_xxxxx or pk_live_xxxxx |
accessToken | String | Required | This is a unique identifier which gives you access to our API, contact us for provision |
kycType | String | Required | You're required to send us the kycType, check the 'Fetch Available Kyc Type' documentaion for more info |
dlicenseNo | String | Required | This is the Driver's License Number (DLICENSE). |
firstName | String | Required | This is the DLICENSE firstname |
lastName | String | Required | This is the DLICENSE lastname (known as Surname). |
Sample Request Code
We have made things easier for you, through our step-by-step procedures
{
"accessToken" : "02505b8b0db740a7b221f177599f6c6d",
"merchantUrl" : "www.eazymobile.ng",
"kycType" : "DLICENSE_V",
"dlicenseNo" : "00000000000",
"firstName" : "MNENA",
"lastName" : "AWE"
}
Sample Response Code
We have made things easier for you, through our step-by-step procedures
-
{
"status": true,
"response": {
"code": 200,
"data": {
"verified": "SUCCESS",
"license": "CEN00000000000",
"firstname": "SAMUEL",
"lastname": "NNA",
"birthdate": "07-08-1992",
"middlename": null,
"issuedate": "11-01-2015",
"expirydate": "01-08-2020",
"stateofIssue": "EDO",
"gender": "Male",
"photo": "/9j/4AAQSkZJRgABAgAAAQABAAD/2/9k=",
"type": "DLICENSE"
},
"queryID": "E-KYCDL-83JRR8OF6RA45"
},
"requestTime": "2022-24-04 02:37:48"
}
{
"status": true,
"response": {
"code": 200,
"data": {
"verified": "SUCCESS",
"license": "CEN00000000000",
"firstname": "SAMUEL",
"lastname": "NNA",
"birthdate": "07-08-1992",
"middlename": null,
"issuedate": "11-01-2015",
"expirydate": "01-08-2020",
"stateofIssue": "EDO",
"gender": "Male",
"photo": "/9j/4AAQSkZJRgABAgAAAQABAAD/2/9k=",
"type": "DLICENSE"
},
"queryID": "E-KYCDL-83JRR8OF6RA45"
},
"requestTime": "2022-24-04 02:37:48"
}
International Verification Number (INTLNO)
This endpoint allows you to shoot your 'INTLNO verification' request to our system. It returns json array for 'INTLNO'.
/api/v2/seamless/intl/verify POST
Parameter | Type | Field | Description |
---|---|---|---|
Authorization | Bearer | Required | Your bearer key might be your sk_live_xxxxx or pk_live_xxxxx |
accessToken | String | Required | This is a unique identifier which gives you access to our API, contact us for provision |
kycType | String | Required | You're required to send us the kycType, check the 'Fetch Available Kyc Type' documentaion for more info |
intlNo | String | Required | This is the International Passport Number (INTLNO). |
dob | String | Required | This is the INTLNO bearer Date of Birth. Format: YYYY-MM-DD |
firstName | String | Required | This is the INTLNO firstname |
lastName | String | Required | This is the INTLNO lastname (known as Surname). |
Sample Request Code
We have made things easier for you, through our step-by-step procedures
{
"accessToken" : "02505b8b0db740a7b221f177599f6c6d",
"merchantUrl" : "www.eazymobile.ng",
"kycType" : "INTL_V",
"intlNo" : "00000000000",
"dob" : "1975-06-11",
"firstName" : "MNENA",
"lastName" : "AWE"
}
Sample Response Code
We have made things easier for you, through our step-by-step procedures
-
{
"status": true,
"response": {
"code": 200,
"data": {
"verified": "SUCCESS",
"intlno": "A0000000000",
"lastname": "OLOPE",
"firstname": "ANTHONY",
"middlename": "KAYODE",
"birthdate": "1965-05-22",
"phone": "090000000000",
"photo": "/9j/4AAQSkZJRgABAgAAAQABAAD/2/9k=",
"issuedate": "2018-04-30",
"expirydate": "2023-04-29",
"gender": "Male",
"type": "INTL"
},
"queryID": "E-KYCINT-5BZ3DPCOIQJ07"
},
"requestTime": "2022-24-04 02:50:11"
}
{
"status": true,
"response": {
"code": 200,
"data": {
"verified": "SUCCESS",
"intlno": "A0000000000",
"lastname": "OLOPE",
"firstname": "ANTHONY",
"middlename": "KAYODE",
"birthdate": "1965-05-22",
"phone": "090000000000",
"photo": "/9j/4AAQSkZJRgABAgAAAQABAAD/2/9k=",
"issuedate": "2018-04-30",
"expirydate": "2023-04-29",
"gender": "Male",
"type": "INTL"
},
"queryID": "E-KYCINT-5BZ3DPCOIQJ07"
},
"requestTime": "2022-24-04 02:50:11"
}
About Webhooks 🚀
User's webhook gets notified about transaction events that happen in their Eazymobile account.
What is a webhook?
Webhooks are events we send to your pre-set endpoints via HTTP POST requests. They serve as a means of notification for when transaction(s) has been completed. For example, if you implement webhook, once a transaction status changes, we will immediately notify your pre-set endpoints.
Which Transactions require webhooks?
At the moment the following Transactions require webhooks to be set:
- Airtime to Cash
- Airtime to Swap
- Kyc Verification
How do I add my webhook?
How to setup webhooks on yourEazymobile dashboard
Login to your Eazymobile dashboard then click on Account settings, select profile on the profile page navigate to webhook URL to add a webhook.
Here are some things to note when setting up a webhook URL:
- If using
.htaccess
, remember to add the trailing/
to the url you set. - Do a test post to your URL and ensure the script gets the post body.
- Ensure your webhook URL is publicly available (localhost URLs cannot receive events)
Receiving an event
All you have to do to receive the event is to create an unauthenticated POST route on your application. The event object is sent as JSON in the request body.
-
<?php
// Retrieve the request's body and parse it as JSON
$input = @file_get_contents("php://input");
$event = json_decode($input);
// Do something with $event
http_response_code(200); // PHP 5.4 or greater
?>
Sample Response Code
{
"status":true,
"data":{
"mobileNumber" => "08100730073"
"valueRecieved" => "1000.00"
"valueConverted" => "800.00"
"type" => "Airtime Exchange"
"transactionStatus" => "Success"
"reason" => "This transaction was well received. Thank you."
"transactionRef" => "E-A2C-API-S0ST2XVFW7D07"
"refNo" => "e-Gb9j4sdo8JiXgLsXojjnwvg3Vcdcb3QF9887bh8l"
"token" => "a2c_Hb87u4sdo9JiGgJsX88gHThdgjd7tGDggahw"
"createdAt" => "2021-11-09 22:47:07"
}
}
Response and Error Codes
The Eazymobile API returns HTTP status codes in addition to JSON-based error codes and messages. The Eazymobile API attempts to return appropriate HTTP status codes for every request. Every response will be mapped to an appropriate HTTP Status Code.
The JSON-based response have been grouped, so as to ease identification.
Error Group | Error Description | HTTP Status Code |
---|---|---|
Authorization | Errors like "Unauthorized" or client error | 401 |
Bad Method (s) | Errors related to the method used, like using "POST" for "GET" request | 405 |
Billing | Billing and Payment related errors like "Insufficient funds" | 407 |
Parameters | Errors related to "fields" or "parameters" used | 403 |
Request Error | Errors like unable to determine this plan | 406 |
Customer Error | Errors related to "Invalid" Phone number | 402 |
Customer Error | Errors related to "duplicate reference" | 409 |
Unavailable | Errors like Service "Unavailable" | 503 |
Request Pending | Errors like "Pending" request | 400 |
Network Errors | Errors related to network | 300 |
Success | Completed transactions | 200 |