Identity

The Most Complete KYC/B (Know Your Customer or Business) Guide

Identity verification is vital when authenticating a user. We combine identity validation with ownership to reduce risk and fraud. Without the ability to digitally validate an end-user’s identity in real-time, consumers may be forced to manually upload and email sensitive information or even worse, submit a paper application.

📘

Need to verify customers against their biometric data?

Significantly reduce the possibility of fraud by confirming the person using your product is the account owner at the validated bank. Try Selfie Verification now.

These methods are less secure and less efficient than Okra’s automated and real-time alternative. Any user with online or mobile banking can validate ownership of their financial data, allowing you to safely unlock your services. Once a user connects, we can automatically retrieve BVN, biometric photo, and a full KYC profile — you’ll never ask for BVN again.

Read more about Identity @ get.okra.ng/identity-deck

Overview

Okra Identity product helps you verify users' identities by accessing the information on file with their financial institution and retrieve a full KYC profile for an individual or corporate entity across all banks in Nigeria. Using Identity, you can access a user's phone number, email address, mailing address, many more. This can be used for prefilling account information, as well as for verifying with a trusted source that information they provided about themselves is correct. Fraud reduction and complementing of Know Your Customer (KYC) compliance are common applications for Identity.

Use OkraJS to instantly authenticate your customer's account and retrieve a full identity profile in real-time:

  • Validated BVN or RC Number
  • Validated Company Registration and Tax Details (corporate entities only)
  • BVN Identity Photo
  • DTI (Debt-to-Income score)
  • Mother’s Maiden Name*
  • Full Name or Company Name
  • Alias(es)
  • Gender*
  • Date of Birth
  • Email Address(es)
  • Addresses
  • Phone number(s)
  • Photo ID(s)*

Depending on the use case of your product, you may want to retrieve a full KYC profile from their bank, verify the identity of all users, or only some. For example, you might want to verify the identity of any user on your platform requesting a loan, or you might only validate users who you have identified as being underaged, supposing your platform require adults.

Sample Identity Data

Identity data includes names, addresses, email address, and phone numbers. Here's a sample data of an identity response.

{
    "status": "success",
    "message": "Identity retrieved succesfully",
    "data": {
        "pagination": {
            "totalDocs": 1,
            "limit": 20,
            "hasPrevPage": false,
            "hasNextPage": false,
            "page": 1,
            "totalPages": 1,
            "pagingCounter": 1,
            "prevPage": null,
            "nextPage": null
        },
        "identity": [
            {
                "_id": "604ba2ea247435813de02e2e",
                "aliases": [
                    "mr",
                    "",
                    ""
                ],
                "phone": [
                    "+23480123456789",
                    ""
                ],
                "email": ["[email protected]"],
                "verified": true,
                "next_of_kins": [
                    "Peace Ebuka"
                ],
                "address": [
                    null,
                    "10, Western Road"
                ],
                "owner": [
                    {
                        "_id": "604ba2ea247435813de02e2e",
                        "name": "Silicon Valley Inc"
                    }
                ],
                "record": null,
                "bvn": "22123456789",
                "firstname": "Emeka",
                "lastname": "Tayo",
                "fullname": "Sulaimon",
                "dob": 02/12/2001,
                "gender": "single":,
                "marital_status": "single",
                "customer": {
                    "_id": "604ba2ea247435813de02e2e",
                    "name": "Jola Chinedu Mohammed"
                },
                "env": "production",
                "photo_id": [
                    {
                        "_id": "",
                        "url": "",
                        "image_type": "png",
                        "bank": "Plaris Bank"
                    }
                ],
                "created_at": "2020-04-13T01:28:09.899Z",
                "last_updated": "2020-09-15T10:44:21.645Z",
                "__v": 2,
                "middlename": "Titus",
                "score": "40",
                "smileId": true,
                "enrollment": {
                    "bank": "",
                    "branch": "",
                    "registration_date": ""
                },
                "level_of_account": "",
                "lga_of_origin": "",
                "lga_of_residence": "",
                "nationality": "Nigeria",
                "state_of_origin": "",
                "state_of_residence": "",
                "watch_listed": "",
                "rc_number": "923376",
                "bvn_updated": true,
                "ref_ids": [],
                "smile_identity": {
                    "result_code": "",
                    "message": "",
                    "updatedFrom": "",
                    "updatedAt": "2020-09-10T01:54:29.994Z"
                },
                "employer": [],
                "id": "PKO003"
            }
        ]
    }
}

Data Identity Matching

The /identity/getById endpoint provides you with several pieces of information. While email address, phone number, and address are usually available, only name is guaranteed to be available..

Name

Identity is guaranteed to return name data, making name matching a reliable way to verify identity. In some cases, slight differences can appear between data returned by Identity and data provided by legitimate users. For example, a user might omit their middle name in your application, or provide a shortened version of their legal name. There are several techniques you can implement to reduce the chance of these mismatches, including substring matching, string cleaning to remove data such as initials and suffixes, or applying a fuzzy matching algorithm, for which many open-source implementations are available.

Email address and phone number

Matching email addresses can be done straightforwardly. You can also match a phone number after transforming it to the same format as the phone number that you have obtained from your user.

BVN Verification / Retrieval

Lookup details customer information with a simple BVN.

Verifying a customer using their BVN is simple. You can do a BVN Check / Retrieval either do this via our Widget or directly via our API which will allow the customer to give you permission. You can use the resulting BVN to obtain a KYC profile of your customer and verify them.

Run a BVN check on any of your customer's

curl -X POST https://api.okra.ng/v2/products/kyc/bvn-verify
-H 'Content-Type: application/json'
-d '{
  "testing" : boolean, // optional if testing
  "success": boolean, //options if testing 
  "currency" : "NGN",
  "bvn" : "String"
}'
{
    "status": "success",
    "message": "Identity succesfully retrieved",
    "data": {
        "identity": {
            "fullname": "GAVIN BELSON",
            "id": "5da6358130a943486f288d9d",
            "bvn": "12331106253",
            "score": "0",
            "env": "production",
            "created_at": "2019-12-14T13:46:53.415Z",
            "last_updated": "2021-01-26T10:14:56.300Z",
            "aliases": [],
            "customer": {
                "_id": "5da6358130a943486f288d9d",
                "name": "GAVIN BELSON"
            },
            "dob": "1979-09-27",
            "gender": "M",
            "middlename": "MIDDLENAME",
            "firstname": "GAVIN",
            "lastname": "BELSON",
            "phone": [
                "2347088793567"
            ],
            "email": [],
            "address": [
                "4 AKANNI BASHORUN,LEKKI  LAGOS"
            ],
            "verified": true,
            "photo_id": [{..photo data..}
            ],
            "status": "failed"
        },
        "customer": "5da6358130a943486f288d9d",
        "account": "5da6358130a943486f288d9d",
        "receipt": {
            "status": true,
            "msg": "Receipt has been successfully created",
            "data": {
                "receipt": {
                    "adjustment": {
                        "receipts": []
                    },
                    "breakdown": {
                        "discount": 0,
                        "billable_products": []
                    },
                    "billingStatus": true,
                    "adjusted": null,
                    "adjusted_receipt": false,
                    "adjusted_type": null,
                    "method": "wallet",
                    "charge": 250,
                    "wallet_balance": 993329.25,
                    "addons": [],
                    "_id": "5da6358130a943486f288d9d",
                    "owner": "5da6358130a943486f288d9d",
                    "type": "nuban-verify",
                    "currency": "NGN",
                    "plan": "payg",
                    "plan_type": "5da6358130a943486f288d9d",
                    "created_at": "2021-01-26T10:15:35.534Z",
                    "last_updated": "2021-01-26T10:15:35.534Z",
                    "__v": 0
                }
            }
        },
        "record": {
            "usedProduct": {
                "periodic-transactions": {
                    "status": false,
                    "number": 0
                },
                "guarantors": {
                    "status": false,
                    "number": 0
                },
                "directors": {
                    "status": false,
                    "number": 0
                },
                "auth": false,
                "balance": false,
                "accounts": false,
                "transactions": false,
                "income": false,
                "identity": true,
                "payment": false,
                "direct-debit": false
            },
            "status": {
                "process": {
                    "running": false,
                    "completed": true
                }
            },
            "retry": {
                "status": false
            },
            "fixed": false,
            "products": [
                "auth",
                "identity",
                "balance",
                "income",
                "transactions",
                "guarantors",
                "periodic-transactions",
                "periodic-balance"
            ],
            "billable_products": [
                "identity"
            ],
            "source": "api",
            "manual": true,
            "limit": 3,
            "connected_account": [
                "5da6358130a943486f288d9d"
            ],
            "account": [
                "5da6358130a943486f288d9d"
            ],
            "currency": "NGN",
            "adjusted": null,
            "projects": [],
            "_id": "5da6358130a943486f288d9d",
            "connectionId": "fjbc7li1ndr",
            "owner": "5da6358130a943486f288d9d",
            "bank": "5da6358130a943486f288d9d",
            "app_v": 2,
            "env": "production",
            "created_at": "2021-01-26T10:15:30.078Z",
            "last_updated": "2021-01-26T10:15:35.837Z",
            "__v": 0,
            "customer": "5da6358130a943486f288d9d"
        }
    }
}

Test it out live in our reference.

NUBAN Identity Retrieval

Verify a customer's identity with only their NUBAN

📘

Try our Selfie Verification

Validate the customer holding the device and using your application exactly who they say they are by taking advantage of our Selfie Verification service.

If you don't have your customer's BVN but you still have their account information via proper GDPR / NDPR guidelines, we can now allow you to verify a customer's identity using only their NUBAN. You can also verify a customer via RC numbers and TIN numbers for corporate accounts via our RC/TIN Verification service.

Fetch Identity by NUBAN

curl -X POST https://api.okra.ng/v2/products/kyc/nuban-verify
-H 'Content-Type: application/json' 
-H 'Authorization: Bearer <secretKey>'
-d '{
    "nuban":  ACCOUNT NUMBER,
    "bank": BANK ID,
    "testing": true/false, //TRUE if for testing purposes only
    "success: true/false // ONLY send with testing "true"
}'
{
    "status": "success",
    "message": "Identity succesfully retrieved",
    "data": {
        "identity": {
            "fullname": "GAVIN BELSON",
            "id": "5da6358130a943486f288d9d",
            "bvn": "12331106253",
            "score": "0",
            "env": "production",
            "created_at": "2019-12-14T13:46:53.415Z",
            "last_updated": "2021-01-26T10:14:56.300Z",
            "aliases": [],
            "customer": {
                "_id": "5da6358130a943486f288d9d",
                "name": "GAVIN BELSON"
            },
            "dob": "1979-09-27",
            "gender": "M",
            "middlename": "MIDDLENAME",
            "firstname": "GAVIN",
            "lastname": "BELSON",
            "phone": [
                "2347088793567"
            ],
            "email": [],
            "address": [
                "4 AKANNI BASHORUN,LEKKI  LAGOS"
            ],
            "verified": true,
            "photo_id": [{..photo data..}
            ],
            "status": "failed"
        },
        "customer": "5da6358130a943486f288d9d",
        "account": "5da6358130a943486f288d9d",
        "receipt": {
            "status": true,
            "msg": "Receipt has been successfully created",
            "data": {
                "receipt": {
                    "adjustment": {
                        "receipts": []
                    },
                    "breakdown": {
                        "discount": 0,
                        "billable_products": []
                    },
                    "billingStatus": true,
                    "adjusted": null,
                    "adjusted_receipt": false,
                    "adjusted_type": null,
                    "method": "wallet",
                    "charge": 250,
                    "wallet_balance": 993329.25,
                    "addons": [],
                    "_id": "5da6358130a943486f288d9d",
                    "owner": "5da6358130a943486f288d9d",
                    "type": "nuban-verify",
                    "currency": "NGN",
                    "plan": "payg",
                    "plan_type": "5da6358130a943486f288d9d",
                    "created_at": "2021-01-26T10:15:35.534Z",
                    "last_updated": "2021-01-26T10:15:35.534Z",
                    "__v": 0
                }
            }
        },
        "record": {
            "usedProduct": {
                "periodic-transactions": {
                    "status": false,
                    "number": 0
                },
                "guarantors": {
                    "status": false,
                    "number": 0
                },
                "directors": {
                    "status": false,
                    "number": 0
                },
                "auth": false,
                "balance": false,
                "accounts": false,
                "transactions": false,
                "income": false,
                "identity": true,
                "payment": false,
                "direct-debit": false
            },
            "status": {
                "process": {
                    "running": false,
                    "completed": true
                }
            },
            "retry": {
                "status": false
            },
            "fixed": false,
            "products": [
                "auth",
                "identity",
                "balance",
                "income",
                "transactions",
                "guarantors",
                "periodic-transactions",
                "periodic-balance"
            ],
            "billable_products": [
                "identity"
            ],
            "source": "api",
            "manual": true,
            "limit": 3,
            "connected_account": [
                "5da6358130a943486f288d9d"
            ],
            "account": [
                "5da6358130a943486f288d9d"
            ],
            "currency": "NGN",
            "adjusted": null,
            "projects": [],
            "_id": "5da6358130a943486f288d9d",
            "connectionId": "fjbc7li1ndr",
            "owner": "5da6358130a943486f288d9d",
            "bank": "5da6358130a943486f288d9d",
            "app_v": 2,
            "env": "production",
            "created_at": "2021-01-26T10:15:30.078Z",
            "last_updated": "2021-01-26T10:15:35.837Z",
            "__v": 0,
            "customer": "5da6358130a943486f288d9d"
        }
    }
}

You can find a list of Bank ID's here

RC/TIN KYB Retrieval

Verify any business in Nigeria using only their RC Number or RC Number and TIN

Coming soon to 🇰🇪Kenya and 🇿🇦South Africa

RC & TIN Verification

curl -X POST https://api.okra.ng/v2/products/kyc/rc-tin-verify
-H 'Content-Type: application/json'
-d '{
  "currency" : String,
  "rc_number" : String,
  "company_name" : String,
  "tin_number" : "String
}'
http code 200
{
    "status": "success",
    "message": "Company RC & TIN successfully verified!",
    "data": {
        "rc_info": {
            "details": {
                "rc_no": "String",
                "company_name": "String",
                "address": "String",
                "date_reg": "String (YYYY-MM-DD)"
            },
            "status": "String (success || fail)",
            "message": "String"
        },
        "tin_info": {
            "status": "String (success || fail)",
            "message": "String",
            "details": {
                "tax_no": "String",
                "tax_payer_name": "String",
                "tax_payer_phone": "String",
                "tax_payer_email": "String",
                "tax_authority": "String",
                "tax_authority_phone": "String",
                "tax_authority_email": "String"
            }
        }
    }
}

RC Verification

curl -X POST https://api.okra.ng/v2/products/kyc/rc-verify
-H 'Content-Type: application/json'
-d ' {
    rc_number, //required
    company_name, // required
    success, //optional boolean (for testing)
    testing,//option boolean (for testing)
}'
http code 200
{
    "status": "String (success || fail)",
    "message": "String",
    "data": {
        "status": boolean,
        "message": "String",
        "details": {
            "rc_no": "String",
            "company_name": "String",
            "address": "String",
            "date_reg": "String"
        }
    }
}

TIN Verification

l -X POST https://api.okra.ng/v2/products/kyc/tin-verify
-H 'Content-Type: application/json'
-d '{
  {
    "tax_no": "",
    "tax_payer_name": "",
    "tax_payer_phone": "",
    "tax_payer_email": "",
    "tax_authority": "",
    "tax_authority_phone": "",
    "tax_authority_email": " ",
    "currency" : "String",
    "tin_number" : "String"// required,
    "company_name", "String"// required,
    "dob" : "String (YYYY-MM-DD)",
  }
}'
http code 200
{
    "status": "String (success || fail)",
    "message": "Company TIN Verified",
    "data": {
        "status": boolean,
        "message": "String",
        "details": {
            "tax_no": "String",
            "tax_payer_name": "String",
            "tax_payer_phone": "String",
            "tax_payer_email": "String",
            "tax_authority": "String",
            "tax_authority_phone": "String",
            "tax_authority_email": "String"
        }
    }
}

Test it out live in our reference.

NIN Retrieval

Verifying a customer using their NIN is simple. You can do a NIN Check / Retrieval either do via our Widget or directly via our API which will allow the customer to give you permission. You can use the resulting NIN to obtain the KYC profile of your customer and verify them.

Run a NIN check on any of your customer's

Run a quick check on any of your customers to verify their identity.

curl -X POST https://api.okra.ng/v2/products/kyc/nin-verify
-H 'Content-Type: application/json'
-d '{
  "testing" : boolean, // optional if testing
  "success": boolean, //options if testing 
  "currency" : "NGN",
  "nin" : "String"
}'
curl -X POST https://api.okra.ng/v2/products/kyc/nin-verify
-H 'Content-Type: application/json'
-d '{
  "testing" : boolean, // optional if testing
  "success": boolean, //options if testing 
  "currency" : "NGN",
  "nin" : "String"
}'

Did this page help you?