跳到主要内容
Didit 融资 750 万美元,打造身份与欺诈基础设施
Didit
NFC 验证

读取芯片。
验证签名。

将电子护照或电子身份证轻触手机。读取芯片,验证政府签名,捕获普通照片检查遗漏的伪造信息。每次读取 $0.15,每月免费 500 次。

投资方
Y CombinatorRobinhood Ventures
Didit NFC 身份验证, 从护照或国民身份证读取电子身份证芯片。

ICAO 9303

读取芯片。
加密签名。

轻触护照。芯片返回与照片相同的数据, 但这次是由签发国签名的。$0.15,不到 2 秒。

工作原理

从注册到验证用户,仅需四步。

  1. 步骤 01

    创建工作流

    选择您需要的检查项, 身份、活体、人脸比对、制裁、地址、年龄、电话、电子邮件、自定义问题。在控制台中将它们拖入流程,或将相同的流程发布到我们的 API。根据条件分支,运行 A/B 测试,无需代码。

  2. 步骤 02

    集成

    使用我们的 Web、iOS、Android、React Native 或 Flutter SDK 进行原生嵌入。重定向到托管页面。或者直接通过电子邮件、短信、WhatsApp 等任何方式向您的用户发送链接。选择适合您技术栈的方式。

  3. 步骤 03

    用户完成流程

    Didit 托管摄像头、灯光提示、移动设备切换和辅助功能。在用户进行流程时,我们实时评估 200 多个欺诈信号,并根据权威数据源验证每个字段。两秒内出结果。

  4. 步骤 04

    您收到结果

    实时签名 Webhook 可确保用户批准、拒绝或发送审核后,您的数据库立即同步。按需轮询 API。或者打开控制台检查每个会话、每个信号,并按您的方式管理案例。

专为开发者打造 · 专为防欺诈而生 · 开放式设计

六大功能。一个特性开关。NFC

以下所有功能都集成在同一个模块中。没有升级套餐,没有单独的SKU,也没有额外的附加费用。您可以根据工作流启用这些功能,或者在通过API创建工作流时包含NFC模块。
01 · 加密读取

验证每个芯片上的签名, 而非页面上的印刷。

每本现代电子护照和电子身份证都带有一个由签发政府签名的非接触式芯片。我们通过NFC(近场通信)读取芯片,验证数字签名,并返回防篡改的验证结果。这能有效识别变脸攻击、照片替换以及通过肉眼检查的伪造证件。
02 · ICAO 9303 数据组

完整芯片内容提取、结构化并签名。

芯片上的每个ICAO 9303数据组都会被读取, 包括签名安全对象、个人数据、MRZ(机器可读区)、高分辨率面部图像、签名图像,以及签发国存储的任何额外生物识别信息。您将获得一份干净的`chip_data` JSON数据,以及肖像和签名的签名URL。
03 · ICAO PKD 信任

信任锚定在ICAO公共密钥目录。

每次芯片读取都会追溯完整的证书链, 文档签名者 → 国家签名机构 → ICAO公共密钥目录根证书, 并实时检查该国家的吊销列表。被吊销和过期的证书会显示为可配置的警告;其余的则作为报告上的真实性布尔值通过。
04 · 照片与芯片比对

交叉核对所有字段。不匹配时自动拒绝。

照片数据必须与芯片数据匹配。如果两者不一致,会话将自动拒绝, 此触发器无法关闭。这是识别篡改照片区域、更换芯片或带有逼真印刷的假证件的最清晰信号。
05 · 移动SDK优先

iOS、Android、React Native、Flutter, 内置芯片读取功能。

原生SDK为您连接设备NFC读取器、权限和芯片读取UI。iOS使用Core NFC;Android使用NfcAdapter上的IsoDep;React Native和Flutter则封装了两者。不带NFC的浏览器会自动回退到标准ID+自拍, 会触发跳过警告,会话继续进行。
06 · 全球覆盖

所有ICAO签发国,每季度持续增加。

2006年以后签发的大多数护照都带有芯片,此外还有越来越多的国家电子身份证, 西班牙DNIe、德国Personalausweis、意大利CIE、爱沙尼亚身份证、葡萄牙Cartão de Cidadão、比利时eID、荷兰eID。国家证书会自动更新;新国家在我们收录后即可读取。
集成

一个工作流。两种方式启动芯片读取。

NFC没有独立的服务器到服务器端点, 芯片需要具备NFC硬件的设备才能读取。以下两种路径都使用相同的会话创建调用;它们的不同之处仅在于用户是在我们的托管UI中读取芯片,还是通过原生SDK在您自己的应用中读取。
POST /v3/session/托管UI
$ 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_id_nfc",
    "vendor_data": "user-42"
  }'
201已创建{ "session_url": "verify.didit.me/..." }
我们提供芯片读取 UI。工作流必须包含 ID_VERIFICATION + NFC文档 →
DiditSdk.startVerification原生SDK
// iOS · Swift
import DiditSdk

let result = try await DiditSdk.shared.startVerification(
    使用: sessionId,
    配置: config
)
donein-app{ "status": "Approved" }
您掌控 UI,SDK 负责 NFC 连接。支持 Android、React Native 和 Flutter。文档 →
代理就绪集成

一键集成 NFC 验证。

将以下代码块粘贴到 Claude Code、Cursor、Codex、Devin、Aider 或 Replit Agent 中。用您的框架、语言和用例填充 my_stack 占位符。代理将配置 Didit,构建启用 NFC 的工作流,连接 webhook,并完成部署。
didit-integration-prompt.md
# Didit NFC Verification — integrate in 5 minutes

You are integrating Didit's NFC Verification (cryptographic e-passport
and e-ID chip reading) module into <my_stack>. Follow these steps exactly.
Every URL, header, and enum value below is canonical — do not paraphrase
or "improve" them.

## 1. Provision an account
- Sign up: https://business.didit.me (no credit card required).
- Or provision programmatically: POST https://apx.didit.me/auth/v2/programmatic/register/
  (returns an API key bound to the workspace + application).

## 2. What NFC Verification actually does
NFC Verification reads the secure contact-less chip embedded in modern
e-passports and e-IDs (the small chip-and-antenna sticker symbol on the
cover) and runs four cryptographic checks against the data it extracts:

1. Passive Authentication — every Data Group (DG1 personal data, DG2
   facial image, etc.) is hashed and compared against the signed hash
   stored in the Document Security Object (SOD). Catches any single-bit
   tampering of the chip contents.
2. Certificate chain validation — Document Signer Certificate (DSC) →
   Country Signing Certificate Authority (CSCA) → ICAO Public Key
   Directory (PKD) root. Proves the chip was signed by the issuing
   government, not a clone.
3. Certificate Revocation List (CRL) check — DSCs revoked by the issuing
   country are caught and flagged.
4. Chip Authentication — where the document supports it, prevents chip
   cloning by challenging the chip with a key-pair handshake.

PACE (Password Authenticated Connection Establishment) or BAC (Basic
Access Control) is used to derive the session key from the Machine-Readable Zone (MRZ); Didit
handles that automatically. All of this is ICAO 9303 standard.

## 3. Two integration paths — pick one

### Path A — Workflow Builder (hosted UI, REQUIRED for NFC)
NFC Verification has no server-to-server standalone endpoint. The chip
has to be read by a device with NFC hardware, so you always integrate
through the Workflow + native SDK (or hosted mobile web that falls back).

1. Create a workflow that contains the NFC feature:
   POST https://verification.didit.me/v3/workflows/
   Authorization header:  x-api-key: <your-api-key>
   Body: workflow_label, features array with the entries
         { feature: "ID_VERIFICATION" }
         { feature: "NFC" }
         (UPPERCASE — strict enum)
   You should always pair NFC with ID_VERIFICATION so the MRZ is captured
   for the chip handshake AND so an OCR cross-validation is available.

2. Create a verification session for an end user:
   POST https://verification.didit.me/v3/session/
   Body: workflow_id (from step 1), vendor_data (your own user id).
   Response: session_url — redirect the user to it (or open it in the
   native SDK with shared.startVerification(with: sessionId)).

3. Listen for webhook callbacks (see "Webhooks" below).

### Path B — Native SDKs (drop-in, recommended for mobile apps)
Same workflow + session above, but launch the verification flow in your
own iOS or Android app via the Didit SDK. The SDK wires the NFC reader,
the entitlements, and the chip-reading UI for you.

- iOS: DiditSdk.shared.startVerification(with: sessionId, configuration:)
  Required entitlements (handled by the SDK):
    - com.apple.developer.nfc.readersession.formats = ["TAG"]
    - ISO7816 application identifiers for ePassports
- Android: DiditSdk.startVerification(sessionId, config) — uses
  IsoDep (android.nfc.tech.IsoDep) under the hood.
- React Native / Flutter: the same SDK, exposed through the cross-
  platform module — see docs.didit.me/integration/native-sdks/.

### Web browsers — NFC is unavailable
Web NFC API is not generally available. Chrome on Android has an
experimental Web NFC that is unstable and requires explicit permissions;
Safari on iOS has no support. For web integrations, NFC is automatically
skipped and the user proceeds with standard ID + selfie. If you require
NFC, deep-link the user into the Didit App or your own native app.

## 4. Webhooks
- Register a webhook destination once via
  POST https://verification.didit.me/v3/webhook/destinations/
  Body: url, subscribed_events: ["session.verified", "session.review_started",
                                  "session.declined"]
- Response includes secret_shared_key — store it.
- Every webhook delivery carries an X-Signature-V2 header you MUST verify
  before trusting the payload.  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.Algorithm:
    1. sortKeys(payload) recursively
    2. shortenFloats (truncate trailing zeros after the decimal point)
    3. JSON.stringify the result
    4. HMAC-SHA256 with the secret_shared_key
    5. Hex-encode, compare to the X-Signature-V2 header.

## 5. Reading the report
The session report includes an nfc object alongside the id_verification
object. Top-level fields on nfc:

- status: "Approved" | "Declined" | "In Review" | "Not Finished"
- portrait_image: signed URL to the chip-extracted DG2 facial image
- signature_image: signed URL to the chip-extracted DG7 signature
- chip_data:
    document_type, issuing_country (ISO 3166-1 alpha-3),
    document_number, expiration_date (YYYY-MM-DD),
    first_name, last_name, birth_date, gender ("M" | "F" | "U"),
    nationality (ISO 3166-1 alpha-3), address, place_of_birth.
- authenticity:
    sod_integrity (boolean — every Data Group hash matched the SOD)
    dg_integrity (boolean — Data Group binary integrity check passed)
- certificate_summary:
    issuer (CSCA Common Name + serial + organization + country)
    subject (DSC Common Name)
    serial_number
    not_valid_after (YYYY-MM-DD HH:MM:SS)
    not_valid_before (YYYY-MM-DD HH:MM:SS)
- warnings: Array of { risk, additional_data, log_type,
                       short_description, long_description }

### Auto-decline (always enforced, never configurable)
- NFC_AND_OCR_DATA_NOT_SAME — Optical Character Recognition (OCR) data
  and chip data differ. Indicates document tampering or fake chip.

### Configurable warnings (per-workflow action: Decline / Review / Approve)
- SKIPPED_NFC_VALIDATION       — chip not read (no NFC hardware, no
                                  permissions, document has no chip)
- NFC_CHIP_NOT_VERIFIED        — chip read but signature could not be
                                  verified (missing CSCA, older document)
- DSC_CERTIFICATE_REVOKED      — Document Signer Certificate listed on
                                  the issuing country's CRL
- DSC_CERTIFICATE_EXPIRED      — Document Signer Certificate past its
                                  validity period

## 6. Hard rules — do not change
- Base URL for /v3/* endpoints is verification.didit.me (NOT apx.didit.me).
- Feature enum is UPPERCASE: NFC, ID_VERIFICATION, LIVENESS, FACE_MATCH.
- Auth header is x-api-key (lowercase, hyphenated).
- Webhook signature header is X-Signature-V2 (NOT X-Signature).
- Always verify webhook signatures before trusting payload data.
- Always pair NFC with ID_VERIFICATION in the workflow — NFC alone
  cannot derive the chip key without the MRZ from the document photo.
- Status casing matches exactly: "Approved", "Declined", "In Review",
  "Not Finished" (title-cased, space-separated).
- Treat NFC as an additive confidence boost, not a hard gate, unless
  your risk policy explicitly requires it (regulated remote
  onboarding under PSD3, AMLD6 high-risk customer flows, etc.).

## 7. Pricing reference (public)
- NFC Verification: $0.15 per chip read (standalone module).
- Bundled inside a full Know Your Customer (KYC) workflow (ID + Liveness + Face Match + NFC):
  priced as the underlying KYC bundle ($0.33) + $0.15 NFC if enabled.
- 500 free checks every month, forever, on every account.

## 8. Verify your integration
- Sandbox starts on signup at https://business.didit.me — no separate flag.
- Test documents: use the Didit App on a real iOS or Android device with
  any ICAO 9303 e-passport issued after 2006 (most modern passports).
- Sandbox webhook events fire the same shape as production; verify the
  X-Signature-V2 header in dev too.
- Switch to live: flip the application's environment toggle in console.

When in doubt: https://docs.didit.me/core-technology/nfc-verification/overview
合规性设计

一键开启新国家/地区业务。 我们为您解决难题。

我们负责设立当地子公司、获取许可证、进行渗透测试、获得认证,并与所有新法规保持一致。要在新国家/地区发布验证服务,只需轻点开关。已覆盖220多个国家/地区,每个季度进行审计和渗透测试, 是唯一一个被欧盟成员国政府正式认定比线下验证更安全的身份提供商。
阅读安全与合规性档案
欧盟金融沙盒
Tesoro · SEPBLAC · BdE
Jugendschutz geprüft
FSM · JMStV §4(2) · 2026
ISO/IEC 27001
信息安全 · 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
原生符合欧盟标准

数据证明

数据证明
  • ICAO 9303
    每次芯片读取均符合 ICAO 电子护照标准。
  • PKD
    信任根植于 ICAO 公钥目录。
  • <0s
    现代智能手机上的端到端芯片读取。
  • $0.00
    每次 NFC 芯片读取。每月免费 500 次。
三个层级,一份价目表

免费开始。按使用量付费。可扩展至企业级。

每月 500 次免费验证,永久有效。生产环境按量付费。企业版提供定制合约、数据驻留和 SLA (Service Level Agreements)。
免费

免费

每月 $0。无需信用卡。

  • 免费 KYC 套件(身份验证 + 被动活体检测 + 人脸匹配 + 设备与 IP 分析), 每月 500 次,永久有效
  • 黑名单用户
  • 重复检测
  • 每次会话 200+ 欺诈信号
  • Didit 网络中可重复使用的 KYC
  • 案件管理平台
  • 工作流构建器
  • 公开文档、沙盒、SDK、MCP(模型上下文协议)服务器
  • 社区支持
最受欢迎
按用量付费

按用量计费

按实际用量付费。25+模块。公开的模块定价,无每月最低费用。

  • 完整KYC $0.33(身份+生物识别+IP/设备)
  • 10,000+ AML数据集, 制裁、PEP、负面媒体
  • 1,000+ 政府数据源用于数据库验证
  • 交易监控 $0.02/笔交易
  • 实时KYB $2.00/家企业
  • 钱包筛选 $0.15/次检查
  • 白标验证流程, 您的品牌,我们的基础设施
企业版

企业版

定制MSA和SLA。适用于大批量和受监管项目。

  • 年度合同
  • 定制MSA、DPA和SLA
  • 专属Slack和WhatsApp频道
  • 按需人工审核员
  • 经销商和白标条款
  • 独家功能和合作伙伴集成
  • 指定CSM、安全审查、合规支持

免费开始 → 仅在检查运行时付费 → 解锁企业版以获取定制合约、SLA 或数据驻留。

FAQ

常见问题

Didit 是什么?

Didit 身份和欺诈基础设施, 是我们自己构建产品时希望存在的平台:开放、灵活且对开发者友好,因此它可以作为您技术栈的真正一部分,而不是一个需要您围绕其进行集成的黑盒。

一个 API 涵盖了人员验证(KYC了解您的客户)、企业验证(KYB了解您的业务)、加密钱包筛选(KYT了解您的交易)以及实时交易监控, 所有这些都建立在以下技术栈之上:

  • 快速, 每次会话的 p99 响应时间低于 2
  • 可靠, 已在 220 多个国家/地区 1,500 多家公司投入生产
  • 安全, 符合 SOC 2 Type 1、ISO 27001、GDPR 原生,并经西班牙金融监管机构正式证明比亲自验证更安全

底层支持:14,000 多种文档类型,支持 48 种以上语言1,000 多个数据源,以及每次会话的 200 多个欺诈信号。Didit 基础设施从每次会话中动态学习并日益完善。

支持哪些文档和国家/地区?
所有符合 ICAO 9303 标准的电子护照和带有嵌入式非接触式芯片的电子身份证, 通常由封面上的芯片和天线符号表示。2006 年后发行的大多数护照都带有 NFC 芯片;国民身份证的覆盖范围因国家/地区而异(西班牙 DNIe、德国 Personalausweis、意大利 CIE、爱沙尼亚身份证、葡萄牙 Cartão de Cidadão 等)。完整的国家/地区列表请访问 docs.didit.me/core-technology/nfc-verification/supported-documents-nfc-verification。芯片通过 PACE(密码认证连接建立)或 BAC(基本访问控制)读取, Didit 会自动从机读区 (MRZ) 获取会话密钥,因此用户只需将文档轻触手机即可。
响应结构是怎样的?
一个单独的 nfc JSON 对象以及 id_verification 对象。顶层 status ApprovedDeclinedIn Review Not Finished 之一。该对象还包括一个 chip_data 块(document_type、发行国家/地区 ISO 3166-1 alpha-3、document_number、expiration_date、first_name、last_name、birth_date、gender、nationality、address、place_of_birth)、一个 authenticity 块(sod_integritydg_integrity)、一个 certificate_summary(issuer、subject、serial_number、not_valid_after、not_valid_before)、portrait_image(芯片提取的 DG2 面部图像)和 signature_image(芯片提取的 DG7 签名图像)的签名 URL,以及一个 warnings 数组。完整参考请访问 docs.didit.me/core-technology/nfc-verification/report-nfc-verification
最终用户的验证速度有多快?

整个流程通常在 30 秒内完成, 拿起身份证,拍摄文档,拍摄自拍,完成。这是市场上最快的速度。传统的 KYC 提供商完成相同流程通常需要超过 90

在后端,Didit p99 下两秒内返回结果,从用户完成自拍到您的 webhook 触发。移动端捕获针对慢速手机和慢速网络进行了优化:渐进式图像压缩、延迟加载 SDK,以及如果用户从网页端开始,通过二维码实现桌面到手机的一键切换。

Didit 如何打击文档欺诈?
四个加密层,每个层默认启用。(1) 被动认证, 每个数据组哈希都根据文档安全对象 (SOD) 中的签名进行验证,从而捕获芯片内容中的单比特篡改。(2) 证书链验证, 文档签名证书到国家签名 CA ICAO 公钥目录根,证明芯片由发行政府签名。(3) 证书吊销列表 (CRL) 检查, 捕获被发行国家/地区吊销的文档签名证书。(4) 芯片认证, 在支持的情况下,密钥对握手可防止芯片克隆。此外还有交叉验证:芯片 MRZ 必须与 OCR 提取的 MRZ 匹配,否则会话将自动拒绝。
如果用户失败、放弃或过期,会发生什么?

每个会话都会落入七种明确状态之一,因此您的代码始终知道该怎么做:

  • Approved, 所有检查通过。让用户继续。
  • Declined, 一个或多个检查失败。您可以允许用户重新提交特定的失败步骤(例如,重新拍摄自拍),而无需重新运行整个流程。
  • In Review, 标记为合规性审查。在控制台中打开案例,查看所有信号,决定批准或拒绝。
  • In Progress, 用户正在进行中。
  • Not Started, 链接已发送,用户尚未打开。如果长时间未打开,发送提醒。
  • Abandoned, 用户打开了链接但未及时完成。重新激活或使其过期。
  • Expired, 会话链接已过期。创建新会话。

每次状态更改都会触发签名 webhook,因此您的数据库始终保持同步。放弃和拒绝的会话是免费的。

我的客户数据存储在哪里以及如何受到保护?

生产数据默认在欧盟的 Amazon Web Services 上处理和存储。企业合同可以根据监管机构要求,申请其他区域。

无处不在的加密。 所有数据库、对象存储和备份中的静态数据均采用 AES-256 加密。所有 API 调用、webhook 和业务控制台会话中的传输数据均采用传输层安全协议 1.3 加密。生物识别数据使用单独的客户主密钥加密。

保留期限由您控制。 默认保留期限为无限期(无限制),除非您配置更短的期限, 每个应用程序可在30 天到 10 之间, 您可以随时从仪表板或 API 删除任何单个会话。

认证:SOC 2 Type 1(Type 2 审计进行中)、ISO/IEC 27001:2022iBeta Level 1 PAD,以及来自西班牙 Tesoro / SEPBLAC / CNMV 的公开证明,表明 Didit 的远程身份验证比亲自验证更安全。完整报告请访问 /security-compliance

Didit 是否符合我的行业要求?

Didit 默认符合对身份基础设施至关重要的监管机构要求:

  • GDPR + 英国 GDPR, 控制者/处理者分离,发布完整的《数据处理协议》,指定主要监管机构(西班牙 AEPD)。
  • AMLD6 + 欧盟 AML 单一规则手册, 实时筛选 1,300 多个制裁、政治公众人物和负面新闻列表。
  • eIDAS 2.0, 与欧盟数字身份钱包对齐;支持可复用身份。
  • MiCA (Markets in Crypto-Assets), 适用于加密货币入口、交易所和托管机构。
  • DORA, 数字运营弹性法案,欧盟金融服务运营弹性。
  • BIPA, CUBI, 华盛顿州 HB 1493, CCPA / CPRA, 美国生物识别隐私(伊利诺伊州、德克萨斯州、华盛顿州)和加利福尼亚州消费者隐私。
  • 英国在线安全法案, 年龄门控和儿童安全义务。
  • FATF 旅行规则, 加密货币转账的发起方和受益方数据,IVMS-101 互操作。

详细备忘录、所有证书、所有监管机构函件:/security-compliance

我能多快集成并开始验证用户?
  • 60 即可在 business.didit.me 获得沙盒账户, 无需信用卡。
  • 5 分钟即可通过 Claude Code、Cursor 或任何编码代理,通过我们的模型上下文协议 (MCP) 服务器完成工作验证。
  • 一个周末即可完成生产就绪的集成,包括签名 webhook 验证、重试以及用户被拒绝时的补救流程。

三种集成路径, 选择最适合您技术栈的方式:

  • 使用我们的 Web、iOS、Android、React Native Flutter SDK 原生嵌入
  • 将用户重定向到托管验证页面, 无需 SDK。
  • 通过电子邮件、短信、WhatsApp 或任何渠道发送链接, 无需前端工作。

相同的仪表板、相同的计费、相同的按成功付费价格。分步指南请访问 docs.didit.me/integration/integration-prompt

身份与欺诈基础设施。

一个 API 即可实现 KYC、KYB、交易监控和钱包筛选。5 分钟即可集成。

让 AI 总结此页面