Skip to main content
Didit Raises $7.5M to Build the Infrastructure for Identity and Fraud
Didit
Reusable identity, verified once

Verify once. Reuse forever. Same brand. Trusted partner. Same identity.

$0.33 first verification, selfie-only reauth on every return for free, cross-partner share via short-lived encrypted tokens. 500 verifications free every month.

Backed by
Y CombinatorRobinhood Ventures
GBTC Finance
Bondex
Crnogorski Telekom
UCSF Neuroscape
Shiply
Adelantos

Trusted by 2,000+ organizations worldwide.

A cinematic dark abstract reusable-identity-credential illustration, four floating translucent glass panels in 3D perspective on pure black, threaded by a luminous Didit Blue line and framed by four glowing scanner brackets. Each panel carries a tiny pale-white abstract motif representing reusable identity (layered credential card, re-use circular arrow loop, linked-chain icon, key outline).

What identity owes

The user verified once. They shouldn't have to do it twice.

Once a user is verified to the Didit bar, iBeta Level 1 anti-spoof, sub-2-second verdict, 14,000+ documents, that verification is portable. Same brand, second app: free selfie-only reauth. Trusted partner, fresh signup: a short-lived encrypted share token onboards them instantly. The user owns the credential, eIDAS2-aligned.

How it works

From sign-up to verified user in four steps.

  1. Step 01

    Create the workflow

    Pick the checks you want, ID, liveness, face match, sanctions, address, age, phone, email, custom questions. Drag them into a flow in the dashboard, or post the same flow to our API. Branch on conditions, run A/B tests, no code required.

  2. Step 02

    Integrate

    Embed natively with our Web, iOS, Android, React Native, or Flutter SDK. Redirect to a hosted page. Or just send your user a link, by email, SMS, WhatsApp, anywhere. Pick what fits your stack.

  3. Step 03

    User goes through the flow

    Didit hosts the camera, the lighting cues, the mobile hand-off, and accessibility. While the user is in the flow, we score 200+ fraud signals in real time and verify every field against authoritative data sources. Result in under two seconds.

  4. Step 04

    You receive the results

    Real-time signed webhooks keep your database in sync the moment a user is approved, declined, or sent to review. Poll the API on demand. Or open the console to inspect every session, every signal, and manage cases your way.

Built for reuse · Priced like infrastructure

One verification. Many onboardings.

Reusable identity isn't one feature, it's two: same-platform Reusable KYC (free) and cross-partner Share Session API. Compose either or both.
01 · User-owned credential

The user owns it · they re-present it.

First verification stays inside Didit, encrypted at rest. The user re-presents the credential on every Didit-powered service, same brand or trusted partner, by re-authenticating with a selfie or by consenting to a share.
Reusable KYC module
02 · Cross-partner share

Token-exchange between trusted partners.

Partner A generates a short-lived share token via POST /v3/session/[id]/share/. Partner B imports it via POST /v3/session/import-shared/. End-to-end encrypted, named-audience-only, one import per partner.
Share Session docs
03 · Trust policy

trust_review per partner.

Partner B picks: trust Partner A's verdict (instant onboard) or copy the data and route to manual review (regulated step-up paths). Configured per workflow in the Business Console.
Workflow Orchestrator
04 · Selfie-only return

Returning user · selfie only · free.

Reusable KYC workflow runs ID-less reauth, user opens a session, takes a selfie, Didit re-matches against the verified template, returns Approved in under two seconds. Free, no new document capture.
Face Match 1:1 module
05 · Privacy + consent

Consent · scope · retention · per share.

Every share records the user's consent, the purpose, the audience, the scope, and the expiry. Didit logs it all, GDPR (General Data Protection Regulation) aligned, ISO/IEC 27001, SOC 2 Type 1. Default retention 5 years.
Identity privacy notice
06 · Network

One identity across the Didit footprint.

Reusable identity works across every Didit-powered platform, fintech, crypto, marketplaces, iGaming, BNPL, healthcare, mobility. Same /v3/ contract, same Workflow Builder, eIDAS2-aligned.
Biometric Authentication
Integrate

One session at first. Selfie or share at return.

Verify the user once. Reuse the credential via Reusable KYC or the Share Session API.
POST /v3/session/{sessionId}/share/Share
$ curl -X POST https://verification.didit.me/v3/session/$SID/share/ \
  -H "x-api-key: $DIDIT_API_KEY" \
  -d '{
    "audience": "partner_b",
    "expires_in": 900
  }'
201CreatedReturns share_token + expires_at · 15-min default.
Transmit token to Partner B out-of-band. One import per partner.docs →
POST /v3/session/import-shared/Import
$ curl -X POST https://verification.didit.me/v3/session/import-shared/ \
  -H "x-api-key: $PARTNER_B_KEY" \
  -d '{
    "share_token": "eyJhbGci…",
    "workflow_id": "partner_b_wf",
    "vendor_data": "user-on-partner-b",
    "trust_review": true
  }'
201CreatedImported session status follows trust_review.
trust_review=true → instant Approved; false → In Review.docs →
Agent-ready integration

Ship reusable identity in one prompt.

Paste into Claude Code, Cursor, Codex, Devin, Aider, or Replit Agent. Fill in your stack. The agent builds the first-verification flow, the Reusable KYC reauth flow, and the cross-partner share + import flow.
didit-integration-prompt.md
You are integrating Didit reusable identity. Your users get verified once with full KYC and then re-present that verification on every subsequent service — your own platforms (same-platform reuse via Reusable KYC) and trusted partner platforms (cross-partner Share Session API).

Three pillars:

  1. Verify once with full KYC ($0.33 bundle) via POST /v3/session/.
  2. On the SAME platform, returning users re-prove identity with a selfie only — free, via the Reusable KYC workflow.
  3. To a TRUSTED PARTNER, the first platform generates a short-lived share token (POST /v3/session/{id}/share/); the partner imports it (POST /v3/session/import-shared/) and the user lands fully onboarded.

Cost:
  - First verification: $0.33 (Sessions API)
  - Same-platform selfie-only reauth: free (Reusable KYC workflow)
  - Cross-partner import: priced per call, from $0.30 — Partner B pays the import fee
  - First 500 verifications free every month, forever

PRE-REQUISITES
  - Production API key from https://business.didit.me (sandbox key in 60s, no card).
  - Webhook endpoint with HMAC SHA-256 verification using the X-Signature-V2 header and your webhook secret.
  - Two workflows in the Workflow Builder:
      wf_first_verification    — ID Verification + Passive Liveness + Face Match 1:1 + Device & IP Analysis + Anti-Money Laundering (AML) Screening
      wf_reusable_kyc          — Reusable KYC (selfie-only reauth)
  - For cross-partner: a pre-arranged backend channel with the partner (a webhook, a queue, or even an authenticated REST call between your services) so the share token can be transmitted out-of-band.

STEP 1 — First verification (Sessions API)

  POST https://verification.didit.me/v3/session/
  Headers:
    x-api-key: <your api key>
    Content-Type: application/json
  Body:
    {
      "workflow_id": "<wf_first_verification>",
      "vendor_data": "<your user id, max 256 chars>",
      "callback": "https://<your-app>/identity/callback"
    }

  Response: 201 Created with the hosted session URL. Sub-2-second median verdict on completion.

STEP 2 — Read the signed webhook on verification completion

  Didit POSTs to your callback. Session statuses are Title Case With Spaces:

  Body (excerpted):
    {
      "session_id": "<uuid>",
      "vendor_data": "<your user id>",
      "status": "Approved",
      "id_verification": { "status": "Approved" },
      "liveness": { "status": "Approved" },
      "face": { "status": "Approved", "similarity_score": 0.94 }
    }

  Status enum (exact case): Approved | Declined | In Review | Resubmitted | Expired | Not Finished | Kyc Expired | Abandoned.

  Verify the X-Signature-V2 header BEFORE reading the body — HMAC SHA-256 of the raw bytes with your webhook secret.

  Store the (user_id, session_id, status) tuple. session_id is the handle you reuse for shares.

STEP 3 — Same-platform reuse (Reusable KYC selfie-only reauth)

  When the same user returns for a new flow:

  POST https://verification.didit.me/v3/session/
  Body:
    {
      "workflow_id": "<wf_reusable_kyc>",
      "vendor_data": "<your user id>",
      "callback": "https://<your-app>/identity/reauth-callback"
    }

  The hosted UI prompts the user for a selfie only — no document re-capture. Didit matches the selfie against the original verified template, returns Approved in under two seconds, free.

STEP 4 — Cross-partner share (Partner A generates a share token)

  Only finished sessions (Approved / Declined / In Review) can be shared.

  POST https://verification.didit.me/v3/session/{sessionId}/share/
  Headers:
    x-api-key: <Partner A's api key>
    Content-Type: application/json
  Body:
    {
      "audience": "<partner_b_identifier>",
      "expires_in": 900
    }

  Response (excerpted):
    {
      "share_token": "eyJhbGciOiJIUzI1NiJ9...",
      "session_kind": "kyc",
      "expires_at": "<ISO8601>"
    }

  Transmit the share_token to Partner B via your pre-arranged backend channel.

STEP 5 — Cross-partner import (Partner B imports the session)

  POST https://verification.didit.me/v3/session/import-shared/
  Headers:
    x-api-key: <Partner B's api key>
    Content-Type: application/json
  Body:
    {
      "share_token": "eyJhbGciOiJIUzI1NiJ9...",
      "workflow_id": "<Partner B's workflow id>",
      "vendor_data": "<Partner B's internal user id>",
      "trust_review": true
    }

  trust_review options:
    true  — Partner B trusts Partner A's verdict (Approved / Declined). The imported session keeps the original status.
    false — Partner B copies the data but sets status to "In Review" so Partner B's compliance team can apply their own thresholds.

  Constraints (verified against mintlify-docs/core-technology/reusable-kyc/share-kyc-via-api.mdx):
    - A specific session can be imported only ONCE into a given partner application.
    - The share_token is short-lived (defaults to 15 minutes).
    - End-to-end encrypted; only the named audience can import.

STEP 6 — Audit the consent + the share

  Log every share + every import with:
    - user_pid (the pseudonymous user identifier)
    - audience (which partner)
    - purpose (onboarding, lending, payments, etc.)
    - scope (kyc, kyc + aml, kyc + kyb)
    - share_token id + expiry
    - import status
  Default retention 5 years post-relationship per the EU AML package; longer under your supervisor's guidance.

WEBHOOK EVENT NAMES
  - Sessions: status changes flow through the standard session webhook.
  - Verify X-Signature-V2 on every payload.

CONSTRAINTS
  - Session statuses use Title Case With Spaces (Approved, In Review). Don't transform them.
  - Share tokens are scoped to the named audience and the named purpose — they're not bearer tokens for free reuse.
  - The user must consent before a share happens. Capture explicit consent in your UI; Didit logs the consent against the session.
  - Reusable KYC selfie-only reauth is free; cross-partner imports are priced at Partner B's account.
  - 200+ fraud signals are evaluated on every fresh session at no extra cost.

Read the docs:
  - https://docs.didit.me/sessions-api/create-session
  - https://docs.didit.me/sessions-api/share-session/share
  - https://docs.didit.me/sessions-api/share-session/import
  - https://docs.didit.me/core-technology/reusable-kyc/overview
  - https://docs.didit.me/core-technology/reusable-kyc/share-kyc-via-api
  - https://docs.didit.me/integration/webhooks

Start free at https://business.didit.me — sandbox key in 60 seconds, 500 verifications free every month, no credit card.
Need more context? See the full module docs.docs.didit.me →
Compliant by design

Open a new country in one click. We do the hard work.

We open the local subsidiaries, secure the licenses, run the penetration tests, earn the certifications, and align with every new regulation. To ship verifications in a new country, flip a toggle. 220+ countries live, audited and pen-tested every quarter, the only identity provider an EU member-state government has formally called safer than in-person verification.
Read the security & compliance dossier
EU financial sandbox
Tesoro · SEPBLAC · BdE
ISO/IEC 27001
Information security · 2026
SOC 2 · Type I
AICPA · 2026
iBeta Level 1 PAD
NIST / NIAP · 2026
GDPR
EU 2016/679
DORA
EU 2022/2554
MiCA
EU 2023/1114
AMLD6 · eIDAS 2.0
EU-aligned by design

Proof numbers

Proof numbers
  • $0.00
    First verification, full KYC bundle. Then free for same-platform return.
  • Free
    Reusable KYC, selfie-only reauth across every same-brand session.
  • 0 min
    Default share-token expiry · encrypted, audience-bound, one-import-only.
  • 0
    Free verifications every month, on every account.
Three tiers, one price list

Start free. Pay per usage. Scale to Enterprise.

500 free verifications every month, forever. Pay-as-you-go for production. Custom contracts, data residency, and SLAs (Service Level Agreements) on Enterprise.
Free

Free

$0 / month. No credit card required.

  • Free KYC bundle (ID Verification + Passive Liveness + Face Match + Device & IP Analysis), 500 / month, every month
  • Blocklisted Users
  • Duplicate Detection
  • 200+ fraud signals on every session
  • Reusable KYC across the Didit network
  • Case Management Platform
  • Workflow Builder
  • Public docs, sandbox, SDKs, MCP (Model Context Protocol) server
  • Community support
Most popular
Pay per usage

Usage Based

Pay only for what you use. 25+ modules. Public per-module pricing, no monthly minimum fee.

  • Full KYC at $0.33 (ID + Biometric + IP / Device)
  • 10,000+ AML datasets, sanctions, PEPs, adverse media
  • 1,000+ government data sources for Database Validation
  • Transaction Monitoring at $0.02 per transaction
  • Live KYB at $2.00 per business
  • Wallet Screening at $0.15 per check
  • Whitelabel verification flow, your brand, our infrastructure
Enterprise

Enterprise

Custom MSA & SLA. For large volumes and regulated programs.

  • Annual contracts
  • Custom MSA, DPA, and SLA
  • Dedicated Slack and WhatsApp channel
  • Manual reviewers on demand
  • Reseller and white-label terms
  • Exclusive features and partner integrations
  • Named CSM, security review, compliance support

Start free → pay only when a check runs → unlock Enterprise for a custom contract, SLA, or data residency.

FAQ

Common questions

What is Didit?

Didit is infrastructure for identity and fraud, the platform we wished existed when we were building products ourselves: open, flexible, and developer-friendly, so it works as a real part of your stack instead of a black box you integrate around.

One API covers verifying people (KYC, know your customer), verifying businesses (KYB, know your business), screening crypto wallets (KYT, know your transaction), and monitoring transactions in real time, on a stack built to be:

  • Fast, sub-2-second p99 on every session
  • Reliable, in production with 1,500+ companies across 220+ countries
  • Secure, SOC 2 Type 1, ISO 27001, GDPR-native, and formally attested by Spain's financial regulator as safer than verifying someone in person

The footprint underneath: 14,000+ document types in 48+ languages, 1,000+ data sources, and 200+ fraud signals on every session. The Didit infrastructure dynamically learns from every session and gets better every day.

What is reusable identity, in plain English?

It's an identity verification you do once, full document + face + AML, that the user can then re-present on every future service without redoing the document capture.

Two flavours:

  • Same brand · second app, the user signs up to your savings product, then to your trading product. Same Didit verification, free selfie-only reauth on the second app via Reusable KYC.
  • Trusted partner · fresh signup, the user is verified on Partner A and signs up to Partner B. Partner A mints a short-lived encrypted share token; Partner B imports it; the user lands fully onboarded with no re-capture.

The credential lives with the user, they consent to each reuse. The shape of the data they share is auditable, scoped, and time-bound.

Why does "verify once" matter? What does it actually change?

Three things drop:

  • Drop-off, every additional document re-capture loses 15-30% of conversions. Removing the friction recovers most of that.
  • Cost, the second verification is free instead of another $0.33. At any meaningful scale this becomes a line item your CFO notices.
  • Time-to-onboard, sub-2-second selfie reauth versus several minutes of re-capturing IDs from the start.

For the user, the benefit is just "I already did this". For the platform, it's higher activation, lower CAC (Cost of Acquisition), and a competitive moat against any flow that doesn't reuse.

How fast is the verification for my end user?

The full flow normally takes under 30 seconds end-to-end, pick up the ID, snap the document, snap the selfie, done. That is the fastest in the market. Legacy KYC providers usually take more than 90 seconds for the same flow.

On the back end, Didit returns the result in under two seconds at p99, measured from the moment the user finishes the selfie to the moment your webhook fires. Mobile capture is tuned for slow phones and slow networks: progressive image compression, lazy software development kit load, and a one-tap hand-off from desktop to phone via QR code if the user starts on web.

What's eIDAS 2 and why does the page mention it?

eIDAS 2 (officially Regulation (EU) 2024/1183) is the EU's updated digital-identity regulation, it mandates that every EU citizen gets access to a European Digital Identity Wallet by late 2026.

The wallet's defining property is exactly what reusable identity delivers: the user holds verified credentials in a wallet they control, and re-presents them on demand to public and private services. Didit's reusable-identity recipe is aligned with eIDAS 2, same shape, same user-ownership principle, so platforms building on it today are also building toward the EU's official-wallet world.

Outside the EU, the same recipe still works. The legal anchor is local (UK FCA, US state lender rules, etc.); the technical shape is the same.

What happens if a user fails, abandons, or expires?

Every session lands on one of seven clear statuses, so your code always knows what to do:

  • Approved, every check passed. Move the user forward.
  • Declined, one or more checks failed. You can allow the user to resubmit the specific failed step (for example, re-take the selfie) without re-running the whole flow.
  • In Review, flagged for compliance review. Open the case in the console, see every signal, decide approve or decline.
  • In Progress, user is mid-flow.
  • Not Started, link sent, user has not opened it yet. Send a reminder if it sits too long.
  • Abandoned, user opened the link but did not finish in time. Re-engage or expire.
  • Expired, the session link aged out. Create a new session.

A signed webhook fires on every status change, so your database always stays in sync. Abandoned and declined sessions are free.

Where does my customer data live and how is it protected?

Production data is processed and stored in the European Union by default, on Amazon Web Services. Enterprise contracts can request alternative regions for jurisdictions whose regulators require it.

Encryption everywhere. AES-256 at rest across every database, object store, and backup. Transport Layer Security 1.3 in transit on every API call, webhook, and Business Console session. Biometric data is encrypted under a separate Customer Master Key.

Retention is yours to control. Default retention is indefinite (unlimited) unless you configure shorter, between 30 days and 10 years per application, and you can delete any individual session at any time from the dashboard or the API.

Certifications: SOC 2 Type 1 (Type 2 audit in progress), ISO/IEC 27001:2022, iBeta Level 1 PAD, and a public attestation from Spain''s Tesoro / SEPBLAC / CNMV that Didit''s remote identity verification is safer than verifying someone in person. Full report at /security-compliance.

Is Didit compliant for my industry?

Didit ships compliant by default for the regulators that matter to identity infrastructure:

  • GDPR + UK GDPR, controller / processor split, full Data Processing Agreement published, lead supervisory authority named (Spain''s AEPD).
  • AMLD6 + EU AML Single Rulebook, 1,300+ sanctions, politically exposed person, and adverse-media lists screened in real time.
  • eIDAS 2.0, EU Digital Identity Wallet aligned; reusable-identity ready.
  • MiCA (Markets in Crypto-Assets), ready for crypto on-ramps, exchanges, and custodians.
  • DORA, Digital Operational Resilience Act, EU financial-services operational resilience.
  • BIPA, CUBI, Washington HB 1493, CCPA / CPRA, US biometric privacy (Illinois, Texas, Washington) and California consumer privacy.
  • UK Online Safety Act, age-gating and child-safety obligations.
  • FATF Travel Rule, originator and beneficiary data on crypto transfers, IVMS-101 interoperable.

Detailed memo, every certificate, every regulator letter: /security-compliance.

How fast can I integrate and start verifying users?
  • 60 seconds to a sandbox account at business.didit.me, no credit card.
  • 5 minutes to a working verification through Claude Code, Cursor, or any coding agent via our Model Context Protocol (MCP) server.
  • A weekend to a production-ready integration with signed-webhook verification, retries, and a remediation flow when a user is declined.

Three integration paths, pick whichever fits your stack:

  • Embed natively with our Web, iOS, Android, React Native, or Flutter SDK.
  • Redirect the user to the hosted verification page, zero SDK.
  • Send a link by email, SMS, WhatsApp, or any channel, zero front-end work.

Same dashboard, same billing, same pay-per-success price for all three. Step-by-step guide at docs.didit.me/integration/integration-prompt.

What does the user have to consent to?

Two consent moments:

  • At first verification, standard KYC consent: data processed for verification + screening, retention, sub-processors, etc. (the privacy notice you ship today)
  • At reuse, for cross-partner shares, explicit consent before the share token is generated. Your UI shows: "You will be onboarded on Partner B using the identity you verified with Partner A. The shared data covers ID, face match, AML status. The share expires in 15 minutes."

Didit logs the consent against the session, purpose, audience, scope, expiry, and the log is exportable to your data-subject-access-request (DSAR) and audit tools. Default retention 5 years post-relationship per the EU Anti-Money-Laundering package. Aligned with the General Data Protection Regulation (GDPR), ISO/IEC 27001, and SOC 2 Type 1, all of which Didit holds.

What are the limits on a share token?

Three load-bearing limits:

  • Finished sessions only, a share token can only be generated for sessions with a terminal status (Approved, Declined, In Review). Pending sessions can't be shared.
  • One import per partner, a specific session can be imported only once into a given partner application. Subsequent imports are rejected. (If the partner needs to re-import, the user must verify fresh or Partner A must mint a new token.)
  • Short-lived + audience-bound, the token defaults to a 15-minute expiry and is only valid for the named audience. Stolen tokens can't be re-targeted at a different partner.

The token is signed and end-to-end encrypted. The only thing that travels between Partner A and Partner B is the opaque token; the underlying data fields stay inside Didit until Partner B's authenticated import call.

What does this cost, who pays for what?

Pricing breakdown:

  • First verification, $0.33 per user (Sessions API), paid by the verifier
  • Same-platform Reusable KYC reauth, free, included
  • Cross-partner import, Partner B pays the import fee, from `$0.30` per call, on Partner B's account
  • Workflow Builder + MCP server, free, included
  • 500 verifications free every month, forever, on every account

The model rewards reuse: the verifier pays once, the user re-uses many times on the same brand for free, and the only paid step at a partner is the import call, which is materially cheaper than the partner running fresh KYC themselves.

Infrastructure for identity and fraud.

One API for KYC, KYB, Transaction Monitoring, and Wallet Screening. Integrate in 5 minutes.

Ask an AI to summarise this page