Identity Verification & KYC arenaIdentity Verification & KYC
Identity-verification and KYC platforms — APIs and hosted flows that verify a real person is behind a signup with document scans, selfie liveness, database checks, and watchlist screening — judged on verification flows, global document coverage, deepfake-era biometric defense, AML screening and monitoring, no-code orchestration and review, data checks (SSN, KYB, phone/email risk), integration DX, and privacy machinery (retention, redaction, biometric consent). Market reality, modeled honestly: Onfido stopped being a brand buyers can choose — Entrust closed its $650M acquisition in April 2024 and onfido.com now redirects to Entrust Identity Verification, judged here under its real name. Persona (free Starter tier, $200M Series D at $2B), Sumsub ($1.35/verification published), and Veriff ($0.80 published, Tallinn, acquired KYB firm Vespia in Feb 2026) stay independent; Stripe Identity is GA at $1.50 per verification; Plaid IDV ships full docs but gates production behind a product-access request — judged with the gate quoted. Jumio and Trulioo benched: enterprise IDV suites with sales-led onboarding and no public pricing; watch.
53 user stories · 318 judged cells · updated 2026-09-15 · Evidence as of 2026-09-15
Leaderboard — every product ranked by evidenceLeaderboard
| 1 | enterprise-custom vs Sumsub ↗ | 38/100 | 15/100 | 5/100 | 30/100 | 35/100 | npm 44k/wkpypi 294.7k/wk | 2/22 verified | 0/100 integrity | ||
| 2 | usage-based vs Entrust Identity Verification (Onfido) ↗ | 56/100 | 15/100 | 11/100 | 12/100 | 11/100 | npm 82.7k/wk | 11/26 verified | 12/100 integrity | ||
| 3 | usage-based vs Entrust Identity Verification (Onfido) ↗ | 47/100 | 20/100 | 7/100 | 14/100 | 18/100 | 15/25 verified · 1 disputed | 31/100 integrity | |||
| 4 | free-tier vs Entrust Identity Verification (Onfido) ↗ | 33/100 | 10/100 | 11/100 | 30/100 | 18/100 | npm 313.6k/wk | 2/17 verified | 11/100 integrity | ||
| 5 | usage-based vs Entrust Identity Verification (Onfido) ↗ | 38/100 | 10/100 | 10/100 | 9/100 | 16/100 | npm 11.7k/wk | 6/22 verified | 18/100 integrity | ||
| 6 | usage-based vs Entrust Identity Verification (Onfido) ↗ | 31/100 | 18/100 | 10/100 | 0/100 | 22/100 | 6/24 verified | 0/100 integrity |
Best by user type — persona-weighted winnersBest by user type
Per persona, the product with the highest persona-weighted coverage over just that persona's stories — not the same ranking as the overall PA Score leaderboard above.
Best for developer
Plaid Identity Verification
31/100
Runner-up:
Stripe Identity (29/100)
9 developer stories scored
Best for risk-analyst
Sumsub
45/100
Runner-up:
Entrust Identity Verification (Onfido) (23/100)
3 risk-analyst stories scored
Best for founder
Plaid Identity Verification
12/100
Runner-up:
Stripe Identity (0/100)
2 founder stories scored
Best for ai-native
Entrust Identity Verification (Onfido)
27/100
Runner-up:
Stripe Identity (26/100)
31 ai-native stories scored
Story matrix — every product × every judged storyStory matrix
Agenticness — how well agents can access and operate the productAgenticness
Agent access
| Story | Persona | ||||||
|---|---|---|---|---|---|---|---|
| Agenticness — how well agents can access and operate the productPoint an agent at llms.txt or agent-oriented docs | ai-native | fullT 8/10 | fullT 8/10 | fullT 8/10 | fullT 9/10 | fullT 8/10 | partialT 5/10 |
| Agenticness — how well agents can access and operate the productRun the product headlessly / in CI for automation | ai-native | partialC 6/10 | partialC 5/10 | partialC 5/10 | partialC 6/10 | partialC 5/10 | none 0/10 |
| Agenticness — how well agents can access and operate the productPlug MCP servers into this product so it can use their tools | ai-native | n/a | n/a | n/a | n/a | n/a | n/a |
| Agenticness — how well agents can access and operate the productConnect an agent via an official MCP server | ai-native | partialT 6/10 | none 0/10 | none 0/10 | fullT 8/10 | none 0/10 | fullT 6/10 |
| Agenticness — how well agents can access and operate the productUse an official CLI | ai-native | partialT 6/10 | none 0/10 | none 0/10 | none 0/10 | none 0/10 | none 0/10 |
| Agenticness — how well agents can access and operate the productDrive the product through a documented public API | ai-native | fullT 8/10 | fullT 8/10 | fullT 7/10 | fullT 8/10 | fullT 8/10 | partialT 6/10 |
| Agenticness — how well agents can access and operate the productIssue scoped/least-privilege API credentials for an agent | ai-native | none 0/10 | none 0/10 | partialC 4/10 | partialT 5/10 | none 0/10 | none 0/10 |
| Agenticness — how well agents can access and operate the productBuild against official SDKs | ai-native | partialT 5/10 | none 0/10 | partialC 6/10 | partialT 5/10 | partialT 5/10 | partialT 6/10 |
| Agenticness — how well agents can access and operate the productSubscribe to events via webhooks | ai-native | fullC 7/10 | fullC 7/10 | fullC 7/10 | fullC 8/10 | fullC 8/10 | fullC 7/10 |
Agentic features
| Story | Persona | ||||||
|---|---|---|---|---|---|---|---|
| Agenticness — how well agents can access and operate the productGet AI-generated insights and suggestions from my data inside the product | ai-native | none 0/10 | none 0/10 | n/a | none 0/10 | none 0/10 | none 0/10 |
| Agenticness — how well agents can access and operate the productSet up automations that run autonomously in the background | ai-native | partialT 5/10 | partialC 5/10 | partialC 5/10 | partialT 5/10 | partialC 5/10 | partialC 5/10 |
| Agenticness — how well agents can access and operate the productDelegate tasks to a built-in AI assistant inside the product | ai-native | n/a | n/a | n/a | none 0/10 | n/a | n/a |
| Agenticness — how well agents can access and operate the productOperate the product with natural-language commands | ai-native | partialT 5/10 | none 0/10 | none 0/10 | partialT 6/10 | none 0/10 | partialT 4/10 |
Api quality
| Story | Persona | ||||||
|---|---|---|---|---|---|---|---|
| Agenticness — how well agents can access and operate the productExplore an interactive API reference with runnable examples | ai-native | partialT 4/10 | none 0/10 | none 0/10 | none 0/10 | none 0/10 | none 0/10 |
| Agenticness — how well agents can access and operate the productDownload a machine-readable API spec (OpenAPI or equivalent) | ai-native | none 0/10 | none 0/10 | none 0/10 | none 0/10 | none 0/10 | none 0/10 |
| Agenticness — how well agents can access and operate the productTest against a sandbox environment without touching production data | ai-native | none 0/10 | fullC 8/10 | none 0/10 | fullC 8/10 | fullC 7/10 | fullC 7/10 |
| Agenticness — how well agents can access and operate the productRely on versioned APIs with a documented deprecation policy | ai-native | none 0/10 | none 0/10 | partialC 3/10 | none 0/10 | none 0/10 | none 0/10 |
Automation depth — how much of the product can run unattendedAutomation depth
| Story | Persona | ||||||
|---|---|---|---|---|---|---|---|
| Automation depth — how much of the product can run unattendedPerform bulk operations across many items at once | ai-native | none 0/10 | none 0/10 | none 0/10 | none 0/10 | partialC 2/10 | none 0/10 |
| Automation depth — how much of the product can run unattendedDefine rules that trigger actions automatically on events | ai-native | partialC 5/10 | partialC 6/10 | fullC 7/10 | partialC 5/10 | partialC 3/10 | partialC 6/10 |
| Automation depth — how much of the product can run unattendedSchedule recurring jobs or workflows | ai-native | n/a | n/a | n/a | none 0/10 | n/a | n/a |
| Automation depth — how much of the product can run unattendedVersion, review, and roll back my automations | ai-native | n/a | none 0/10 | none 0/10 | none 0/10 | n/a | n/a |
Biometric liveness — stories about biometric liveness in this arenaBiometric liveness
Deepfake defense
| Story | Persona | ||||||
|---|---|---|---|---|---|---|---|
| Biometric liveness — stories about biometric liveness in this arenaThe vendor documents specific defenses against AI-generated faces, deepfakes, and camera-injection attacks — named detection capabilities, not just a marketing mention of fraud | risk-analyst | none 0/10 | none 0/10 | none 0/10 | partialC 6/10 | none 0/10 | none 0/10 |
Duplicate detection
| Story | Persona | ||||||
|---|---|---|---|---|---|---|---|
| Biometric liveness — stories about biometric liveness in this arenaThe platform detects repeat and duplicate identities across verifications — the same face or document resurfacing under different names is flagged automatically | risk-analyst | partialC 3/10 | none 0/10 | partialC 6/10 | none 0/10 | none 0/10 | none 0/10 |
Liveness
| Story | Persona | ||||||
|---|---|---|---|---|---|---|---|
| Biometric liveness — stories about biometric liveness in this arenaSelfie checks match the live user to the document portrait with liveness detection — documented defenses against printed photos, screens, and replayed video | risk-analyst | partialT 4/10 | none 0/10 | partialC 5/10 | fullC 8/10 | partialC 4/10 | none 0/10 |
Data checks — stories about data checks in this arenaData checks
Db checks
| Story | Persona | ||||||
|---|---|---|---|---|---|---|---|
| Data checks — stories about data checks in this arenaVerify identity against authoritative databases without documents — SSN, national registries, or credit-header data — for lower-friction flows where a doc scan is overkill | developer | partialC 5/10 | none 0/10 | none 0/10 | none 0/10 | none 0/10 | partialC 4/10 |
Kyb
| Story | Persona | ||||||
|---|---|---|---|---|---|---|---|
| Data checks — stories about data checks in this arenaVerify businesses, not just people — registry lookups, UBO identification, and documented KYB flows that chain into KYC on the owners | ops | none 0/10 | none 0/10 | none 0/10 | none 0/10 | none 0/10 | none 0/10 |
Risk signals
| Story | Persona | ||||||
|---|---|---|---|---|---|---|---|
| Data checks — stories about data checks in this arenaEnrich verifications with phone, email, and device risk signals — carrier checks, address history, device fingerprint — as additional documented check types | developer | none 0/10 | none 0/10 | none 0/10 | none 0/10 | none 0/10 | partialC 5/10 |
Document coverage — stories about document coverage in this arenaDocument coverage
Doc types
| Story | Persona | ||||||
|---|---|---|---|---|---|---|---|
| Document coverage — stories about document coverage in this arenaThe platform verifies government IDs from a documented breadth of countries and document types — passports, national IDs, driver licenses, residence permits — with the supported list published | ops | disputedD 5/10 | none 0/10 | partialC 4/10 | partialC 6/10 | none 0/10 | partialC 3/10 |
Extraction
| Story | Persona | ||||||
|---|---|---|---|---|---|---|---|
| Document coverage — stories about document coverage in this arenaVerified sessions return the extracted document fields as structured data — name, date of birth, document number, address, expiry — retrievable via the API, not just a pass/fail flag | developer | fullC 8/10 | none 0/10 | none 0/10 | none 0/10 | none 0/10 | partialC 5/10 |
Idv agent access — stories about idv agent access in this arenaIdv agent access
Agent decisions
| Story | Persona | ||||||
|---|---|---|---|---|---|---|---|
| Idv agent access — stories about idv agent access in this arenaVerification outcomes come back structured enough for an agent to decide on — machine-readable check results, risk signals, and failure reasons an automated onboarding flow can branch on | ai-native | fullX 7/10 | partialC 6/10 | partialC 6/10 | partialT 6/10 | partialT 6/10 | partialC 6/10 |
Agent operations
| Story | Persona | ||||||
|---|---|---|---|---|---|---|---|
| Idv agent access — stories about idv agent access in this arenaAn agent can operate the verification pipeline — create sessions, poll outcomes, retrieve extracted data, and trigger re-checks through the API or an MCP surface with scoped credentials | ai-native | partialT 5/10 | none 0/10 | partialC 5/10 | partialT 6/10 | partialT 5/10 | partialT 4/10 |
Integration dx — sandboxes, test modes, webhooks, and how fast a developer gets to a working integrationIntegration dx
Sandbox
| Story | Persona | ||||||
|---|---|---|---|---|---|---|---|
| Integration dx — sandboxes, test modes, webhooks, and how fast a developer gets to a working integrationA sandbox lets me exercise every outcome before going live — documented test documents, personas, or magic values that deterministically produce pass, fail, and review results | developer | none 0/10 | partialC 6/10 | none 0/10 | partialC 4/10 | partialC 6/10 | fullC 8/10 |
Session api
| Story | Persona | ||||||
|---|---|---|---|---|---|---|---|
| Integration dx — sandboxes, test modes, webhooks, and how fast a developer gets to a working integrationThe whole verification lifecycle is drivable through the API — create a session, get its status, retrieve results and captured media, and cancel or redact it — with every step documented | developer | partialC 6/10 | partialC 4/10 | partialC 6/10 | partialT 5/10 | partialC 5/10 | partialC 4/10 |
Webhooks
| Story | Persona | ||||||
|---|---|---|---|---|---|---|---|
| Integration dx — sandboxes, test modes, webhooks, and how fast a developer gets to a working integrationVerification lifecycle events arrive as signed webhooks — created, processing, verified, requires-input — so my system reacts to outcomes without polling | developer | partialC 6/10 | partialC 5/10 | partialC 7/10 | partialC 5/10 | partialC 6/10 | partialC 5/10 |
Openness — open source, data portability, and self-hosting storiesOpenness
| Story | Persona | ||||||
|---|---|---|---|---|---|---|---|
| Openness — open source, data portability, and self-hosting storiesDo everything through the API that I can do in the UI | ai-native | partialT 6/10 | partialC 5/10 | partialC 5/10 | partialT 5/10 | partialT 5/10 | none 0/10 |
| Openness — open source, data portability, and self-hosting storiesExport all of my data in open formats and leave | ai-native | none 0/10 | n/a | n/a | none 0/10 | none 0/10 | none 0/10 |
| Openness — open source, data portability, and self-hosting storiesRead the product's source under an open license | ai-native | n/a | n/a | n/a | n/a | none 0/10 | n/a |
| Openness — open source, data portability, and self-hosting storiesSelf-host the core product | ai-native | n/a | n/a | n/a | n/a | n/a | n/a |
Privacy posture — data-handling and privacy storiesPrivacy posture
| Story | Persona | ||||||
|---|---|---|---|---|---|---|---|
| Privacy posture — data-handling and privacy storiesChoose where my data is stored (region/residency) | ai-native | none 0/10 | none 0/10 | none 0/10 | none 0/10 | none 0/10 | none 0/10 |
| Privacy posture — data-handling and privacy storiesPrevent my data from being used to train AI models | ai-native | none 0/10 | none 0/10 | n/a | none 0/10 | none 0/10 | none 0/10 |
| Privacy posture — data-handling and privacy storiesControl data retention and deletion | ai-native | none 0/10 | none 0/10 | none 0/10 | none 0/10 | none 0/10 | none 0/10 |
| Privacy posture — data-handling and privacy storiesOpt out of telemetry and usage tracking | ai-native | none 0/10 | n/a | n/a | none 0/10 | none 0/10 | none 0/10 |
Privacy retention — stories about privacy retention in this arenaPrivacy retention
Consent
| Story | Persona | ||||||
|---|---|---|---|---|---|---|---|
| Privacy retention — stories about privacy retention in this arenaThe vendor documents how biometric data is handled lawfully — GDPR bases, US biometric statutes like BIPA, and the consent language my flow needs — so legal review has something to review | founder | none 0/10 | none 0/10 | none 0/10 | none 0/10 | none 0/10 | none 0/10 |
Redaction
| Story | Persona | ||||||
|---|---|---|---|---|---|---|---|
| Privacy retention — stories about privacy retention in this arenaControl what happens to collected identity data — documented retention windows and a redaction or deletion API that scrubs PII on demand | ops | none 0/10 | none 0/10 | none 0/10 | none 0/10 | none 0/10 | none 0/10 |
Verification flows — stories about verification flows in this arenaVerification flows
Hosted flows
| Story | Persona | ||||||
|---|---|---|---|---|---|---|---|
| Verification flows — stories about verification flows in this arenaLaunch a complete document-plus-selfie verification with a hosted or drop-in flow — create a session server-side, redirect or embed, and read the result — without building capture UI myself | developer | fullX 7/10 | fullC 7/10 | fullC 7/10 | fullC 7/10 | fullC 8/10 | partialC 6/10 |
Native sdks
| Story | Persona | ||||||
|---|---|---|---|---|---|---|---|
| Verification flows — stories about verification flows in this arenaI get native iOS, Android, and web SDKs with guided camera capture — glare, blur, and edge detection coaching the user to a usable document photo on the first try | developer | none 0/10 | none 0/10 | partialC 4/10 | none 0/10 | partialC 3/10 | none 0/10 |
No code
| Story | Persona | ||||||
|---|---|---|---|---|---|---|---|
| Verification flows — stories about verification flows in this arenaSend a verification to someone with a no-code link or QR code — no engineering ticket to verify a one-off customer, contractor, or seller | ops | fullX 7/10 | partialC 6/10 | partialC 6/10 | none 0/10 | partialC 4/10 | partialC 3/10 |
Reuse
| Story | Persona | ||||||
|---|---|---|---|---|---|---|---|
| Verification flows — stories about verification flows in this arenaA person verified once can be recognized and reused across sessions or products — documented re-verification and reuse of a prior passed check instead of forcing a full re-run | developer | none 0/10 | partialC 5/10 | none 0/10 | fullC 8/10 | none 0/10 | none 0/10 |
Verification orchestration — stories about verification orchestration in this arenaVerification orchestration
Analytics
| Story | Persona | ||||||
|---|---|---|---|---|---|---|---|
| Verification orchestration — stories about verification orchestration in this arenaSee verification funnel analytics — pass rates, drop-off points, completion time by country and document type — to know what verification is costing me in signups | founder | none 0/10 | none 0/10 | none 0/10 | none 0/10 | none 0/10 | partialC 4/10 |
Review
| Story | Persona | ||||||
|---|---|---|---|---|---|---|---|
| Verification orchestration — stories about verification orchestration in this arenaBorderline verifications land in a manual review queue with the full evidence — document images, extracted fields, check results — and reviewer decisions feed back into the record | ops | partialC 5/10 | partialC 4/10 | none 0/10 | partialC 4/10 | partialC 5/10 | partialC 5/10 |
Workflows
| Story | Persona | ||||||
|---|---|---|---|---|---|---|---|
| Verification orchestration — stories about verification orchestration in this arenaConfigure verification logic without code — conditional steps, risk-based routing, country-specific requirements, and template changes that don't need an engineering deploy | ops | partialX 3/10 | partialC 6/10 | partialC 7/10 | partialC 5/10 | partialC 3/10 | fullC 8/10 |
Watchlist screening — stories about watchlist screening in this arenaWatchlist screening
Monitoring
| Story | Persona | ||||||
|---|---|---|---|---|---|---|---|
| Watchlist screening — stories about watchlist screening in this arenaScreening is not one-shot — previously verified users are continuously re-screened against watchlist updates, and changes raise events I can act on | ops | none 0/10 | none 0/10 | none 0/10 | partialC 5/10 | none 0/10 | none 0/10 |
Screening
| Story | Persona | ||||||
|---|---|---|---|---|---|---|---|
| Watchlist screening — stories about watchlist screening in this arenaScreen verified users against sanctions, PEP, and adverse-media watchlists as part of the same verification — one vendor, one API, one review surface | ops | none 0/10 | none 0/10 | fullC 8/10 | fullC 8/10 | partialC 6/10 | partialC 5/10 |
Adjacent arenas — categories often shopped togetherAdjacent arenas
Shopping this category often means shopping these too.