Know it’s really them.

A live face check, matched to the photo on their BVN, NIN, driver’s licence or voter’s card. One API for developers, or a link you send with no code at all.

Free sandbox keyNDPC registeredPay only for records foundNode · Python · PHP · React Native · Flutter

Trusted by teams across Nigeria

  • Auta
  • Axoora
  • China
  • Corvi
  • Credit Capital Services
  • Federal Ministry of Youth Development
  • Nigeria Immigration Service
  • Nod
  • Robo
  • Zentel
One API forLivenessFace matchBVNNINDriver’s licenceVoter’s cardPassportTINCACBVN iGreeCredit historyID documentsAML screeningAddress

Liveness detection

A real person, not a photo of one

A selfie can be a picture of a picture. The check takes about 20 seconds in any phone browser, or inside your app with our React Native and Flutter packages, and stops printed photos, screens, replayed videos and still images.

  1. 01

    Depth

    The person moves closer to the camera. A real face changes shape with perspective; a photo or a screen stays flat.

  2. 02

    Colour flash

    The screen flashes colours picked for this session only. They have to reflect off the face, which a recording can’t do.

  3. 03

    Random prompts

    Two random actions, such as a blink or a head turn, each checked within its own moment.

  4. 04

    Face match

    The face that passed, not an uploaded selfie, is compared with the photo on the ID record.

  5. 05

    Duplicate check

    Optional: a face already verified under a different BVN or NIN is flagged, so one person can’t open several accounts.

In your customer’s language

Every prompt and tip, starting in their phone’s own language.

  • English
  • Pidgin
  • Hausa
  • Yorùbá
  • Igbo

₦50.00 per session, refunded if it’s never completed.

For developers

One call. A real answer.

Create a liveness session, send your customer to it, then match the live face to their ID record. Two calls for a fully verified customer.

Official libraries
Node, Python and PHP, with no dependencies. Timeouts are retried and webhook signatures checked in one line.
Idempotent references
Retry after a timeout with the same reference. You are never charged twice.
Errors you can branch on
Stable error codes, human-readable messages, and every invalid field listed.
A deterministic sandbox
The last two digits choose the outcome, and liveness can be simulated, so every path runs in CI.
POST /v1/identity/bvn/face-match
{
"status": "verified",
"id_number": "222*****678",
"field_matches": {
"first_name": true, "last_name": true,
"date_of_birth": true
},
"face_match": { "status": "matched", "score": 92,
"liveness": "passed" },
"data": {
"full_name": "ADAEZE TEST OKAFOR",
"date_of_birth": "1990-01-15", …
},
"amount_charged": 150, "currency": "NGN"
}

Sandbox to live: your sandbox key works the moment you sign up. Test every outcome free, submit your CAC details, fund your wallet, and swap uvk_test_ for uvk_live_.

Your language, and inside your app

Server libraries call every check. Mobile packages run the face check in your iOS and Android app.

Open source on GitHub →
  • Node.jsServer
    npm install @uverifyng/node
  • PythonServer
    pip install uverify
  • PHPServer
    composer require uverify/uverify-php
  • React NativeFace check in your app
    npm install @uverifyng/react-native-liveness
  • FlutterFace check in your app
    flutter pub add uverify_liveness

Fraud checks

Stop fraud before it becomes a customer

A real ID and a real face aren’t the whole story. Catch fake documents, made-up addresses, sanctioned people, risky borrowers and one person behind several accounts.

ID documents

Read and check the ID itself

Your customer photographs their NIN slip or card, driver’s licence, voter’s card or international passport. We read it, check it, and compare its photo with the face that passed liveness.

  • Expiry, and the passport’s machine-readable check digits
  • Visible tampering: a photo of a screen, a photocopy, edited text
  • The number looked up in the registry against the name on the card
POST /documents/verify

₦100.00 per document

AML screening

Screen names against sanctions lists

Check a customer or a company against the UN, US OFAC, UK, EU and Nigeria sanctions lists, refreshed every day, then keep watching them. Built for real names, not exact spelling.

  • Allows for spelling, word order, titles and transliteration
  • Runs with any ID or CAC check: the verified person, or the company and each director
  • Monitoring re-screens a name after every list update and alerts you to a new match
  • Record “not a match” or “confirmed” with a note, audit-logged
POST /aml/screen

₦50.00 per name

Address checks

Confirm where your customer lives

Check that an address is real and in the LGA and state given, instantly. Send a link: your customer opens it at home and shares their phone’s location, which we measure against the address. Then read their utility bill or bank statement to confirm it’s theirs.

  • Found on the map and scored: building, street or area, with the state and LGA compared
  • Location links measure the phone’s distance from the address, in metres
  • Proof of address: a recent bill, statement or tenancy agreement checked for their name, the address, its date and editing
  • The customer’s page speaks English, Pidgin, Hausa, Yorùbá and Igbo
POST /address/links

₦250.00 per link

Credit history

See how a borrower repays

Pull a person’s credit report from the credit bureaus by their BVN: the loans they hold, how they repay, and where they’ve lived. With their consent, before you lend.

  • From CRC and First Central (XDS), the licensed credit bureaus
  • Open and closed loans, performing or not, with repayment schedules
  • Address history and the other IDs on their file
  • Free when the bureaus have no history for the BVN
POST /credit/history

₦750.00 per report

Duplicate faces

Catch one face behind many accounts

Turn it on and every live face is compared with your earlier customers’ faces. A face already verified under a different BVN or NIN is flagged before you approve it.

  • Tells a returning customer from a second identity
  • Only your own customers are compared; stored as encrypted numbers, not photos
  • Turning it off deletes every stored face
Dashboard setting

₦20.00 per face

Pricing

Pay only for records found

Every check returns the same shape: a status, the fields that matched, and the record. You pay per record found. A BVN or NIN that isn’t found costs a flat ₦50, registry errors are refunded automatically, and sandbox calls are free.

  • BVN₦100.00

    Name, date of birth, phone, photo

    POST /identity/bvn₦150.00 with face match
  • NIN₦100.00

    Name, date of birth, address, photo

    POST /identity/nin₦150.00 with face match
  • Driver’s licence₦150.00

    Name, date of birth, issue and expiry, photo

    POST /identity/drivers-license₦200.00 with face match
  • Voter’s card₦150.00

    Name, VIN details, photo

    POST /identity/voters-card₦200.00 with face match
  • Tax ID (TIN)₦100.00

    Registered name and status

    POST /identity/tin
  • CAC₦200.00

    Company status, address, directors, owners

    POST /business/cac
  • International passport₦200.00

    Name, date of birth, gender, issue and expiry

    POST /identity/passport
  • BVN with the customer’s code (iGree)₦100.00

    BVN record with phone numbers and NIN, released by the customer; face match included

    POST /identity/bvn-igree₦100.00 with face match
  • Liveness₦50.00

    Hosted camera check, per session

    POST /liveness/sessions
  • ID document₦100.00

    Photo of an ID read and checked, per document

    POST /documents/verify
  • AML screening₦50.00

    UN, OFAC, UK, EU and Nigeria sanctions lists, per name

    POST /aml/screen
  • AML monitoring₦20.00

    A name re-screened after every list update, per name, monthly

    POST /aml/monitors
  • Address check₦150.00

    Address found on the map, in the LGA and state given

    POST /address/verify
  • Address with location₦250.00

    Customer’s phone location compared with the address, per link

    POST /address/links
  • Proof of address₦200.00

    A bill or bank statement checked for name, address and date, per document

    POST /address/documents
  • Duplicate face check₦20.00

    Each live face compared with your earlier customers, per face

Prices in naira. High volume? Custom rates are available once you’re set up.

For your whole team

Built for the day you go live

  • Encrypted at rest

    Identity records sealed with AES-256-GCM.

  • Audited access

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

  • Minimal retention

    ID numbers masked and hashed. ID photos aren’t kept: a verification link holds one, encrypted, only until the face check.

  • Fair billing

    Pay for records found. A BVN or NIN that isn’t found costs a flat ₦50; registry errors are refunded automatically.

Nigeria Data Protection Commission

NDPC registered · NDPA 2023 compliant

Bytid is run by SendCore Limited, registered with the Nigeria Data Protection Commission as a Data Controller and Processor of Major Importance under the Nigeria Data Protection Act 2023.

Registration NDPC/DCP/13105 · valid to 30 June 2028

Team roles
Invite colleagues as owner, developer or finance. Developers get keys and webhooks, finance gets the wallet and statements, and nobody sees more than they need.
Two-step sign-in
Protect every dashboard login with an authenticator app, with one-time recovery codes for a lost phone.
Locked-down API keys
Limit each key to the checks it needs, to your server IPs, and to its own requests-per-minute.
Signed webhooks
Get verification, liveness and link results pushed to your server, signed so you know they came from us, and retried if you’re down.
Low-balance alerts
An email to owners and finance before the wallet runs dry, at a threshold you choose, so live checks never stop.
Statements, invoices and exports
A monthly statement on the 1st and CSV exports for your books. Approved businesses can check now and pay a monthly invoice instead of topping up first.
Your brand on every page
Your logo and colour on the liveness and verification pages your customers see, so the check feels like part of your product.
You choose how long data is kept
Set how long identity records, document data, screened names and stored faces are kept. After that they’re deleted automatically; results, charges and the audit trail stay.
A public status page
Every service checked around the clock, with its uptime on a page anyone can open, so you know before your customers do.

FAQ

Questions, answered

When am I charged?+

When a record is found. A BVN or NIN that isn’t found costs a flat ₦50, because the registry still charges for the lookup; other not-found checks are free. Registry outages and face matches that couldn’t run are refunded to your wallet automatically, and every refund appears in your wallet history. A liveness session is refunded if the person never completes it.

Is there a sandbox?+

Yes. Every account gets a free sandbox key at sign-up. The last two digits of the ID number choose the outcome (found, not found, registry error, face mismatch), and liveness sessions can be completed with a single simulate call, so you can test every path in CI.

How does liveness work?+

Create a session with one API call and send your customer to the link it returns. In any phone browser they move closer to the camera, watch a few screen colours and follow two quick prompts, in about 20 seconds. The check speaks English, Nigerian Pidgin, Hausa, Yorùbá and Igbo, and starts in the phone’s own language. Then pass the session to a face-match check and the response says liveness: "passed".

What does liveness stop?+

Printed photos, photos or videos shown on another screen, pre-recorded videos and still images. It runs in the browser and isn’t certified to ISO/IEC 30107-3, so for very high-risk onboarding combine it with your other checks.

Can I verify customers without an integration?+

Yes. Create a verification link in the dashboard and send it to your customer. They enter their ID number and do the face check on a page we host, and the result appears in your dashboard. It works in sandbox too, so you can try it first.

Can you read ID documents?+

Yes. Send a photo of a NIN slip or card, driver’s licence, voter’s card or international passport to POST /documents/verify, or ask for one in a verification link. It’s read, checked for expiry and visible tampering, its number is looked up in the registry, and its photo can be matched to the customer’s live face. Photos aren’t stored, and an unreadable photo is refunded.

How do address checks work?+

Two ways. A digital address check finds the address on the map and confirms it’s in the LGA and state given, instantly. A location link goes further: your customer opens it at home and shares their phone’s location once, and we measure how far it is from the address. A phone’s location can be faked with special apps, so it’s strong evidence rather than proof. For more, ask for a proof of address too: a recent utility bill, bank statement or tenancy agreement, checked for their name, the address and its date. Physical agent visits are not offered yet.

Which sanctions lists do you screen?+

The UN Security Council Consolidated List, the US OFAC SDN list, the UK Sanctions List, the EU Consolidated Financial Sanctions List and the Nigeria Sanctions List, each refreshed daily. A potential match is a lead for your team to review, not a verdict. Screening doesn’t yet cover politically exposed persons (PEPs) or adverse media.

Do you have SDKs?+

Yes, all open source: @uverifyng/node for Node.js, uverify for Python and uverify/uverify-php for PHP, to call every check from your server, plus @uverifyng/react-native-liveness and uverify_liveness for Flutter to run the face check inside your own app. Your API key stays on your server; the app only opens the session link.

Can I keep screening customers after onboarding?+

Yes. Turn on monitoring for a name and it’s re-screened after every daily list update. If a new potential match appears, you get an aml.match_found webhook and an email, and it’s billed monthly per name. You can also screen automatically with every verification by adding aml_screening: true.

Is Bytid the same as UVerify?+

Yes. UVerify is now Bytid: the same product and team, now at bytid.com and owned by SendCore Limited. API keys, wallets, prices and integrations carry over unchanged, and the old api.uverify.com.ng address still works.

What is BVN with a code (iGree)?+

Your customer releases their own BVN record: they enter their BVN, NIBSS sends a code to the phone or email their bank has, and they type it in. It proves they control the BVN, and the record comes with their phone numbers and NIN. Use it in a verification link or through the API; the face match is included in its price.

Can I check a borrower’s credit history?+

Yes. Send their BVN to POST /credit/history with consent: true and get their report from the credit bureaus: loans, repayment performance and address history. You’re only charged when the bureaus have a history for them.

How do I go live?+

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

How is identity data protected?+

Records are encrypted at rest with AES-256-GCM, ID numbers are stored masked and hashed, ID photos aren’t kept (a verification link holds the registry photo encrypted only until the face check, an hour at most), liveness captures are encrypted and removed once used, and every view of identity data in the dashboard is audit-logged. Bytid is run by SendCore Limited, registered with the Nigeria Data Protection Commission under the Nigeria Data Protection Act 2023 (NDPC/DCP/13105).

Verify your first customer today.

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

Get API keys