Skip to main content
Didit Raises $2M and Joins Y Combinator (W26)
Didit
PSD3 · Strong customer authentication

Two SCA factors. One tap.

Biometric Authentication ($0.10) plus Device & IP Analysis ($0.03) deliver two PSD3-grade SCA factors in a single prompt. Phishing-resistant. Drop-in replacement for SMS one-time-password.

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

Trusted by 2,000+ organizations worldwide.

A cinematic dark abstract compliance illustration — four floating translucent dark-glass panels in 3D perspective on a pure black canvas, threaded by a luminous Didit Blue vertical line and framed by four glowing scanner brackets. Each panel carries a tiny pale-white abstract motif (fingerprint arcs, face oval, phone silhouette, lock shape) representing biometric Strong Customer Authentication.

Why SMS OTP is retiring

SIM-swap-proof. Phishing-proof. $0.13 per auth.

PSD3 is phasing out SMS one-time-password as a Strong Customer Authentication factor. Didit's device-bound biometric SCA blocks SIM-swap, real-time phishing, and SS7 interception — at $0.13 per auth, sub-two-second verdict, dynamic-linking-ready. 500 verifications free every month.

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 SCA · Priced like infrastructure

Two factors. One prompt. $0.13 per auth.

Real Strong Customer Authentication is not a single check — it's a recipe. Toggle exemptions per workflow. Step up to a hardware key on risk signals. No redeploy.
01 · SCA factors

Two factors. Different categories.

Inherence (Passive Liveness + Face Match 1:1) plus possession (the user's bound device). PSD3-grade by default. Knowledge factor (PIN, password) optional and configurable per workflow.
Biometric Authentication module
02 · Dynamic linking

One approval. Bound to amount + payee.

For payments, the auth challenge embeds the exact amount and payee. The user sees them on the biometric prompt itself. Any tamper invalidates the approval — built-in to the PSR.
Sessions API reference
03 · Why SMS OTP is retiring

Phishing-resistant by design.

SIM-swap fraud, real-time phishing kits, SS7 interception — all defeat SMS one-time-password. Device-bound biometrics with origin binding block every common attack the European Banking Authority called out in its 2024 SCA opinion.
Account takeover prevention
04 · Exemption engine

Exemptions, calibrated per workflow.

Low-value remote under EUR 30, contactless point-of-sale under EUR 50, recurring identical, trusted beneficiary, Transaction Risk Analysis tiers. All editable in the no-code Workflow Builder.
Workflow Orchestrator
05 · 200+ signals per auth

200+ signals on every auth.

Device fingerprint, IP geolocation, VPN / proxy / datacenter detection, new-device flag, behavioural drift. Step up to a hardware key automatically when risk crosses your threshold.
Device & IP Analysis module
06 · Economics

$0.13 per auth, not $0.04 plus SIM-swap loss.

$0.10 Biometric Authentication + $0.03 Device & IP Analysis = $0.13 per Strong Customer Authentication. SMS one-time-password runs $0.04-$0.07 plus delivery failures, retries, and SIM-swap loss exposure regulators are pricing into PSD3.
Pricing
Integrate

One session. One tap. One webhook.

Open the session with the amount + payee. The user approves on their phone. The signed webhook confirms the binding.
POST /v3/session/Login
$ curl -X POST https://verification.didit.me/v3/session/ \
  -H "x-api-key: $DIDIT_API_KEY" \
  -d '{
    "workflow_id": "wf_sca_biometric",
    "vendor_data": "user-42",
    "metadata": { "purpose": "login" },
    // base64 KYC enrolment selfie, ≤ 1MB
    "portrait_image": "/9j/4AAQSkZJRgABAQE..."
  }'
201Createdstatus Approved · Declined · In Review
Pass the KYC enrolment selfie as portrait_image. No re-enrolment.docs →
POST /v3/session/Payment
$ curl -X POST https://verification.didit.me/v3/session/ \
  -H "x-api-key: $DIDIT_API_KEY" \
  -d '{
    "workflow_id": "wf_sca_biometric",
    "vendor_data": "user-42",
    "metadata": { "amount": "247.50", "payee_account": "ES91…1332" },
    // base64 KYC enrolment selfie, ≤ 1MB
    "portrait_image": "/9j/4AAQSkZJRgABAQE..."
  }'
201Createdwebhook echoes amount + payee for verification
User sees amount + payee on the biometric prompt itself. Dynamic linking.docs →
Agent-ready integration

Ship a PSD3 SCA flow in one prompt.

Paste into Claude Code, Cursor, Codex, Devin, Aider, or Replit Agent. Fill in your stack. The agent builds the workflow, wires dynamic linking, mounts the SDK, and ships a working Strong Customer Authentication in five minutes.
didit-integration-prompt.md
You are integrating Didit's Strong Customer Authentication into a payment service provider, bank, EMI, or wallet to satisfy PSD3 / the Payment Services Regulation (PSR). Two factors in one prompt:

  1. Inherence — Biometric Authentication: Passive Liveness + Face Match 1:1 against the user's previously-enrolled KYC selfie.
  2. Possession — Device & IP Analysis: 200+ real-time fraud signals binding the auth to the user's known device.

Pricing (verified live 2026-05-16):
  - Biometric Authentication: $0.10 per auth
  - Device & IP Analysis: $0.03 per auth
  - Total: $0.13 per Strong Customer Authentication
  - First 500 verifications free every month, forever
  - Re-uses the enrolled selfie from the original KYC — no re-enrolment

PRE-REQUISITES
  - Production API key from https://business.didit.me (sandbox key in 60 seconds, no credit card).
  - Webhook endpoint with HMAC SHA-256 verification of the X-Signature-V2 header.
  - A workflow_id from the no-code Workflow Builder configured as a Biometric Authentication workflow (Passive Liveness + Face Match 1:1 + Device & IP Analysis).
  - The user has previously completed a Didit KYC (the same enrolled selfie backs every subsequent auth).

STEP 1 — Open an authentication session

  POST https://verification.didit.me/v3/session/
  Headers:
    x-api-key: <your api key>
    Content-Type: application/json
  Body (for login auth):
    {
      "workflow_id": "<wf id for SCA biometric auth>",
      "vendor_data": "<your user id>",
      "callback": "https://<your-app>/auth/callback",
      "metadata": {
        "purpose": "login",
        "session_id": "<your front-end session id>"
      },
      "portrait_image": "<base64 JPEG of the user's KYC enrolment selfie, ≤ 1 MB — REQUIRED for SCA's inherence factor; OMIT only if the workflow is liveness-only>"
    }

  Body (for payment with dynamic linking):
    {
      "workflow_id": "<wf id for SCA biometric auth>",
      "vendor_data": "<your user id>",
      "callback": "https://<your-app>/payment/callback",
      "metadata": {
        "purpose": "payment",
        "amount": "247.50",
        "currency": "EUR",
        "payee_account": "ES9121000418450200051332",
        "payee_name": "<merchant or recipient>",
        "transaction_reference": "<your internal transaction id>"
      },
      "portrait_image": "<base64 JPEG of the user's KYC enrolment selfie, ≤ 1 MB — REQUIRED for SCA's inherence factor>"
    }

  Response: 201 Created with the hosted session URL. Push the URL to the user via deep-link / push notification / in-app sheet.

STEP 2 — User completes the biometric auth

  The user sees one prompt on their phone (or via the Didit SDK in your native app). Three things happen on the same screen:

  1. The amount + payee are displayed (dynamic linking — the user explicitly approves THIS amount to THIS payee for payments).
  2. Passive Liveness defeats screen replay, printed photo, mask, deepfake.
  3. Face Match 1:1 matches the new selfie against the enrolled KYC selfie.

  Device & IP Analysis runs server-side on the session. Sub-2-second median verdict.

STEP 3 — Read the signed webhook on the auth verdict

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

  Body (excerpted):
    {
      "session_id": "<uuid>",
      "vendor_data": "<your user id>",
      "status": "Approved",
      "liveness": { "status": "Approved" },
      "face": { "status": "Approved", "similarity_score": 0.94 },
      "ip_analysis": { "status": "Approved", "vpn_detected": false, "datacenter_ip": false },
      "metadata_echo": {
        "amount": "247.50",
        "payee_account": "ES9121000418450200051332"
      }
    }

  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.

  For payments, verify that metadata_echo.amount and metadata_echo.payee_account match the values you passed in. If they do not, REJECT the payment — it's a dynamic-linking violation.

STEP 4 — Branch on verdict

  Approved   → unlock the action (login, payment, account change).
  In Review  → hold the action, route to manual review queue.
  Declined   → block, log the attempt, surface a friendly "try again" to the user.
  Resubmitted → the user re-submitted after a soft fail (poor lighting, occlusion); proceed if the latest status is Approved.

STEP 5 — Retrieve the full decision later

  GET https://verification.didit.me/v3/session/{sessionId}/decision/
  Headers:
    x-api-key: <your api key>

  Returns the full payload: liveness verdict (iBeta Level 1 anti-spoof certified), Face Match similarity score, device fingerprint, IP geolocation, VPN / proxy / datacenter flags, 200+ fraud-signal score, dynamic-linking echo, HMAC signature.

  Use this for the audit-trail surface a regulator examines on Strong Customer Authentication coverage.

STEP 6 — Step up on risk

  When Device & IP Analysis surfaces a high-risk signal (new device + high-value payment, VPN/proxy on a login, geolocation jump), your workflow can step up to:

  - A separate hardware-key challenge (FIDO2 / WebAuthn)
  - A trusted-beneficiary whitelist confirmation
  - A manual-review hold

  Encode the step-up policy in the no-code Workflow Builder — no redeploy required.

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. Never UPPER_SNAKE_CASE on a session.
  - Dynamic linking is REQUIRED for payments — pass amount + payee in metadata, verify the echo on the webhook.
  - The enrolled selfie that backs every SCA is the one captured during the user's original KYC — no separate enrolment step.
  - PSD3 / PSR exemptions (low-value remote < EUR 30, contactless point-of-sale < EUR 50, recurring identical, trusted beneficiary, Transaction Risk Analysis tiers) are configured per workflow in the Business Console.
  - Default record retention is 5 years per the EU AML and payments rules.

Read the docs:
  - https://docs.didit.me/sessions-api/create-session
  - https://docs.didit.me/sessions-api/retrieve-session
  - 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
    Per Strong Customer Authentication — Biometric Authentication + Device & IP Analysis.
  • <0s
    End-to-end auth verdict per session, on entry-level Android.
  • 0+
    Real-time fraud signals evaluated on every auth — VPN, datacenter, geolocation drift, device drift.
  • 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

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