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


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

規制対象プラットフォームが負うべきもの
eパスポートチップのデータは、発行国によって暗号署名されています。その署名チェーンを検証し、セルフィーを高解像度のチップ顔写真と照合することで、書類が本物であるという銀行レベルの確証が得られます。DiditのNFCフローは5秒以内に完了し、NFCが利用できない場合はOCRにフォールバックします。iOS、Android、React Native、Flutter用のネイティブSDKも提供しています。
本人確認、ライブネス、顔照合、制裁リスト、住所、年齢、電話番号、メールアドレス、カスタム質問など、必要なチェックを選択します。ダッシュボードでフローにドラッグ&ドロップするか、同じフローをAPIにポストします。条件分岐やA/Bテストもコード不要で実行できます。
Web、iOS、Android、React Native、FlutterのSDKでネイティブに組み込むか、ホストされたページにリダイレクトします。または、メール、SMS、WhatsAppなど、どこからでもユーザーにリンクを送信するだけです。あなたのスタックに合った方法を選んでください。
Diditはカメラ、照明の指示、モバイル連携、アクセシビリティをホストします。ユーザーがフローを実行している間、200以上の不正信号をリアルタイムでスコアリングし、すべてのフィールドを信頼できるデータソースと照合して検証します。結果は2秒以内に表示されます。
リアルタイムの署名付きWebhookにより、ユーザーが承認、拒否、またはレビューに送られた瞬間にデータベースが同期されます。必要に応じてAPIをポーリングすることも可能です。または、コンソールを開いてすべてのセッション、すべての信号を検査し、ケースを独自の方法で管理することもできます。
Didit · NFC読み取り
ステップ 2 / 4
パスポートをスマートフォンにかざしてください
Didit · ICAO 9303チェーン
Didit · 顔照合 1:1
チップポートレート · DG2
高解像度 · 政府署名
ライブセルフィー
スコア 0.94 · iBeta L1
Didit · パッシブライブネス
Didit · AML
Didit · 本人確認
$ curl -X POST https://verification.didit.me/v3/session/ \
-H "x-api-key: $DIDIT_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"workflow_id": "wf_nfc_onboarding",
"vendor_data": "user-42",
"expected_country": "ES"
}'ネイティブSDKでURLを開くと、NFCタップが起動します。$ curl https://verification.didit.me/v3/session/$SESSION/decision/ \
-H "x-api-key: $DIDIT_API_KEY"
# Decision payload (excerpted):
{ "nfc_verification": { "passive_authentication": "Approved" },
"face": { "matched_against": "chip_portrait", "similarity_score": 0.94 } }chip_portraitと照合 → eIDASレベルの保証。You are integrating Didit's NFC e-passport reading into a regulated onboarding flow (bank, fintech, crypto exchange, eIDAS-grade public service). NFC chip reading lifts onboarding from document-scan-grade to bank-grade in one extra step on the user's phone.
Five obligations on every onboarding:
1. Read the e-passport / e-ID chip via NFC — DG1 (MRZ), DG2 (portrait), DG11 (personal details).
2. Verify the government signature chain — Passive Authentication (PA) against the ICAO Public Key Directory, Chip Authentication (CA), Active Authentication (AA).
3. Match the live selfie to the high-resolution DG2 portrait extracted from the chip.
4. Run Passive Liveness on the selfie — iBeta Level 1 anti-spoof certified, defeats printed photos, screen replays, masks, and deepfakes.
5. Screen the chip-verified identity against sanctions, Politically Exposed Persons (PEP), and adverse-media lists.
Fallback automatically when NFC is unavailable (no chip, NFC blocked by iOS or by user permission, chip damaged): the workflow drops to high-accuracy MRZ + OCR on the visual page using ID Verification.
Pricing (verified live):
- NFC Reading: $0.15 per chip read
- ID Verification (fallback or always-on belt-and-braces): $0.15 per check
- Passive Liveness: $0.10 per check
- Face Match 1:1: $0.05 per match
- AML Screening: $0.20 per check
- Bundle (NFC + Liveness + Face Match + AML): $0.50 per onboarded user when NFC succeeds; $0.50 also when the workflow falls back to ID Verification
- First 500 KYC 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.
- A workflow_id from the Workflow Builder bundling NFC Reading + ID Verification (fallback) + Passive Liveness + Face Match 1:1 + AML Screening.
- The Didit hosted flow or the native SDKs (web SDK, iOS, Android, React Native, Flutter) — NFC chip reading requires the native NFC stack, so plain web-only deployments fall back to MRZ + OCR automatically.
STEP 1 — Create the NFC session
POST https://verification.didit.me/v3/session/
Headers:
x-api-key: <your api key>
Content-Type: application/json
Body:
{
"workflow_id": "<your nfc onboarding workflow id>",
"vendor_data": "<your user id, max 256 chars>",
"callback_url": "https://<your-app>/onboarding/kyc/callback",
"expected_country": "ES",
"metadata": {
"channel": "native_ios",
"purpose": "high_assurance_onboarding"
}
}
Response: 201 Created with the hosted session URL. Open it via the native SDK (iOS NFC requires CoreNFC entitlement) or in the hosted webview; the user taps the e-passport against the phone's NFC reader, the chip data is read in 2-4 seconds.
STEP 2 — The chip-read sequence (handled by the SDK / hosted flow)
Inside the hosted flow, in this order:
a. The user presents the data page so the device camera reads the Machine-Readable Zone (MRZ). The MRZ provides the BAC / PACE key needed to handshake with the chip.
b. The user taps the passport to the phone. PACE (preferred) or BAC handshake establishes a secure session with the chip.
c. The chip returns Data Group 1 (MRZ data — name, DOB, expiry, document number), Data Group 2 (the high-resolution portrait), and Data Group 11 (personal details where available).
d. Passive Authentication verifies the Document Signer Certificate against the country's Country Signing CA via the ICAO Public Key Directory. Chip Authentication and Active Authentication run if supported by the issuing country.
e. The user takes a single selfie (Passive Liveness, no challenge prompts).
f. The selfie is matched 1:1 against the DG2 portrait.
STEP 3 — Read the signed webhook on 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",
"nfc_verification": {
"status": "Approved",
"passive_authentication": "Approved",
"chip_authentication": "Approved",
"active_authentication": "Approved",
"data_groups_read": [1, 2, 11]
},
"id_verification": { "status": "Approved", "document_type": "passport", "country_code": "ES" },
"liveness": { "status": "Approved" },
"face": { "status": "Approved", "similarity_score": 0.94, "matched_against": "chip_portrait" },
"aml": { "status": "Approved", "hits": [] }
}
Session 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.
STEP 4 — Decide
Branch logic:
Approved → onboard the user with bank-grade assurance.
In Review → hold the account, wait for analyst webhook update.
Declined → refuse onboarding, log the decline reason.
Resubmitted → user updated something; re-read the decision.
When face.matched_against === "chip_portrait", you can mark the identity as eIDAS High-grade (Substantial / High depending on your local regulator's reading). When it falls back to "id_document_portrait" (the visual page), it's still bank-grade by document-scan standards but not chip-anchored.
STEP 5 — Fallback paths
iPhones below iPhone 7, or any phone with NFC disabled, or a document without a chip (pre-2014 in some countries) → the workflow surfaces "NFC unavailable" and routes to the ID Verification + MRZ + OCR path. Same hosted URL, same webhook, same statuses. The fallback is configured in the Workflow Builder, not in your code.
Some Android devices won't read every chip due to NFC antenna placement — Didit's iOS / Android SDKs surface a graceful retry hint before failing over to OCR.
STEP 6 — Ongoing monitoring
Enable Ongoing AML at $0.07/user/year to keep the identity fresh. NFC re-reads aren't required for ongoing — the chip data was captured at onboarding and the binding is permanent for the document's validity period.
WEBHOOK EVENT NAMES
- status.updated — session status changed.
- data.updated — session data changed (resubmission, NFC retry, ongoing AML hit).
Verify X-Signature-V2 on every payload. The webhook secret is per-environment — sandbox key is separate from production.
CONSTRAINTS
- Session statuses use Title Case With Spaces (Approved, In Review).
- NFC chip reading requires the native NFC stack — iOS, Android, React Native, Flutter SDKs handle it; pure web falls back to MRZ + OCR.
- The chip portrait (DG2) is far higher-resolution than the visual page — matching the selfie to it is meaningfully more accurate than matching to a phone-camera-captured ID photo.
- Document Signer Certificate trust is anchored to the ICAO Public Key Directory; some countries (eg. small island states) do not publish to the PKD and will return a Passive Authentication warning rather than Approved.
- Default record retention is 5 years post-relationship per the EU AML package.
Read the docs:
- https://docs.didit.me/sessions-api/create-session
- https://docs.didit.me/sessions-api/retrieve-session
- https://docs.didit.me/core-technology/nfc-verification/overview
- https://docs.didit.me/core-technology/face-match/overview
- 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は本人確認と不正対策のためのインフラです。私たちが製品を開発していたときに「こんなプラットフォームがあれば」と願った、オープンで柔軟、開発者に優しいプラットフォームです。ブラックボックスとしてではなく、スタックの真の構成要素として機能します。
1つのAPIで、個人の確認(KYC、顧客確認)、企業の確認(KYB、企業確認)、暗号資産ウォレットのスクリーニング(KYT、取引確認)、リアルタイムでの取引監視をカバーします。このスタックは、以下の特徴を持つように構築されています。
基盤となるフットプリント:14,000以上の文書タイプ、48以上の言語、1,000以上のデータソース、そしてすべてのセッションで200以上の不正シグナル。Diditのインフラは、すべてのセッションから動的に学習し、日々改善されています。
現代のパスポート(およびEUで増えつつある現代の国民IDカード)には、小さな非接触型チップが搭載されています。これは、カードで支払う際にタップするのと同じ種類のチップです。このチップには以下の情報が含まれています。
最後の部分が重要です。チップは発行国に暗号学的に紐付けられているため、攻撃者が返される情報を偽造したり改ざんしたりすることはできません。そのためには、政府の署名を偽造する必要があります。Diditは、ユーザーのスマートフォンでNFCを介してチップを2〜4秒で読み取り、1回あたり$0.15で提供します。
重要度順に3つの理由があります。
ほとんどのオンボーディングフローでは、文書スキャンで十分です。しかし、銀行、フィンテック、eIDASグレードの公共サービス、および単一の誤検知が実質的なコストにつながるあらゆるフローでは、NFCチップ読み取りが標準的な管理策となります。
エンドツーエンドの全フローは通常30秒未満で完了します, IDを手に取り、文書を撮影し、セルフィーを撮影すれば完了です。これは市場で最速です。従来のKYCプロバイダーでは、同じフローで通常90秒以上かかります。
バックエンドでは、Diditはp99で2秒未満で結果を返します。これは、ユーザーがセルフィーを完了した瞬間からWebhookが発火するまでの時間で測定されます。モバイルキャプチャは、低速なスマートフォンやネットワーク向けに最適化されています。プログレッシブ画像圧縮、遅延SDKロード、そしてユーザーがWebで開始した場合のQRコードによるデスクトップからスマートフォンへのワンタップ引き継ぎなどです。
ICAO Doc 9303は、機械読み取り可能な渡航文書(MRTD)に関する国際仕様です。世界のすべての現代パスポートはこの仕様に基づいて作成されています。NFC検証において重要な3つの要素は以下の通りです。
Diditはこれら3つすべてを実行し、それぞれの判定結果を意思決定ペイロードで個別に公開します。ICAO Doc 9303準拠とは、チップ読み取りパスが空港のeゲートで国境警備官が使用するものと同じであることを意味します。
すべてのセッションは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は、本人確認インフラにとって重要な規制当局の要件にデフォルトで準拠しています。
詳細なメモ、すべての証明書、すべての規制当局からの書簡は/security-complianceでご覧いただけます。
3つの連携パス, スタックに合うものを選択してください。
同じダッシュボード、同じ請求、同じ成功報酬型料金が3つすべてに適用されます。ステップバイステップガイドはdocs.didit.me/integration/integration-promptでご覧いただけます。
一般的な3つの失敗モードがあり、すべてワークフローで処理されます。
フォールバックパスは、同じ /v3/session/、同じWebhook、同じステータスを使用します。意思決定ペイロードは、どのパスが成功したかを通知するため、それに基づいてルーティングできます。NFCパスの場合は face.matched_against === "chip_portrait"、OCRフォールバックの場合は "id_document_portrait" となります。銀行レベルのワークフローでは、OCRフォールバックを拒否し、別のデバイスでの再試行を要求することも可能です。
EUの電子識別フレームワークであるeIDAS 2の下では、生体認証と組み合わせたチップ検証済みeパスポートは、ワークフローの周辺制御に応じて、実質的または高い保証レベルをサポートできます。
Diditの役割は、基盤となる本人確認の証拠を提供することです。
完全なフローが実質的または高い保証レベルに達するかどうかは、利用するウォレット、信頼フレームワーク、および各国の規制当局の解釈によって異なります。Diditは、EU政府から正式な認定を受けた唯一のKYCプラットフォームです。スペイン財務省、スペイン銀行、SEPBLACは共同で、このサービスが対面での本人確認よりも安全であると認定しました。このレポートは、eIDASの高い保証レベルに関する議論の最も引用される出発点となっています。
ほとんどのNFCプロバイダーは、チップ読み取り1回あたり$1.50から$5.00で価格設定しており、多くの場合、月額数千ユーロの最低料金や、チップ署名証明書のサブスクリプションに対する国ごとの追加料金が発生します。Onfido、Jumio、Veriffなどがその典型です。
Diditの公開価格は、NFCチップ読み取り1回あたり$0.15 + フルバンドル(NFC + Liveness + Face Match + AML)で$0.50です。最低料金や国ごとの追加料金はありません。最初の毎月500回の検証は無料で、ほとんどのパイロットプロジェクトを完全にカバーします。
これは、同じ規制要件を満たす既存のスタックと比較して、およそ10〜30倍安価です。月間10,000ユーザーの場合、チップ読み取り1回あたり$2.00の既存プロバイダーと比較して、約$18,500の節約になります。欧州の銀行規模(月間100,000以上のKYC)では、年間で数十万ドルの節約になります。全料金は/pricingでご覧いただけます。