Verify customers in one API call.

BVN, NIN, driver’s licence, voter’s card, TIN and CAC lookups, with name and date-of-birth matching and selfie face match. One consistent response for every check.

  • Free sandbox key at sign-up
  • Pay only for records found
  • NGN wallet, no card needed
POST /v1/identity/bvn
{
"status": "verified",
"id_number": "222*****678",
"field_matches": {
"first_name": true, "last_name": true,
"date_of_birth": true
},
"face_match": { "status": "matched", "score": 92 },
"data": {
"full_name": "ADAEZE TEST OKAFOR",
"date_of_birth": "1990-01-15", …
},
"amount_charged": 150, "currency": "NGN"
}

Coverage

Every major Nigerian ID, one integration

Each check returns the same shape: a status, the matched fields and the record. Handle one response instead of six.

Face match

BVN

Bank Verification Number: name, date of birth, phone, enrolment bank, photo.

POST /identity/bvn
Face match

NIN

National Identity Number from NIMC: demographics, address and photo.

POST /identity/nin
Face match

Driver's licence

FRSC licence details, issue and expiry dates, photo.

POST /identity/drivers-license
Face match

Voter's card

INEC voter identification number and holder details.

POST /identity/voters-card

Tax ID (TIN)

Confirm a taxpayer identification number is valid and registered.

POST /identity/tin

CAC

Company status, registered address, directors and beneficial owners.

POST /business/cac

How it works

From sign-up to production in an afternoon

  1. 01

    Get a sandbox key

    Create an account and your sandbox key is ready immediately. Test calls are free and never touch a real registry.

  2. 02

    Integrate one endpoint

    Send the ID number and the details you collected. Decide on status and field_matches. Reuse the same code for every check.

  3. 03

    Go live

    Submit your CAC number for a quick review, fund your wallet, and swap uvk_test_ for uvk_live_. Nothing else changes.

For developers

An API that behaves predictably

The details that save you a week of edge cases, built in from the start.

Idempotent references
Retry after a timeout with the same reference. You are never charged twice.
Errors you can branch on
Stable error codes and human-readable messages, with every invalid field listed.
Request IDs everywhere
Every response carries a request_id. Quote it and we can trace the call.
Deterministic sandbox
The last two digits choose the outcome, so you can test every path in CI.
node.js
const res = await fetch(`${BASE}/identity/nin`, {
  method: 'POST',
  headers: { Authorization: `Bearer ${process.env.ELASTO_VERIFY_KEY}` },
  body: JSON.stringify({ id_number, selfie_image, reference: order.id }),
});
const { success, data, error } = await res.json();

if (!success) {
  // error.code: insufficient_balance, duplicate_reference, …
  throw new Error(error.message);
}
if (data.status === 'verified' && data.face_match?.status === 'matched') {
  approve(customer);
}

Encrypted at rest

Identity records sealed with AES-256-GCM.

Minimal retention

ID numbers masked and hashed. ID photos never stored.

Audited access

Every view of identity data is logged with who, when and where.

Fair billing

Charged only for records found. Everything else is refunded automatically.

Pricing

Pay per verified record

Prepaid NGN wallet. No subscriptions, no minimums, no charge for not-found lookups or registry errors.

Checks from ₦100.00

Running high volumes? Custom rates are available. Talk to us after you sign up.

Create a free account
CheckLookupWith face match
BVN₦100.00₦150.00
NIN₦100.00₦150.00
Driver's licence₦150.00₦200.00
Voter's card₦150.00₦200.00
Tax ID (TIN)₦100.00—
CAC business₦200.00—

Sandbox checks are always free. Prices in Nigerian naira.

FAQ

Questions, answered

When am I charged?+

Only when a record is found. Not-found lookups, registry outages and face matches that could not run are refunded to your wallet automatically, and every refund shows in your wallet history.

Is there a sandbox?+

Yes. Every account gets a free sandbox key at sign-up. It returns realistic, deterministic results so you can test every outcome (found, not found, registry errors, face mismatch) before going live.

How do I go live?+

Verify your email, submit your CAC number and use case from the dashboard, and our team reviews it, usually within one business day. Then create a live key and fund your wallet. Your code stays the same.

Does face match include liveness?+

Not yet. Face match compares a selfie against the photo on the ID record. Liveness detection is on our roadmap, and until it ships every response says liveness: "not_checked" so you can decide how much weight to give it.

How is identity data protected?+

Identity records are encrypted at rest with AES-256-GCM, ID numbers are stored masked and hashed, ID photos are never stored, and every view of identity data in the dashboard is written to an audit log.

Make your first verification in minutes

Sign up, copy your sandbox key, send one request.

Get API keys