Skip to main content
Didit 融资 200 万美元并加入 Y Combinator (W26)
Didit
自定义问卷

收集任何数据
融入任何验证流程。

提出合规团队所需的任何问题, 资金来源、职业、预期交易量、PEP(政治公众人物)自我声明, 并在同一会话中获取经审计的答案。无代码构建器、条件分支、文件上传。每次提交 $0.10,每月前 500 次免费。

投资方
Y CombinatorRobinhood Ventures
GBTC Finance
Bondex
Crnogorski Telekom
UCSF Neuroscape
Shiply
Adelantos

全球2,000多家组织信赖。

资金来源、PEP 自我披露

尽管提问。
锁定审计追踪。

将自定义问卷嵌入工作流程, 资金来源、PEP 自我披露、职业、预期交易量。答案将显示在会话报告中。 每次提交 $0.10。

工作原理

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

  1. 步骤 01

    创建工作流程

    选择您需要的检查项, 身份、活体、人脸匹配、制裁、地址、年龄、电话、邮箱、自定义问题。在控制台中拖拽它们到流程中,或通过我们的 API 发布相同的流程。支持条件分支、A/B 测试,无需代码。

  2. 步骤 02

    集成

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

  3. 步骤 03

    用户完成流程

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

  4. 步骤 04

    接收结果

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

专为开发者打造 · 抵御欺诈 · 开放式设计

六大功能。一个功能标志。QUESTIONNAIRE

以下所有功能都是同一模块中的一个开关。没有升级套餐,没有单独的 SKU,没有附加调用。您可以根据工作流程开启它们,或者在单个工作流程中将问卷步骤置于身份验证和活体检测之后。
01 · 可视化构建器

模式驱动表单。无需代码。无需 SDK。无需构建步骤。

两种模式。简单模式适用于快速的单语言拖放表单, 最适合内部调查和快速证明。高级模式是基于节点的视觉编辑器, 当您需要条件分支、多语言支持、基于选择的后续文本或强制人工审核时,此模式是必需的。两者都可在不到一分钟内发布。
02 · 条件分支

仅向需要回答的用户展示相应问题。

高级模式编辑器中的分支节点会检查任何先前的答案,并引导用户沿着匹配的路径。向美国居民询问 W-9 后续问题,向欧盟居民询问 PEP(政治公众人物)自我声明,并在不适用时跳过两者。从任何节点句柄拖动到空白区域以创建新的连接节点。包含撤消、重做、键盘快捷键、缩放和平移功能。
03 · AML 级模板

资金来源。税务居住地。UBO 声明。

控制台中提供六个预构建的合规模板, 资金来源、就业详情、账户目的、受益所有权、税务居住地、风险评估。每个模板都编码了审计师的期望(收入来源、细分、证明上传、第三方资金、虚拟资产声明)。克隆一个并自定义,或从空白开始。
04 · 结构化响应

所有答案均以可审计的 JSON 格式返回。

会话报告包含一个 `responses` 数组, 每个问卷步骤一个条目。每个条目都包含元素类型、必填标志、本地化标题、选项、上传限制以及包含值、文本或文件的答案对象。API 和每个 webhook 上的形状相同, 一次持久化,无需重复解析。
05 · 响应 + 审计追踪

强制人工审核。人工参与。审计就绪。

开启强制人工审核后,每次提交都会被标记为“待审核”,直到合规人员批准。控制台会显示所有答案、上传的文件和本地化的问题文本。一键批准会触发一个已验证会话的 webhook,并附带最终报告。监管机构可进行端到端审计。
06 · 工作流原生

内嵌于 KYC 流程。或作为独立验证运行。

在身份验证和活体检测后,将问卷调查作为完整 KYC(了解您的客户)入职流程的一部分,用于收集资金来源信息, 一次会话、一个 Webhook、一份存储报告。或者,您也可以发布一个仅包含问卷调查功能的流程,用于持续尽职调查、入职后声明和定期重新认证。两种方式每次提交费用均为 $0.10。
集成

两种模式。相同的 JSON。相同的价格。

在将 QUESTIONNAIRE 与 ID_VERIFICATION 和 LIVENESS 串联起来的工作流程上使用 POST /v3/session/,以在完整的 KYC 中收集数据;或者在唯一功能是 QUESTIONNAIRE 的工作流程上使用,以将其作为独立的问卷验证运行。两者都返回相同的 questionnaire_responses 结构。
POST /v3/session/工作流内
$ 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_kyc_sof",
    "vendor_data": "user-42"
  }'
201已创建{ "session_url": "verify.didit.me/..." }
在同一工作流中,将 QUESTIONNAIRE 链接到 ID_VERIFICATION 之后。文档 →
POST /v3/questionnaires/创建模式
$ curl -X POST https://verification.didit.me/v3/questionnaires/ \
  -H "x-api-key: $DIDIT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "title": "客户入职",
    "languages": ["en"],
    "default_language": "en",
    "form_elements": [
      { "id": "occupation", "element_type": "short_text", "label": { "en": "您的职业是什么?" } }
    ]
  }'
201已创建{ "questionnaire_id": "q_…" }
构建一次,将 questionnaire_uuid 附加到每个需要收集问卷的工作流中。文档 →
代理就绪集成

一键部署自定义问卷。

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

You are integrating Didit's Custom Questionnaires 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. Build the questionnaire — Console OR API

### 2a. Visual builder in the Console (no code)
Questionnaires are authored visually — no schema upload, no SDK required.
1. Open https://business.didit.me, go to Questionnaires, click New.
2. Pick a mode:
   - Simple Mode — single-language drag-and-drop builder. Best for fast
     forms, internal surveys, single-locale flows.
   - Advanced Mode — visual node-based graph editor. Required for
     conditional branching, multi-language translations, choice-driven
     follow-up text, and forced manual review.
3. Drag elements onto the canvas (input, choice, upload, layout — full
   element catalog in section 5 below).
4. Optionally start from a pre-built template (Source of Funds,
   Employment Details, Purpose of Account, Beneficial Ownership, Tax
   Residency, Risk Assessment).
5. Localize titles, descriptions, placeholders, and choice labels for
   every supported language; set a default_language.
6. Publish — the questionnaire is now addressable by its questionnaire_id.

### 2b. Create the questionnaire programmatically (Management API)
Use this path when you want the form to live in code, ship via CI, or be
authored by an LLM. Endpoint:

  POST https://verification.didit.me/v3/questionnaires/
  Headers:  x-api-key: <your-api-key>
            Content-Type: application/json

Required body:
- title              — internal questionnaire name (string).
- languages          — array of locale codes; MUST include "en".
- default_language   — the default locale (string, e.g. "en").
- form_elements      — ordered array of questions (≥1 entry).

Each form element requires id, element_type (lowercase OR uppercase enum
— "short_text", "multiple_choice", "email", "file_upload", "date_picker",
etc.), and a translated label keyed by locale. For dropdown,
single_choice, and multiple_choice add options: [{ value, label }].

Hard constraints:
- This endpoint supports SIMPLE LINEAR questionnaires only. Do NOT send
  graph, branches, next, required_if, or conditional rules — use the
  Console (section 2a) for those.

Example body:
{
  "title": "Customer Onboarding",
  "languages": ["en"],
  "default_language": "en",
  "form_elements": [
    {
      "id": "occupation",
      "element_type": "short_text",
      "label": { "en": "What is your occupation?" },
      "is_required": true
    },
    {
      "id": "source_of_funds",
      "element_type": "multiple_choice",
      "label": { "en": "Source of funds" },
      "is_required": true,
      "options": [
        { "value": "employment", "label": { "en": "Employment" } },
        { "value": "business", "label": { "en": "Business" } },
        { "value": "investments", "label": { "en": "Investments" } }
      ]
    }
  ]
}

Response includes questionnaire_id — store it; you'll use it as
questionnaire_uuid when you wire the questionnaire into a workflow in
section 3 below. Full reference:
https://docs.didit.me/management-api/questionnaires/create

## 3. Two integration paths — pick one

### Path A — Workflow Builder (hosted UI, recommended)
Best when you want Didit to host the form, the file-upload UX, the
multi-language routing, the keyboard handling, and the mobile responsive
layout.

1. Create a workflow that contains the QUESTIONNAIRE feature:
   POST https://verification.didit.me/v3/workflows/
   Authorization header:  x-api-key: <your-api-key>
   Body: workflow_label, features array with the entry
         { feature: "QUESTIONNAIRE", questionnaire_id: "<id>" }
         (UPPERCASE — strict enum)
   Optional: chain QUESTIONNAIRE after ID_VERIFICATION + LIVENESS in the
   same workflow to collect Source of Funds as part of a full Know Your Customer (KYC).

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.

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

### Path B — Standalone Questionnaire Verification
Run a questionnaire as its own verification — no KYC required.
Use a workflow whose only feature is QUESTIONNAIRE. Everything else is
identical to Path A. Useful for ongoing-due-diligence pulses,
post-onboarding declarations, periodic re-attestations.

## 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. Element catalog (use these in the builder)
Input elements:
  SHORT_TEXT, LONG_TEXT, NUMBER, EMAIL, PHONE, ADDRESS, DATE_PICKER, TIME
Choice elements:
  DROPDOWN, SINGLE_CHOICE, MULTIPLE_CHOICE, COUNTRY, CONSENT
  - DROPDOWN and SINGLE_CHOICE support per-option requires_text_input —
    selecting "Other" can demand a free-text follow-up.
Upload elements:
  IMAGE, FILE_UPLOAD
  - max_files (1-5) per element.
Layout elements:
  PARAGRAPH, SECTION_HEADER, SEPARATOR (read-only, not answerable).

## 6. Reading the report
The session report contains a questionnaire_responses array (one entry
per questionnaire step in the workflow graph). Each entry has:
- node_id: identifies the questionnaire step in the workflow graph
- questionnaire_id: which questionnaire this response is for
- title, description, languages, default_language, is_active
- sections: array of { title, description, items[] }
- each item: { uuid, order, element_type, is_required, title,
              description, placeholder, choices, max_files, answer }
- answer: { value, text, files[] } — only the fields relevant to the
  element_type are present.
- status: "Approved" | "In Review" | "Not Finished"

Status semantics:
- Not Finished — user has not completed the questionnaire yet.
- In Review — submitted, pending manual review. The Console flag
  "force manual review" pins every response to this state until a human
  approves it.
- Approved — reviewed and accepted.

Note: questionnaires do NOT emit risk warnings. Governance is achieved
through required fields, validation, manual review, and the workflow
graph (branching nodes route compliance-sensitive answers to In Review).

## 7. Hard rules — do not change
- Base URL for /v3/* endpoints is verification.didit.me (NOT apx.didit.me).
- Feature enum is UPPERCASE: QUESTIONNAIRE, ID_VERIFICATION, LIVENESS,
  FACE_MATCH, AML, IP_ANALYSIS.
- Element type enums are UPPERCASE + underscored: SHORT_TEXT, LONG_TEXT,
  FILE_UPLOAD, SINGLE_CHOICE, etc.
- 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.
- Status casing matches exactly: "Approved", "In Review", "Not Finished"
  (title-cased, space-separated).

## 8. Pricing reference (public)
- $0.10 per questionnaire submission (Path A or Path B).
- No minimums. No per-language surcharge. No per-element surcharge.
  Conditional branching, file uploads, manual review — all included at
  the same per-submission price.

## 9. Verify your integration
- Sandbox starts on signup at https://business.didit.me — no separate flag.
- Use one of the pre-built templates (Source of Funds, Employment
  Details, Purpose of Account, Beneficial Ownership, Tax Residency, Risk
  Assessment) to ship a draft in under a minute, then customise.
- Switch to live: flip the application's environment toggle in console.

When in doubt: https://docs.didit.me/core-technology/questionnaires/overview
需要更多上下文?请参阅完整的模块文档。docs.didit.me →
合规性设计

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

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

数据证明

数据证明
  • 0
    元素类型, 输入、选择、上传、布局。
  • 0
    包含资金来源等预设模板。
  • $0.00
    每次问卷提交,支持任意模式。
  • 0
    每月免费验证,永久有效。
三个层级,一份价目表

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

每月 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

常见问题

What is Didit?

Didit is infrastructure for identity and fraud, the platform we wished existed when we were building products ourselves: open, flexible, and developer-friendly, so it works as a real part of your stack instead of a black box you integrate around.

One API covers verifying people (KYC, know your customer), verifying businesses (KYB, know your business), screening crypto wallets (KYT, know your transaction), and monitoring transactions in real time, on a stack built to be:

  • Fast, sub-2-second p99 on every session
  • Reliable, in production with 1,500+ companies across 220+ countries
  • Secure, SOC 2 Type 1, ISO 27001, GDPR-native, and formally attested by Spain's financial regulator as safer than verifying someone in person

The footprint underneath: 14,000+ document types in 48+ languages, 1,000+ data sources, and 200+ fraud signals on every session. The Didit infrastructure dynamically learns from every session and gets better every day.

What are Custom Questionnaires?

Custom Questionnaires are schema-driven forms that you collect inside the same verification session as the Identity Document Verification and the selfie, Source of Funds, occupation, expected volume, Politically Exposed Person (PEP) self-declarations, Tax Residency, Beneficial Ownership.

A no-code visual builder lets a compliance lead ship a new questionnaire in under 5 minutes with conditional branching, multi-language translations, file uploads, and forced manual review. Every response lands on the same audit trail as the Know Your Customer (KYC) data.

$0.10 per submission. Full reference: docs.didit.me/core-technology/questionnaires/overview.

What does it cost?

$0.10 per questionnaire submission, on either integration path (in-workflow or standalone).

No minimums, no per-language surcharge, no per-element surcharge, no extra fee for conditional branching, file uploads, or forced manual review, every capability is included at the same per-submission price. Public pricing: didit.me/pricing.

How fast is the verification for my end user?

The full flow normally takes under 30 seconds end-to-end, pick up the ID, snap the document, snap the selfie, done. That is the fastest in the market. Legacy KYC providers usually take more than 90 seconds for the same flow.

On the back end, Didit returns the result in under two seconds at p99, measured from the moment the user finishes the selfie to the moment your webhook fires. Mobile capture is tuned for slow phones and slow networks: progressive image compression, lazy software development kit load, and a one-tap hand-off from desktop to phone via QR code if the user starts on web.

What is the response shape?

The session report carries a questionnaire_responses array, one entry per questionnaire step in the workflow graph. Each entry includes questionnaire_id, title, languages, default_language, is_active, a sections array, and a top-level status of Approved, In Review, or Not Finished.

Every items[] row carries uuid, order, element_type, is_required, title, description, placeholder, choices, max_files, and an answer object with value, text, or files depending on the element type.

Same shape on the session Application Programming Interface (API) and on every webhook delivery.

What happens if a user fails, abandons, or expires?

Every session lands on one of seven clear statuses, so your code always knows what to do:

  • Approved, every check passed. Move the user forward.
  • Declined, one or more checks failed. You can allow the user to resubmit the specific failed step (for example, re-take the selfie) without re-running the whole flow.
  • In Review, flagged for compliance review. Open the case in the console, see every signal, decide approve or decline.
  • In Progress, user is mid-flow.
  • Not Started, link sent, user has not opened it yet. Send a reminder if it sits too long.
  • Abandoned, user opened the link but did not finish in time. Re-engage or expire.
  • Expired, the session link aged out. Create a new session.

A signed webhook fires on every status change, so your database always stays in sync. Abandoned and declined sessions are free.

Where does my customer data live and how is it protected?

Production data is processed and stored in the European Union by default, on Amazon Web Services. Enterprise contracts can request alternative regions for jurisdictions whose regulators require it.

Encryption everywhere. AES-256 at rest across every database, object store, and backup. Transport Layer Security 1.3 in transit on every API call, webhook, and Business Console session. Biometric data is encrypted under a separate Customer Master Key.

Retention is yours to control. Default retention is indefinite (unlimited) unless you configure shorter, between 30 days and 10 years per application, and you can delete any individual session at any time from the dashboard or the API.

Certifications: SOC 2 Type 1 (Type 2 audit in progress), ISO/IEC 27001:2022, iBeta Level 1 PAD, and a public attestation from Spain''s Tesoro / SEPBLAC / CNMV that Didit''s remote identity verification is safer than verifying someone in person. Full report at /security-compliance.

Is Didit compliant for my industry?

Didit ships compliant by default for the regulators that matter to identity infrastructure:

  • GDPR + UK GDPR, controller / processor split, full Data Processing Agreement published, lead supervisory authority named (Spain''s AEPD).
  • AMLD6 + EU AML Single Rulebook, 1,300+ sanctions, politically exposed person, and adverse-media lists screened in real time.
  • eIDAS 2.0, EU Digital Identity Wallet aligned; reusable-identity ready.
  • MiCA (Markets in Crypto-Assets), ready for crypto on-ramps, exchanges, and custodians.
  • DORA, Digital Operational Resilience Act, EU financial-services operational resilience.
  • BIPA, CUBI, Washington HB 1493, CCPA / CPRA, US biometric privacy (Illinois, Texas, Washington) and California consumer privacy.
  • UK Online Safety Act, age-gating and child-safety obligations.
  • FATF Travel Rule, originator and beneficiary data on crypto transfers, IVMS-101 interoperable.

Detailed memo, every certificate, every regulator letter: /security-compliance.

How fast can I integrate and start verifying users?
  • 60 seconds to a sandbox account at business.didit.me, no credit card.
  • 5 minutes to a working verification through Claude Code, Cursor, or any coding agent via our Model Context Protocol (MCP) server.
  • A weekend to a production-ready integration with signed-webhook verification, retries, and a remediation flow when a user is declined.

Three integration paths, pick whichever fits your stack:

  • Embed natively with our Web, iOS, Android, React Native, or Flutter SDK.
  • Redirect the user to the hosted verification page, zero SDK.
  • Send a link by email, SMS, WhatsApp, or any channel, zero front-end work.

Same dashboard, same billing, same pay-per-success price for all three. Step-by-step guide at docs.didit.me/integration/integration-prompt.

身份与欺诈基础设施。

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

让 AI 总结此页面