無料
月額$0。クレジットカード不要。
- 無料KYCバンドル(本人確認 + パッシブ・ライブネス + 顔照合 + デバイス&IP分析), 毎月500回まで
- ブロックリストユーザー
- 重複検出
- すべてのセッションで200以上の不正シグナル
- Diditネットワーク全体でのKYC再利用
- ケース管理プラットフォーム
- ワークフロービルダー
- 公開ドキュメント、サンドボックス、SDK、MCP (Model Context Protocol) サーバー
- コミュニティサポート


世界中の2,000以上の組織から信頼されています。

トラベルルールが求めるもの
すべての規制対象VASPは、すべての送金において両方の義務を負います。相手方VASP向けのIVMS-101パケットと、自社向けのオンチェーンリスクスクリーニングです。Diditはこれらを1回のTransactions API呼び出しで提供します。管理された送金は$0.17、ウォレットプロバイダーでBring Your Own Keyを使用する場合は$0.04です。毎月500件の検証が無料です。
ID、生体認証、顔照合、制裁リスト、住所、年齢、電話番号、メールアドレス、カスタム質問など、必要なチェックを選択します。ダッシュボードでフローにドラッグ&ドロップするか、同じフローをAPIにポストします。条件分岐やA/Bテストもコード不要で実行できます。
当社のWeb、iOS、Android、React Native、Flutter SDKでネイティブに組み込むか、ホストされたページにリダイレクトします。または、メール、SMS、WhatsAppなど、どこでもユーザーにリンクを送信するだけです。お使いのスタックに合った方法をお選びください。
Diditは、カメラ、照明の指示、モバイル連携、アクセシビリティをホストします。ユーザーがフローを実行している間、200以上の不正信号をリアルタイムでスコアリングし、すべてのフィールドを信頼できるデータソースと照合して検証します。結果は2秒以内に得られます。
リアルタイムの署名済みWebhookにより、ユーザーが承認、拒否、またはレビューに送られた瞬間にデータベースが同期されます。必要に応じてAPIをポーリングすることも可能です。または、コンソールを開いてすべてのセッション、すべての信号を検査し、ケースを独自の方法で管理することもできます。
Didit · IVMS-101
発信者
受取人
Didit · 地域別ルール
Didit · TR相互運用性
Didit · アンホステッドウォレット
Didit · トランザクションAPI
Didit · エビデンスパック
$ 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"
}'{ ステータス:承認済み・審査中・却下済み }$ 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" }}
}'{ ステータス:承認済み · レビュー中 · 却下 · ユーザー待ち }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.月額$0。クレジットカード不要。
使った分だけお支払い。25以上のモジュール。モジュールごとの公開価格、月額最低料金なし。
カスタムMSA & SLA。大量利用や規制対象プログラム向け。
無料で開始 → チェック実行時のみ支払い → カスタム契約、SLA、データレジデンシーが必要な場合はエンタープライズプランへ。
Diditは本人確認と不正対策のためのインフラです。私たちが自社でプロダクトを開発していた時に「こんなプラットフォームがあれば」と願った、オープンで柔軟、そして開発者に優しいプラットフォームです。ブラックボックスのように統合するのではなく、あなたのスタックの真の構成要素として機能します。
単一のAPIで、個人の認証(KYC、顧客確認)、企業の認証(KYB、企業確認)、暗号資産ウォレットのスクリーニング(KYT、取引確認)、およびリアルタイムでの取引監視をカバーします。このスタックは以下の特徴を備えています。
基盤となるフットプリント:48以上の言語で14,000以上のドキュメントタイプ、1,000以上のデータソース、そしてすべてのセッションで200以上の不正シグナル。Diditのインフラは、すべてのセッションから動的に学習し、日々改善されています。
「トラベルルール」とは、規制対象となる2つのプロバイダー間で価値が移動する際、顧客情報(氏名、口座番号、住所など)もその価値と共に移動しなければならないという規則です。
これは伝統的な金融(1970年の米国銀行秘密法)から始まり、2019年に金融活動作業部会(FATF)によって世界的に拡大され、現在ではあらゆる暗号資産に適用されています。標準的なペイロード形式は「InterVASP Messaging Standard 101 (IVMS-101)」であり、主要なトラベルルールプロトコルはすべてこのJSONスキーマに対応しています。
規制当局の目的はシンプルです。身元情報がすべてのホップで価値に追随することを保証することで、悪意のあるアクターがプロバイダーの連鎖を通じて匿名で収益を洗浄するのを阻止することです。
規制対象となるすべての仮想資産サービスプロバイダー(VASP)または暗号資産サービスプロバイダー(CASP)、つまり取引所、オン/オフランプ、カストディアルウォレット、ブローカー、OTCデスク、暗号資産決済を扱う決済機関が対象です。
現在適用されている管轄区域:
FATFは各国の実施状況について相互評価を行っています。非遵守の管轄区域はグレーリストに指定されるリスクがあります。
通常、エンドツーエンドで30秒以内に完了します。IDを手に取り、書類を撮影し、セルフィーを撮影すれば完了です。これは市場で最速です。従来のKYCプロバイダーでは、同じフローで90秒以上かかることが一般的です。
バックエンドでは、ユーザーがセルフィーを完了した瞬間からWebhookが発火するまで、Diditはp99で2秒未満で結果を返します。モバイルキャプチャは、低速な電話やネットワーク向けに最適化されています。プログレッシブ画像圧縮、遅延SDKロード、そしてユーザーがウェブから開始した場合のQRコードによるデスクトップから電話へのワンタップハンドオフなどが含まれます。
FATFが定める最低限のデータセットは以下の通りです。
データは、2つのプロバイダー間でトラベルルールプロトコルを介して移動します。オンチェーンではなく、トランザクションメモにも記載されません。今日の市場は断片化されており、プロバイダーはTRP、Sumsub Travel Rule、Notabene、Veriscope、OpenVASP、Shyftのいずれか、または複数を採用しています。共通言語はIVMS-101であり、すべてのプロトコルがこれを読み書きします。
送金の受取人は、受取人の口座に入金する前にデータを検証します。
すべてのセッションは7つの明確なステータスのいずれかに分類されるため、お客様のコードは常に適切な処理を実行できます。
Approved, すべてのチェックに合格しました。ユーザーを次のステップに進めます。Declined, 1つ以上のチェックに失敗しました。ユーザーは、フロー全体を再実行することなく、特定の失敗したステップ(例:セルフィーの再撮影)を再提出できます。In Review, コンプライアンスレビューのためにフラグが立てられました。コンソールでケースを開き、すべてのシグナルを確認し、承認または却下を決定します。In Progress, ユーザーはフローの途中にいます。Not Started, リンクは送信されましたが、ユーザーはまだ開いていません。長時間放置されている場合はリマインダーを送信します。Abandoned, ユーザーはリンクを開きましたが、時間内に完了しませんでした。再エンゲージするか、期限切れとします。Expired, セッションリンクの有効期限が切れました。新しいセッションを作成します。ステータスが変更されるたびに署名付きWebhookが発火するため、お客様のデータベースは常に同期されます。中断および却下されたセッションは無料です。
本番データは、デフォルトでAmazon Web Services上の欧州連合内で処理および保存されます。エンタープライズ契約では、規制当局が要求する管轄区域のために代替リージョンをリクエストできます。
あらゆる場所で暗号化。すべてのデータベース、オブジェクトストレージ、バックアップでAES-256による保存時暗号化。すべてのAPIコール、Webhook、ビジネスコンソールセッションでTransport Layer Security 1.3による転送時暗号化。生体認証データは、個別のカスタマーマスターキーで暗号化されます。
保持期間はお客様が管理できます。デフォルトの保持期間は無期限(無制限)ですが、アプリケーションごとに30日から10年の間で短縮設定することも可能です。また、ダッシュボードまたはAPIからいつでも個々のセッションを削除できます。
認証:SOC 2 Type 1(Type 2監査進行中)、ISO/IEC 27001:2022、iBeta Level 1 PAD、およびスペインのTesoro / SEPBLAC / CNMVからの公式認証により、Diditのリモート本人確認は対面での確認よりも安全であることが証明されています。詳細レポートは/security-complianceをご覧ください。
Diditは、IDインフラストラクチャにとって重要な規制当局に対し、デフォルトで準拠しています。
詳細なメモ、すべての証明書、すべての規制当局からの書簡は/security-complianceをご覧ください。
3つの連携パスがあります。お客様のスタックに合ったものをお選びください。
同じダッシュボード、同じ請求、成功ごとの同じ料金が3つすべてに適用されます。ステップバイステップガイドはdocs.didit.me/integration/integration-promptをご覧ください。
現実の世界では、常に完璧なトラベルルールパケットが生成されるわけではありません。相手方から部分的なデータが送信されたり、フィールドがKYC名と一致しなかったり、住所形式が異なったりします。その場合の処理は2つのパスに分かれます。
DECLINEDとなり、ユーザーに再提出を促します。IN_REVIEWとなり、ビジネスコンソールで差分がハイライトされたケースがオープンされます。AWAITING_USERとなり、Diditが自動的に是正セッションを作成し、応答で検証URLを返します。お客様のコンプライアンスチームはケースをトリアージし、必要に応じて追加データを要求し、コンソール内から承認または拒否を決定します。レビュー担当者のメモ、決定、タイムスタンプは監査パックのために記録されます。
トラベルルールデータは、関係ごとではなく送金ごとに収集されます。トラベルルールパケットの「更新」はありません。しかし、EU AMLパッケージおよび同等の制度の下では、送金の背後にいるユーザーを継続的に監視する必要があります。
Diditは以下を実行します。
これら3つすべてが同じケース管理画面に集約されるため、1人のレビュー担当者がユーザーごとの全体像を把握できます。
ほとんどの規制当局は、すべてのトラベルルール送金と基礎となるユーザーIDに関する記録を少なくとも5年間保管することを要求しており、監督当局が要求する場合はそれ以上になることもあります。
Diditの保持モデル:
Diditは、スペイン財務省、スペイン銀行、SEPBLACが共同で、そのサービスが対面での本人確認よりも安全であると正式に認定した唯一のKYCプラットフォームです。このレポートは、お客様のCASP承認パックに直接提出できます。