Skip to main content

Overview

KYC stands for Know Your Customer. It is the process of verifying that the people and businesses using your platform are who they claim to be. The CBN (Central Bank of Nigeria) requires all financial platforms to perform KYC checks before allowing customers to transact above certain thresholds. The Union Bank BaaS KYC API connects to Nigeria’s official identity databases so you can verify customers in real-time without building your own integrations. What you can verify:
Verification TypeWhat it checks
BVN (Bank Verification Number)Name, date of birth, phone number linked to a Nigerian bank account
NIN (National Identification Number)Name, date of birth, photo from Nigeria’s national ID register
CAC (Corporate Affairs Commission)Business name, registration status, directors for companies

Base URL

EnvironmentBase URL
Sandboxhttps://sandbox.api.unionbank.ng
Productionhttps://api.unionbank.ng

Authentication

All KYC endpoints require an API key:
Authorization: ApiKey <your-api-key>
Production KYC requests must also be HMAC-signed to prevent tampering. See the Payments API for the signing pattern — the same approach applies here.

Data Privacy

KYC results contain sensitive personal data. By using the KYC API, you agree to:
  • Store only the minimum data necessary for your compliance requirements.
  • Not share customer identity data with third parties without explicit consent.
  • Comply with the NDPR (Nigeria Data Protection Regulation).
KYC results are not stored by the platform — only the fact that a check was performed, its outcome, and the timestamp are retained for audit purposes.

Endpoints

BVN Lookup

POST /v1/kyc/bvn Verify a customer’s BVN and retrieve their registered details. What you send:
FieldTypeRequiredDescription
bvnstringYes11-digit Bank Verification Number
date_of_birthstringYesCustomer’s date of birth in YYYY-MM-DD format — used to confirm identity
What you get back:
FieldDescription
verifiedtrue if the BVN exists and the DOB matches
first_nameFirst name as registered
last_nameLast name as registered
middle_nameMiddle name (may be empty)
date_of_birthRegistered date of birth
phone_numberPhone number linked to the BVN (last 4 digits only for privacy)
genderRegistered gender
verification_idUnique ID for this check — keep for your audit logs
checked_atISO 8601 timestamp of the check
Example request:
{
  "bvn": "12345678901",
  "date_of_birth": "1990-05-20"
}
Example response:
{
  "verified": true,
  "first_name": "Amina",
  "last_name": "Bello",
  "middle_name": "Fatima",
  "date_of_birth": "1990-05-20",
  "phone_number": "***7890",
  "gender": "female",
  "verification_id": "kyc_bvn_3c8e2a",
  "checked_at": "2024-01-15T11:15:00+01:00"
}

NIN Lookup

POST /v1/kyc/nin Verify a customer’s NIN (National Identification Number) from Nigeria’s National Identity Management Commission (NIMC) database. What you send:
FieldTypeRequiredDescription
ninstringYes11-digit National Identification Number
date_of_birthstringYesCustomer’s date of birth YYYY-MM-DD
What you get back:
FieldDescription
verifiedtrue if the NIN exists and DOB matches
first_nameFirst name
last_nameLast name
middle_nameMiddle name
date_of_birthRegistered date of birth
genderRegistered gender
photo_urlTemporary URL to the passport photograph (expires in 5 minutes)
verification_idUnique audit reference
The photo_url field is a short-lived signed URL. Download and store the image immediately if your compliance process requires it. The URL expires after 5 minutes.

CAC Business Lookup

POST /v1/kyc/cac Look up a Nigerian company or business name in the Corporate Affairs Commission (CAC) register. What you send:
FieldTypeRequiredDescription
registration_numberstringYesCAC registration number (e.g., RC-123456)
What you get back:
FieldDescription
verifiedtrue if the company is registered and active
company_nameRegistered company name
registration_numberCAC registration number
registration_dateDate of incorporation
statusactive, dormant, or struck_off
company_typeprivate_limited, public_limited, business_name, etc.
directorsArray of directors (name and director ID for each)
addressRegistered business address
verification_idUnique audit reference

Get Verification Result

GET /v1/kyc/{verification_id} Retrieve the result of a previous KYC check using its verification ID. Useful if you need to re-display a result without re-running the check (which incurs a fee).

List Verifications

GET /v1/kyc Returns a paginated audit log of all KYC checks run by your business. Query parameters:
ParameterTypeDefaultDescription
typestringallbvn, nin, or cac
fromstringStart date YYYY-MM-DD
tostringEnd date YYYY-MM-DD
verifiedbooleanFilter by true (passed) or false (failed)
pageinteger1Page number
per_pageinteger20Max 100

Sandbox Testing

In the sandbox environment, use these test values to simulate different outcomes: BVN test values:
BVNDOBResult
123456789011990-05-20Verified — returns Amina Bello
111111111111985-01-01Verified — returns Chidi Okonkwo
99999999999anyNot found — returns verified: false
00000000000anyError — simulates upstream timeout
NIN test values:
NINDOBResult
123456789011990-05-20Verified
99999999999anyNot found
CAC test values:
Registration NumberResult
RC-000001Active company returned
RC-999999Not found

Pricing

Each KYC check is billed per call. Charges are deducted from your platform wallet:
Check TypeCost
BVN₦15 per call
NIN₦20 per call
CAC₦25 per call
Sandbox checks are free — charges only apply in production.

Error Codes

HTTP StatusError CodeMeaning
400VALIDATION_ERRORMissing or invalid BVN/NIN format
402INSUFFICIENT_WALLET_BALANCEPlatform wallet does not have enough credit
404IDENTITY_NOT_FOUNDBVN/NIN/CAC number not found in the registry
422DOB_MISMATCHDate of birth does not match the registered record
429RATE_LIMIT_EXCEEDEDToo many requests
503NIMC_UNAVAILABLEIdentity database temporarily unreachable — retry

Full API Reference

Open API Playground

Try KYC endpoints live in the browser