무료
월 $0. 신용카드 정보가 필요 없습니다.
- 무료 KYC 번들 (신분증 확인 + 패시브 라이브니스 + 얼굴 매칭 + 기기 및 IP 분석), 매월 500건 제공
- 차단된 사용자
- 중복 감지
- 모든 세션에서 200개 이상의 사기 신호 감지
- Didit 네트워크 전반에 걸쳐 재사용 가능한 KYC
- 사례 관리 플랫폼
- 워크플로 빌더
- 공개 문서, 샌드박스, SDK, MCP(Model Context Protocol) 서버
- 커뮤니티 지원


전 세계 2,000개 이상의 기관에서 신뢰합니다.

마켓플레이스의 의무
EU 디지털 서비스법과 새로운 AML 패키지는 판매자 확인을 법적 의무로 규정합니다. Didit은 등록 조회, 소유자 추출, 모든 소유자에 대한 KYC, 문서 OCR 등 모든 과정을 동일한 판매자 기록에 연결하여 하나의 워크플로우로 제공합니다. 판매자당 $2.00, 소유자당 $0.33이며, 매월 500건의 확인은 무료입니다.
ID, 본인 확인, 얼굴 매칭, 제재 목록, 주소, 연령, 전화번호, 이메일, 맞춤 질문 등 필요한 검사를 선택하세요. 대시보드에서 드래그 앤 드롭으로 플로우를 만들거나, 동일한 플로우를 API에 게시할 수 있습니다. 조건에 따라 분기하고 A/B 테스트를 실행할 수 있으며, 코딩은 필요 없습니다.
Web, iOS, Android, React Native, Flutter SDK를 사용하여 네이티브로 임베드하거나, 호스팅된 페이지로 리디렉션할 수 있습니다. 또는 이메일, SMS, WhatsApp 등 어디든 사용자에게 링크를 보내기만 하면 됩니다. 스택에 맞는 방식을 선택하세요.
Didit은 카메라, 조명 안내, 모바일 핸드오프, 접근성을 호스팅합니다. 사용자가 플로우를 진행하는 동안 200개 이상의 사기 신호를 실시간으로 분석하고 모든 필드를 신뢰할 수 있는 데이터 소스와 대조하여 확인합니다. 2초 이내에 결과를 받아보세요.
실시간 서명된 웹훅은 사용자가 승인, 거부 또는 검토 대기 상태가 되는 즉시 데이터베이스를 동기화합니다. 필요할 때 API를 폴링하거나, 콘솔을 열어 모든 세션과 신호를 검사하고 케이스를 직접 관리할 수 있습니다.
Didit · KYB · kyb_registry
Didit · KYB · kyb_key_people
Didit · 연결된 KYC
UBO 2 / 3
소유자 휴대폰에서 호스팅되는 플로우
Didit · KYB · kyb_company_aml
Didit · KYB · kyb_documents
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_kyb_marketplace",
"vendor_data": "seller-42",
"expected_country": "GB"
}'{ "url": "verify.didit.me/..." }$ curl https://verification.didit.me/v3/session/$SESSION/decision/ \
-H "x-api-key: $DIDIT_API_KEY"
# Decision payload (excerpted):
{ "session_kind": "business", "status": "APPROVED",
"decision": { "company": { "legal_name": "Maker Goods Ltd.", "registry_status": "ACTIVE" },
"key_people": [ ... kyc_session_url per owner ... ]
} }상태 APPROVED · IN_REVIEW · DECLINED · AWAITING_USERYou are integrating Didit into a marketplace that lists third-party sellers (Etsy, Shopify, Faire, Amazon Handmade, OnBuy archetype). EU Digital Services Act Article 30 and the new EU Anti-Money Laundering (AML) package require you to verify the seller (KYB) before any listing goes live, and to keep that verification fresh while they sell.
Four obligations on every seller:
1. Pull the company's registry record (legal name, registration number, status, incorporation date) from the authoritative government source.
2. Extract every Ultimate Beneficial Owner (UBO) — anyone owning 25% or more — and run a closed-loop KYC on each one.
3. Screen the company AND every UBO against sanctions, Politically Exposed Persons (PEP), and adverse-media lists.
4. Collect the corporate evidence (certificate of incorporation, tax registration, proof of business address) and watch the seller continuously for status changes, UBO turnover, AML hits, and document expiry.
Pricing (verified live):
- KYB session (registry + company AML + documents + key-people flow): $2.00 per seller, pay-per-call
- Linked KYC per UBO: $0.33 per UBO (ID + Passive Liveness + Face Match + IP + AML)
- Ongoing AML monitoring: $0.07 per user per year
- 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 for KYB from the Workflow Builder. The workflow's type (KYC or KYB) drives the session shape — no explicit business flag is needed on the request.
- A workflow_id for KYC bundled with ID + Passive Liveness + Face Match + IP + AML, used for the linked UBO sessions.
STEP 1 — Create the KYB session
POST https://verification.didit.me/v3/session/
Headers:
x-api-key: <your api key>
Content-Type: application/json
Body:
{
"workflow_id": "<your KYB workflow id>",
"vendor_data": "<your seller id, max 256 chars>",
"callback_url": "https://<your-app>/sellers/kyb/callback",
"expected_country": "GB",
"metadata": {
"seller_id": "<your internal seller id>",
"marketplace_segment": "handmade"
}
}
Response: 201 Created with the hosted session URL. Email it to the seller or embed it in your onboarding UI. Behind the scenes, Didit runs:
- kyb_registry — live registry lookup against the country's authoritative source
- kyb_company_aml — sanctions / PEP / adverse media on the company
- kyb_documents — document collection + Optical Character Recognition (OCR) (incorporation, TIN, proof of address)
- kyb_key_people — UBO + director extraction with linked-KYC sessions
STEP 2 — Read the signed webhook on KYB completion
Didit POSTs to your callback. KYB SESSION statuses are UPPER_SNAKE_CASE:
Body (excerpted):
{
"session_id": "<uuid>",
"session_kind": "business",
"vendor_data": "<your seller id>",
"status": "APPROVED",
"decision": {
"company": {
"legal_name": "Maker Goods Ltd.",
"registration_number": "1029847",
"country_code": "GB",
"registry_status": "ACTIVE"
},
"features": [
{ "node_id": "kyb_registry", "status": "APPROVED" },
{ "node_id": "kyb_company_aml", "status": "APPROVED", "total_hits": 0 },
{ "node_id": "kyb_documents", "status": "APPROVED" },
{ "node_id": "kyb_key_people", "status": "APPROVED",
"key_people": [
{ "uuid": "<uuid>", "name": "Sara Ortega", "role": "director", "is_ubo": true, "ownership_percentage": 60, "kyc_status": "Approved", "kyc_session_url": "https://verify.didit.me/..." },
{ "uuid": "<uuid>", "name": "Niels Janssen", "role": "shareholder", "is_ubo": true, "ownership_percentage": 30, "kyc_status": "Approved", "kyc_session_url": "https://verify.didit.me/..." }
]
}
]
}
}
SESSION status enum (KYB · UPPER_SNAKE_CASE):
NOT_STARTED | IN_PROGRESS | AWAITING_USER | APPROVED | DECLINED | IN_REVIEW | RESUBMITTED | ABANDONED | EXPIRED
FEATURE status enum (inside decision.features[].status · UPPER_SNAKE_CASE):
NOT_FINISHED | APPROVED | DECLINED | IN_REVIEW | RESUB_REQUESTED | AWAITING_USER
Note: kyc_status on key_people IS Title Case ("Approved" / "Declined" / "Pending") — those are KYC sessions linked from inside the KYB feature, not KYB features themselves.
Verify the X-Signature-V2 header BEFORE reading the body — HMAC SHA-256 of the raw bytes with your webhook secret.
STEP 3 — Linked KYC on each UBO is automatic
When the seller completes the hosted KYB flow and submits the UBO list, Didit spawns a child KYC session per UBO using the KYC workflow you configured on the KYB workflow. Each child session has its own session_id and its own hosted URL on the kyc_session_url field inside the key-people block.
You don't need to call POST /v3/session/ again for the UBOs — they're stitched to the parent KYB session automatically. You DO need to drive each UBO through their hosted KYC URL (email it, SMS it, embed it in your seller dashboard).
Per-UBO KYC session status is Title Case With Spaces (KYC convention):
Approved | Declined | In Review | Resubmitted | Expired | Not Finished | Kyc Expired | Abandoned
Linked-KYC pricing: $0.33 per UBO.
STEP 4 — Retrieve the decision
GET https://verification.didit.me/v3/session/{sessionId}/decision/
Headers:
x-api-key: <your api key>
Returns the full KYB decision payload — company block, AML hits, document OCR, every UBO with their kyc_status and kyc_session_url. Use this for audit-pack export and for re-rendering the seller status in your admin UI.
STEP 5 — Decide
Branch logic:
APPROVED → activate the seller, allow listings.
IN_REVIEW → keep listings off, wait for analyst webhook update.
DECLINED → refuse onboarding, log the decision_reason_code.
AWAITING_USER → nudge the seller to complete the pending step (typically UBO list submission).
Pre-DSA Article 30: store the trader information (legal name, registration number, address, contact) in your trader-information record alongside the decision payload.
STEP 6 — Ongoing monitoring is automatic when enabled
Enable Ongoing AML on the seller and on each UBO ($0.07/user/year). The session status updates automatically as new sanctions hits land, dissolutions are filed in the registry, or document expirations approach. Your webhook fires on every state change.
No separate endpoint to call — the same workflow drives it.
WEBHOOK EVENT NAMES
- status.updated — session status changed (filter on data.session_kind === "business" for KYB).
- data.updated — session data changed (registry refresh, key-people submission, document upload, ongoing AML hit).
- business.status.updated — the linked Business entity changed.
- business.data.updated — Business entity data changed.
Verify X-Signature-V2 on every payload. The webhook secret is per-environment — sandbox key is separate from production.
CONSTRAINTS
- KYB session statuses use UPPER_SNAKE_CASE (APPROVED, IN_REVIEW, DECLINED). KYC session statuses use Title Case (Approved, In Review, Declined). They live in different APIs — don't mix them in the same code path.
- Default record retention is 5 years post-relationship per the EU AML package; some jurisdictions go higher.
- You cannot replace the registry lookup with a self-attested form — DSA Article 30 requires the data to come from an authoritative source.
Read the docs:
- https://docs.didit.me/business-verification/integration-guide
- https://docs.didit.me/business-verification/statuses
- https://docs.didit.me/business-verification/webhooks
- https://docs.didit.me/sessions-api/create-session
- https://docs.didit.me/sessions-api/retrieve-session
- https://docs.didit.me/integration/webhooks
Start free at https://business.didit.me — sandbox key in 60 seconds, 500 KYC verifications free every month, no credit card.월 $0. 신용카드 정보가 필요 없습니다.
사용한 만큼만 지불하세요. 25개 이상의 모듈. 모듈별 공개 가격, 월 최소 요금 없음.
맞춤형 MSA 및 SLA. 대규모 볼륨 및 규제 프로그램에 적합합니다.
무료로 시작 → 확인 실행 시에만 지불 → 맞춤형 계약, SLA 또는 데이터 상주를 위해 엔터프라이즈 잠금 해제.
Didit은 신원 및 사기 방지 인프라입니다. 저희가 직접 제품을 만들 때 있었으면 했던 플랫폼이죠. 개방적이고 유연하며 개발자 친화적이어서, 단순히 통합해야 하는 블랙박스가 아니라 스택의 실제 구성 요소처럼 작동합니다.
하나의 API로 개인 확인(KYC, 고객 알기), 기업 확인(KYB, 사업체 알기), 암호화폐 지갑 심사(KYT, 거래 알기), 그리고 실시간 거래 모니터링을 처리하며, 다음과 같은 스택을 기반으로 구축되었습니다:
기반 기술로는 48개 이상의 언어로 14,000개 이상의 문서 유형, 1,000개 이상의 데이터 소스, 그리고 모든 세션에서 200개 이상의 사기 신호를 처리합니다. Didit 인프라는 모든 세션에서 동적으로 학습하며 매일 발전합니다.
KYB(Know Your Business)는 기업이 실제 존재하고, 여전히 사업을 운영하며, 누가 실제로 소유하고 통제하는지 확인하는 과정입니다. 마켓플레이스의 경우 세 가지 요소로 구성됩니다:
이는 KYC(Know Your Customer)의 기업 버전입니다. 제3자 판매자를 등록하는 마켓플레이스에서는 판매자 등록이 게시되기 전에 KYB를 수행해야 합니다. Didit은 이 전체 과정을 판매자당 $2.00 + 소유주당 $0.33의 단일 워크플로우로 제공합니다.
제3자가 소비자에게 상품이나 서비스를 제공하고 대금을 받는 모든 마켓플레이스가 해당됩니다. 다음을 포함합니다:
유럽 연합에서는 디지털 서비스법(EU의 온라인 플랫폼 규정집)에 따라 판매자 확인이 필수 요건이며, 미준수 시 상당한 벌금이 부과됩니다. 영국, 미국, 그리고 대부분의 라틴 아메리카 국가들도 자체 소비자 보호 및 자금 세탁 방지 규정에 따라 유사한 의무를 가집니다.
전체 과정은 일반적으로 처음부터 끝까지 30초 미만이 소요됩니다., 신분증을 들고, 문서를 촬영하고, 셀카를 찍으면 완료됩니다. 이는 시장에서 가장 빠른 속도입니다. 기존 KYC 제공업체는 동일한 절차에 90초 이상이 걸리는 경우가 많습니다.
백엔드에서는 사용자가 셀카 촬영을 마친 순간부터 웹훅이 실행되는 순간까지 p99 기준 2초 미만으로 Didit이 결과를 반환합니다. 모바일 캡처는 느린 휴대폰과 느린 네트워크에 최적화되어 있습니다: 점진적 이미지 압축, 지연 로딩되는 SDK, 그리고 사용자가 웹에서 시작할 경우 QR 코드를 통해 데스크톱에서 휴대폰으로 한 번의 탭으로 전환할 수 있습니다.
마켓플레이스에 가장 자주 영향을 미치는 순서대로 세 가지 문제가 발생합니다:
이에 대한 역사적 기록은 가혹합니다. 거의 모든 주요 마켓플레이스가 미확인 판매자의 운영을 허용한 이유로 벌금을 부과받았습니다. KYB는 표준적인 통제 수단입니다.
모든 세션은 7가지 명확한 상태 중 하나로 귀결되므로, 귀하의 코드는 항상 무엇을 해야 할지 알 수 있습니다:
Approved, 모든 확인 통과. 사용자를 다음 단계로 진행합니다.Declined, 하나 이상의 확인 실패. 전체 흐름을 다시 실행하지 않고 특정 실패 단계(예: 셀카 다시 찍기)를 재제출하도록 허용할 수 있습니다.In Review, 규정 준수 검토를 위해 플래그 지정됨. 콘솔에서 케이스를 열어 모든 신호를 확인하고 승인 또는 거부를 결정합니다.In Progress, 사용자가 흐름 중간에 있습니다.Not Started, 링크가 전송되었지만 사용자가 아직 열지 않았습니다. 너무 오래 방치되면 알림을 보냅니다.Abandoned, 사용자가 링크를 열었지만 제시간에 완료하지 못했습니다. 다시 참여를 유도하거나 만료시킵니다.Expired, 세션 링크가 만료되었습니다. 새 세션을 생성합니다.모든 상태 변경 시 서명된 웹훅이 실행되므로, 귀하의 데이터베이스는 항상 동기화 상태를 유지합니다. 중단되거나 거부된 세션은 무료입니다.
프로덕션 데이터는 기본적으로 Amazon Web Services를 통해 유럽 연합에서 처리 및 저장됩니다. 엔터프라이즈 계약의 경우 규제 당국이 요구하는 관할권에 대해 대체 지역을 요청할 수 있습니다.
모든 곳에서 암호화됩니다. 모든 데이터베이스, 객체 저장소 및 백업에 AES-256 암호화가 적용됩니다. 모든 API 호출, 웹훅 및 비즈니스 콘솔 세션에서 전송 중인 데이터에는 Transport Layer Security 1.3이 적용됩니다. 생체 인식 데이터는 별도의 고객 마스터 키로 암호화됩니다.
데이터 보존은 귀하가 제어합니다. 기본 보존 기간은 무기한(무제한)이며, 더 짧은 기간(애플리케이션당 30일에서 10년 사이)으로 구성하지 않는 한 유지됩니다. 대시보드 또는 API를 통해 언제든지 개별 세션을 삭제할 수 있습니다.
인증: SOC 2 Type 1 (Type 2 감사 진행 중), ISO/IEC 27001:2022, iBeta Level 1 PAD, 그리고 스페인 재무부 / SEPBLAC / CNMV의 공식 인증을 통해 Didit의 원격 신원 확인이 대면 확인보다 안전함이 입증되었습니다. 전체 보고서는 /security-compliance에서 확인할 수 있습니다.
Didit은 신원 인프라에 중요한 규제 기관에 대해 기본적으로 규정을 준수합니다:
자세한 메모, 모든 인증서, 모든 규제 기관 서신은 /security-compliance에서 확인할 수 있습니다.
세 가지 통합 경로 중 스택에 맞는 것을 선택하세요:
동일한 대시보드, 동일한 청구, 세 가지 모두에 대해 동일한 성공 기반 요금제가 적용됩니다. 단계별 가이드는 docs.didit.me/integration/integration-prompt에서 확인할 수 있습니다.
세션 종류별로 두 가지 열거형 세트가 있습니다:
대소문자 구분은 의도적입니다. KYB 세션에는 UPPER_SNAKE, KYC 세션에는 Title Case를 사용합니다. 이들은 서로 다른 API에 있으므로 동일한 코드 브랜치에서 혼합하지 마십시오.
웹훅 핸들러의 경우, 상위 KYB 상태를 기준으로 전환합니다. AWAITING_USER는 가장 일반적인 중간 상태이며, 일반적으로 판매자가 소유주 목록을 제출하거나 문서를 다시 업로드해야 함을 의미합니다. 판매자가 이를 수행하면 상태는 자동으로 IN_REVIEW 또는 APPROVED로 전환됩니다.
가입 시 확인은 필수적이지만 충분하지 않습니다. 판매자는 시간이 지남에 따라 변하고, 소유주는 바뀌며, 제재 목록은 매일 업데이트됩니다. Didit의 지속적인 모니터링은 이 모든 것을 포착합니다:
모든 것은 온보딩을 위해 이미 연결한 동일한 status.updated 웹훅을 통해 처리됩니다. 새로운 엔드포인트나 추가 통합이 필요 없습니다.
대부분의 KYB 제공업체는 건당 $8에서 $50 사이의 가격을 책정하며, 종종 월 수천 달러의 최소 약정 금액과 국가별 추가 요금이 붙습니다. Middesk / Persona KYB / Onfido Business 유형이 그렇습니다.
Didit의 공개 가격은 KYB 세션당 $2.00 + 연결된 KYC당 $0.33입니다. 최소 약정, 국가별 추가 요금, 숨겨진 등록 수수료가 없습니다. 실행된 만큼만 지불합니다.
이는 동일한 규제 결과에 대해 기존 스택보다 3~5배 저렴합니다. 판매자 확인은 목록당 비용이므로 경제성이 중요합니다. 대규모로 보면 $2와 $25의 차이는 판매자를 수락할지 거부할지의 차이가 됩니다. 전체 가격은 /pricing에서 확인할 수 있습니다.