Skip to main content
Didit Raises $2M and Joins Y Combinator (W26)
Didit
Crypto · Travel Rule

Originator and beneficiary, on every transfer.

Didit exchanges Travel Rule data and screens the counterparty wallet on the same /v3/ transaction call. IVMS-101 payloads, $0.17 per managed transfer, 500 verifications free every month.

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 (paired arrows, message envelope, two-person handoff, transfer route) representing originator and beneficiary data exchange.

What the Travel Rule owes

Send the identity. Screen the wallet. Same call.

Every regulated VASP owes both halves on every transfer — the IVMS-101 packet for the counterparty VASP, the on-chain risk screen for itself. Didit ships them as one Transactions API call: $0.17 managed, $0.04 with Bring Your Own Key on the wallet provider. 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 Travel Rule · Priced like infrastructure

One call. IVMS-101 packet + wallet screen. $0.17.

A regulated crypto transfer is not a single check — it's a recipe. Toggle each module per workflow, swap in your own wallet-screen provider via Bring Your Own Key to drop to $0.04 per transfer.
01 · IVMS-101 payload

One IVMS-101 packet per transfer.

Originator and beneficiary fields populated from the verified KYC. Auto-formatted to InterVASP Messaging Standard 101 — the schema every major Travel Rule protocol reads.
Transactions API
02 · Per-jurisdiction thresholds

Thresholds that match your jurisdiction.

EU TFR (no minimum), US FinCEN ($3,000), UK FCA (£1,000), MAS (SGD 1,500), FINMA (CHF 1,000), VARA (AED 3,500). One workflow per jurisdiction; switch via session metadata.
Crypto industry workflows
03 · Protocol interoperability

Every Travel Rule protocol. One contract.

TRP, Sumsub Travel Rule, Notabene, Veriscope, OpenVASP, Shyft — all reachable via the same IVMS-101 payload. Pick one network or accept all; one contract, one invoice.
Workflow Orchestrator
04 · Self-hosted wallet flow

Self-hosted destination? Still covered.

No counterparty VASP to exchange with — Didit collects beneficiary identity from the user, runs proof-of-control sign challenges above EU enhanced-due-diligence thresholds, screens the destination wallet, stores the IVMS-format record.
Custom Questionnaires
05 · Wallet screen alongside the rule

Travel Rule + wallet screen. Same call.

$0.02 transaction-monitoring base + $0.15 managed Wallet Screening = $0.17 per transfer. With Bring Your Own Key on the wallet provider, the wallet screen drops to $0.02 — $0.04 total.
Wallet Screening module
06 · Per-transfer evidence pack

One pack per transfer. Drops into the audit.

IVMS-101 payload, wallet-screen verdict, counterparty VASP attribution, signed HMAC timestamps. Stored in the EU. Retained 5 years by default; extensible per supervisor guidance.
Security & compliance
Integrate

One session. One transaction. One webhook.

Verify the user once. Submit each transfer with IVMS fields + counterparty wallet. Read the signed verdict. Release the crypto.
POST /v3/session/KYC
$ curl -X POST https://verification.didit.me/v3/session/ \
  -H "x-api-key: $DIDIT_API_KEY" \
  -d '{
    "workflow_id": "wf_casp_onboard",
    "vendor_data": "user-42"
  }'
201Createdstatus Approved · In Review · Declined
Originator fields for every transfer come from this signed verdict.docs →
POST /v3/transactions/IVMS + KYT
$ curl -X POST https://verification.didit.me/v3/transactions/ \
  -H "x-api-key: $DIDIT_API_KEY" \
  -d '{
    "transaction_id": "tx-9001",
    "transaction_details": { "direction": "OUTBOUND", "currency_kind": "crypto" },
    "subject": { "full_name": "J. Pérez" },
    "counterparty": { "full_name": "R. Beneficiary", "payment_method": { "account_id": "bc1qa3…hk22" }}
  }'
201Createdstatus APPROVED · IN_REVIEW · DECLINED · AWAITING_USER
IVMS-101 packet + wallet screen run server-side. No second call.docs →
Agent-ready integration

Ship a Travel Rule flow in one prompt.

Paste into Claude Code, Cursor, Codex, Devin, Aider, or Replit Agent. Fill in your stack. The agent builds the workflow, populates the IVMS fields from the KYC session, runs the wallet screen, and wires the webhook.
didit-integration-prompt.md
You are integrating Didit into a Virtual Asset Service Provider (VASP) / Crypto-Asset Service Provider (CASP) to satisfy the Travel Rule on every crypto transfer. Two obligations:

  1. Verify the user (KYC) — identity, liveness, face match, device + IP, AML. The originator data on every outbound transfer comes from this verified profile.
  2. Submit each transfer with originator + beneficiary fields (IVMS-101) AND screen the counterparty wallet — one /v3/transactions/ call.

Bundle pricing (verified live 2026-05-16):
  - User Verification (KYC) bundle: $0.33 per user (Sessions API)
  - Transactions API call: $0.02 base + $0.15 managed wallet screen = $0.17 per managed transfer
  - With Bring Your Own Key (BYOK) on the wallet provider: $0.04 per transfer ($0.02 + $0.02)
  - First 500 verifications free every month, forever

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.
 HMAC-SHA256 verification MUST run against the raw body bytes (the raw payload as Didit sent it) BEFORE any JSON parsing — re-serialising the parsed body changes whitespace and key order, which invalidates the signature.  - A workflow_id from the no-code Workflow Builder with ID Verification + Passive Liveness + Face Match 1:1 + Device & IP Analysis + AML Screening.
  - Transaction Monitoring + Wallet Screening enabled in the Business Console (Transactions > Settings).

STEP 1 — Verify the user with the Sessions API (one-time onboarding)

  POST https://verification.didit.me/v3/session/
  Headers:
    x-api-key: <your api key>
    Content-Type: application/json
  Body:
    {
      "workflow_id": "<wf id with KYC + AML modules>",
      "vendor_data": "<your user id>",
      "callback": "https://<your-app>/casp/onboard/callback",
      "metadata": {
        "purpose": "casp_onboarding"
      }
    }

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

STEP 2 — Read the signed webhook on KYC completion

  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.

  Capture the user's full name, date of birth, address, and any registered identity-document number from the decision payload. These fields populate the IVMS-101 originator block on every subsequent transfer.

STEP 3 — Submit every transfer with IVMS-101 + wallet screen in one call

  POST https://verification.didit.me/v3/transactions/
  Headers:
    x-api-key: <your api key>
    Content-Type: application/json
  Body (required fields verified live 2026-05-16):
    {
      "transaction_id": "<your internal transfer reference>",
      "transaction_category": "finance",
      "include_crypto_screening": true,
      "transaction_details": {
        "direction": "OUTBOUND",
        "amount": "0.45",
        "currency": "ETH",
        "currency_kind": "crypto",
        "action_type": "transfer"
      },
      "subject": {
        "entity_type": "individual",
        "vendor_data": "<your user id>",
        "full_name": "<originator name from KYC>",
        "address": "<originator address from KYC>",
        "dob": "<originator dob from KYC, YYYY-MM-DD>"
      },
      "counterparty": {
        "entity_type": "individual",
        "full_name": "<beneficiary name>",
        "address": "<beneficiary address if known>",
        "payment_method": {
          "method_type": "crypto_wallet",
          "account_id": "<counterparty wallet address>"
        }
      }
    }

  REQUIRED fields the API rejects if missing:
    - subject.vendor_data + subject.full_name
    - counterparty.full_name
    - transaction_details.direction + currency + currency_kind + amount
    - counterparty.payment_method.account_id (the wallet address)

  Didit packages the subject + counterparty fields into an IVMS-101 payload, hands them off to the connected Travel Rule protocol (TRP / Sumsub TR / Notabene / Veriscope), runs Wallet Screening on the counterparty address server-side, and returns one verdict.

  Response shape (excerpted from a real successful 201):
    {
      "uuid": "<server transaction uuid>",
      "txn_id": "<your transaction_id echoed back>",
      "status": "APPROVED",
      "score": 0,
      "severity": null,
      "travel_rule": { "status": "EXCHANGED", "protocol": "<network>", "ivms_packet_id": "<id>" },
      "props": {
        "wallet_risk_score": 0,
        "sanctions_hit": false,
        "aml_provider": "<provider slug>",
        "aml_screening_type": "WALLET_SCREENING",
        "aml_screening_status": "COMPLETED"
      },
      "cost_breakdown": {
        "total_price": 0.17,
        "items": [
          { "usage_type": "transaction_aml_monitoring", "price": 0.15 },
          { "usage_type": "transaction_monitoring", "price": 0.02 }
        ]
      }
    }

  Transaction status enum (exact case, UPPER_SNAKE_CASE): APPROVED | IN_REVIEW | DECLINED | AWAITING_USER.
  Wallet-screen severity (UPPER): LOW | MEDIUM | HIGH | CRITICAL | UNKNOWN.

  Branch logic:
    APPROVED       → release the crypto.
    IN_REVIEW      → hold the transfer, route to analyst queue.
    DECLINED       → refuse the transfer, log the IVMS attempt for the audit.
    AWAITING_USER  → redirect the user to the remediation URL on the response.

STEP 4 — Inbound transfers: ingest the counterparty's IVMS packet

  When you RECEIVE a transfer from another VASP:
    - The connected Travel Rule protocol delivers the originator IVMS data to you BEFORE the on-chain transfer settles.
    - Submit it via the same POST /v3/transactions/ with direction: "INBOUND" and the originator fields on subject and your own beneficiary on counterparty.
    - Wallet Screening runs on the originator wallet (subject.payment_method.account_id).
    - Verdict drives whether to credit the user.

STEP 5 — Self-hosted (unhosted) wallet transfers

  For transfers TO a self-hosted wallet (no counterparty VASP to exchange with):
    - Collect the beneficiary identity from the user via a custom questionnaire ($0.10).
    - Above local enhanced-due-diligence thresholds, prompt the user to sign a short message with the beneficiary wallet's private key as proof of control.
    - Submit the transaction with the captured beneficiary fields + wallet address.
    - Didit still runs Wallet Screening on the destination and stores the IVMS-format record for the audit.

STEP 6 — Continuous AML on the user is automatic

  Every approved user is re-screened daily against 1,300+ sanctions, PEP, and adverse-media lists. There is NO separate endpoint to call. When a previously-clean user crosses an AML threshold, the session status updates and a signed webhook fires.

WEBHOOK EVENT NAMES
  - Sessions: status changes flow through the standard session webhook.
  - Transactions: transaction.created · transaction.updated · transaction.status.changed · transaction.alert.generated.
  Verify X-Signature-V2 on every payload.

CONSTRAINTS
  - Session statuses Title Case With Spaces; transaction statuses UPPER_SNAKE_CASE. Don't mix.
  - EU Transfer of Funds Regulation has NO de minimis threshold for crypto — every transfer carries originator + beneficiary data.
  - US Travel Rule kicks in at $3,000; UK at £1,000; Singapore at SGD 1,500; Switzerland at CHF 1,000. Apply per-workflow.
  - Default record retention is 5 years post-transfer per most AML regimes; extensible per supervisor guidance.
  - Wallet Screening MUST run BEFORE the crypto leaves — a post-transfer screen is useful for audit but useless for blocking.

Read the docs:
  - https://docs.didit.me/transaction-monitoring/overview
  - https://docs.didit.me/transaction-monitoring/transactions
  - https://docs.didit.me/transaction-monitoring/aml-screening
  - https://docs.didit.me/sessions-api/create-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 managed transfer — Transaction Monitoring base + Wallet Screening.
  • 0+
    Sanctions, Politically Exposed Persons (PEP), and adverse-media lists screened on every user.
  • 0+
    Travel Rule protocols interoperable on the same IVMS-101 payload — TRP, Sumsub TR, Notabene, Veriscope, OpenVASP, Shyft.
  • 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