Identity verification & AML screening API All systems operational
Idverra
Eleven markets · one integration

Eleven markets. Forty-one identity sources. One endpoint.

Idverra verifies identity documents, runs liveness and screens against sanctions and PEP lists across African markets — behind a single API that does not change shape when you enter a new country.

Sandbox access is immediate and unmetered. Production requires a signed data processing agreement and takes about a day.

POST /v2/verifications 200 OK
// response { "id": "ver_8Fq2xK4nTb", "country": "NG", "decision": "approved", "sources": [ { "type": "bvn", "match": 0.991 }, { "type": "nin", "match": 0.984 }, { "type": "liveness", "match": 0.973 } ], "screening": { "sanctions": false, "pep": false, "adverse_media": false }, "audit_ref": "aud_20260912_004417" }
p50 1.9s p95 4.2s uptime 30d 99.97%

Illustrative response · sandbox payload

Live coverage
Why this is hard

Eleven countries is not one integration repeated eleven times.

Nigeria verifies against BVN and NIN, through two agencies with different uptime and different tolerance for load. Ghana has the Ghana Card. Kenya has Huduma and the older national ID register. South Africa has Home Affairs. None of them agree on field names, image standards, error semantics or what a timeout means.

A fintech expanding across three markets does not write one verification service. It writes three, then maintains them separately while each upstream source degrades on its own schedule — usually at month end, when volume peaks.

Idverra absorbs that. One request shape, one response shape, one decision model. When a government source is slow we fail over to a secondary and tell you which one answered, rather than returning an error your support team has to interpret.

What you would otherwise integrate
Market Primary sources Fallback
NigeriaNGBVN · NIN · Passport · DLVoter register
GhanaGHGhana Card · PassportSSNIT
KenyaKENational ID · Huduma · KRA PINPassport
South AfricaZAHome Affairs ID · PassportCredit bureau
UgandaUGNational ID · Passport
SenegalSNCNI · PassportECOWAS card
The pipeline

What happens in the two seconds after you call it.

Every stage is logged with its own timing, its own result and its own source. When a regulator asks why a customer was approved, the answer is a record rather than a reconstruction.

01

Capture

Document image and selfie arrive from your app or our drop-in SDK.

~ 40 ms
02

Extract

OCR and MRZ parsing pull the fields, with a tamper check on the document itself.

~ 310 ms
03

Match

Extracted identity is checked against the government source for that market.

~ 900 ms
04

Liveness

Passive liveness plus face match against the document portrait and source photo.

~ 420 ms
05

Screen

Sanctions, PEP and adverse media, with fuzzy matching tuned for local name forms.

~ 180 ms
06

Decide & log

A decision against your thresholds, written to an immutable audit record.

~ 60 ms
The API

Three calls, and none of them change when you add a country.

Request cURL
curl -X POST https://api.idverra.com/v2/verifications \ -H "Authorization: Bearer $IDV_KEY" \ -H "Content-Type: application/json" \ -d '{ "country": "NG", "sources": ["bvn", "nin"], "liveness": true, "screening": ["sanctions", "pep"], "person": { "first_name": "Adaeze", "last_name": "Okonkwo", "date_of_birth": "1994-03-17", "identifier": "22XXXXXXXXX" }, "webhook": "https://yourapp.com/hooks/idv" }'
Endpoints
MethodPathPurpose
POST/v2/verificationsRun a verification
GET/v2/verifications/:idFetch result and stage timings
POST/v2/screeningsScreen without verifying
GET/v2/audit/:refRetrieve the audit record
POST/v2/reviews/:id/decideResolve a manual review
GET/v2/coverageLive source availability
SDKs Node · Python · Go · PHP · Kotlin
Coverage

Sources, latency and liveness, per market.

Median response time measured over the trailing thirty days, including upstream time. Where a government source is unavailable, the fallback column is what answers instead.

Market Sources Median Liveness Status
Nigeria61.8sPassive + activeOperational
Ghana42.1sPassive + activeOperational
Kenya52.4sPassive + activeOperational
South Africa42.9sPassiveDegraded
Uganda33.1sPassiveOperational
Tanzania33.4sPassiveOperational
Senegal32.7sPassiveOperational
Egypt33.8sPassiveBeta

Figures shown are illustrative of the format published on the live status page, which reports real measured values per market and per source.

Screening

Fuzzy matching that understands how names actually work here.

Generic screening engines flag every Ibrahim Mohammed against every sanctioned Ibrahim Mohamed, then leave a two-person compliance team to clear hundreds of hits a week. The cost of a bad matcher is not a missed criminal — it is an alert queue nobody can keep up with.

Idverra scores name similarity against transliteration variants, patronymic ordering, and the spelling conventions of the markets it operates in, then shows you why a hit scored what it did. Every alert carries the list, the entry, the score and the reason.

Cleared alerts stay attached to the customer record, so the next screening run does not surface a decision your team already made.

Screening result · ver_8Fq2xK4nTb
ListClosest entryScoreResult
OFAC SDNNo entry above threshold0.41Clear
UN ConsolidatedNo entry above threshold0.38Clear
EU SanctionsNo entry above threshold0.35Clear
PEP · domesticOkonkwo, A. — state official0.72Review
Adverse mediaNo entry above threshold0.29Clear
Lists refreshed every 4 hours Retained 7 years
Audit trail

The thing you will actually be examined on.

Nobody has ever failed an inspection because their verification was slow. They fail because they cannot evidence, eighteen months later, what was checked and who decided.

2026-09-12 04:44:17.201createdverification ver_8Fq2xK4nTb · country=NG · key=live_ba91
2026-09-12 04:44:17.244capturedocument=nin_slip · selfie=present · tamper_score=0.02
2026-09-12 04:44:17.558extractmrz=parsed · fields=11/11 · confidence=0.988
2026-09-12 04:44:18.462matchsource=bvn · upstream=primary · match=0.991
2026-09-12 04:44:18.981matchsource=nin · upstream=primary · match=0.984
2026-09-12 04:44:19.402livenesspassive=pass · face_match=0.973
2026-09-12 04:44:19.585screensanctions=clear · pep=review(0.72) · media=clear
2026-09-12 04:44:19.646decidethreshold=0.95 · outcome=approved_with_review · ref=aud_20260912_004417
2026-09-12 09:12:03.118reviewpep cleared by user_44 (compliance) · note="state official, different DOB"
Immutable and addressable

Every record is write-once and retrievable by reference through the API for seven years, including the exact list versions used at the time of screening.

Reviewer attribution

Manual decisions carry the reviewer, the timestamp, and the note they wrote — not just a status change with no author.

Data residency

Personal data for each market is stored in-region where local law requires it, and never leaves the region for processing.

Export on demand

Examiner-ready exports for any date range, as structured data or as a signed PDF bundle, generated without engineering involvement.

Thresholds

The only decision that really costs you money.

Set the match threshold too low and bad actors get through. Set it too high and your team drowns in manual review while good customers abandon sign-up. Move it here and watch both sides move.

Model your configuration
0.95
40,000
Auto 62.1% Review 31.6% Declined 6.3%
Sent to manual review each month12,655
Reviewer hours, at 4 minutes each844 hrs
Full-time reviewers required5.3
Verification spend at your tier$2,800

Distribution modelled on a typical consumer wallet onboarding mix. Your real curve depends on document quality, source coverage and fraud pressure in your segment — we fit it against your first ten thousand verifications during onboarding, at no charge.

Pricing

Per verification, falling with volume. Screening included.

Tier Monthly volume Per verification Screening Support
SandboxUnlimitedFreeIncludedDocs & community
Starterto 10,000$0.09IncludedEmail, 1 business day
Growth10,001 – 100,000$0.07IncludedShared Slack channel
Scale100,001 – 500,000$0.05IncludedNamed engineer, 4 hr SLA
Enterprise500,000+NegotiatedIncludedSLA, dedicated region
No charge for failures

A verification that cannot complete because an upstream government source is unavailable is not billed, and does not count toward your tier.

Re-runs are free for 24 hours

A customer retrying a failed capture inside a day is the same verification, billed once — not three attempts billed three times.

Screening is not a separate line

Sanctions, PEP and adverse media are part of the per-verification price, including ongoing monitoring of customers you have already onboarded.

No annual commitment

Tiers apply automatically at the volume you actually do. There is no minimum spend and no contract term on anything below Enterprise.

Questions

Asked by compliance, and by the engineer who has to build it.

What happens when a government source goes down?
We fail over to the secondary source for that market and mark which source answered in the response, so your decision logic can treat a fallback match differently if you want it to. If every source for a market is unavailable, the verification returns a pending status with a retry window rather than a hard error — and it is not billed.
Will a regulator accept your audit record as evidence?
The audit record captures what was checked, against which source, at what time, with which list version, and who made any manual decision. That is the evidentiary standard examiners work to. We provide exports in the formats examiners in each market have asked for, but the regulated entity remains you — we are a processor, and the obligation to satisfy your regulator stays with your licence.
Where is personal data stored?
In-region, per market, where local law requires it — Nigerian data stays in Nigeria, Kenyan data in Kenya. Processing happens in the same region as storage. Document images can be set to be discarded after a configurable retention period while the verification record and its hashes are kept for the full seven years.
How do you handle false positives on name screening?
By scoring rather than flagging, and by showing the reason for the score. You set the threshold at which a hit becomes a review item, and cleared alerts are remembered against that customer so they do not resurface on the next run. During onboarding we tune the matcher against your first ten thousand verifications, which is usually where a generic engine's alert volume drops by an order of magnitude.
Can we run it on our own infrastructure?
There is a dedicated deployment on Enterprise, where the processing region and the data stores are yours alone. A fully on-premise install is not offered, because the screening lists and the upstream source connections require a maintained path out to systems we operate.
How long does integration actually take?
Sandbox to a working verification is typically under an hour with one of the SDKs. Production readiness is usually a week of real work — mostly deciding your thresholds, wiring the review queue into your own back office, and agreeing retention with your DPO. Adding a second market after that is a configuration change, not a project.
Get started

Sandbox keys are immediate. Nobody will call you.

Unmetered sandbox access with full coverage across every live market, so you can test the decision model against real document formats before anyone signs anything.

Get API keys Read the docs