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


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

1,300개 이상의 Watchlist
단 한 번의 호출로 글로벌 제재, PEP, 친인척 및 밀접 관계자, 부정적인 미디어, 경고 목록을 모두 확인할 수 있습니다. 전체 KYC 내에 포함시키거나, 모든 사용자를 연간 $0.07로 매일 업데이트할 수 있습니다.
ID, 생체 인식, 얼굴 매칭, 제재, 주소, 연령, 전화번호, 이메일, 맞춤 질문 등 필요한 검사를 선택하세요. 대시보드에서 플로우에 드래그하거나, 동일한 플로우를 API에 게시할 수 있습니다. 조건에 따라 분기하고 A/B 테스트를 실행할 수 있으며, 코드가 필요 없습니다.
저희의 Web, iOS, Android, React Native, Flutter SDK를 사용하여 네이티브로 임베드하세요. 호스팅된 페이지로 리디렉션하거나, 이메일, SMS, WhatsApp 등 어디든 사용자에게 링크를 보내세요. 귀사의 스택에 맞는 방식을 선택하세요.
Didit은 카메라, 조명 안내, 모바일 핸드오프, 접근성을 호스팅합니다. 사용자가 플로우를 진행하는 동안 200개 이상의 사기 신호를 실시간으로 평가하고 모든 필드를 신뢰할 수 있는 데이터 소스와 대조하여 확인합니다. 2초 이내에 결과를 제공합니다.
실시간 서명된 웹훅은 사용자가 승인, 거부 또는 검토 대상으로 전송되는 즉시 데이터베이스를 동기화합니다. 필요에 따라 API를 폴링하거나, 콘솔을 열어 모든 세션, 모든 신호를 검사하고 케이스를 직접 관리할 수 있습니다.
지속적인 업데이트
글로벌 목록
카테고리
관할권
새로고침
단일 엔드포인트 · POST /v3/aml/
레벨 1–4 · RCA
매치 점수 · 위험 점수
매일 재심사 · 사용자당 연간 $0.07
FATF · AMLD6 · OFAC · MiCA
$ 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_aml",
"vendor_data": "user-42"
}'{ "session_url": "verify.didit.me/..." }$ curl -X POST https://verification.didit.me/v3/aml/ \
-H "x-api-key: $DIDIT_API_KEY" \
-d '{
"entity_type": "person",
"full_name": "Carmen Espanola"
}'{ "status": "승인됨", "total_hits": 0 }# Didit AML Screening — integrate in 5 minutes
You are integrating Didit's Anti-Money Laundering (AML) Screening module into
<my_stack>. Follow these steps exactly. Every URL, header, and enum value
below is canonical — do not paraphrase or "improve" them.
AML Screening covers four lookup categories on every call:
- Sanctions (OFAC, EU, UN, HMT, and 1,300+ more global lists)
- Politically Exposed Persons (PEPs) — Levels 1 through 4 + RCAs
- Adverse Media — financial-crime news, court records, regulatory press
- Warnings and Regulatory Enforcement, Insolvency, SIP / SIE lists
The same module screens BOTH persons and companies — set the
"entity_type" parameter to "person" or "company".
## 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. Two integration paths — pick one
### Path A — Workflow Builder (hosted UI / linked KYC)
Best when you want AML screened automatically as part of a verification
session. Run it alongside ID Verification, or chain it after a Know Your
Customer (KYC) check, or fire it on its own.
1. Create a workflow that contains the AML 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": "AML" } (UPPERCASE — strict enum)
Optional per-workflow configuration:
- match_score_threshold (default 93)
- approve_risk_threshold (default 80)
- review_risk_threshold (default 100)
- include_adverse_media (default true; adds ~10s to the call)
- include_ongoing_monitoring (default false; +$0.07/user/year if on)
- sanctions_categories (subset of dataset enums)
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),
expected_details { first_name, last_name, date_of_birth,
nationality, document_number }.
Response: session_url — redirect the user to it. If your workflow has
only the AML feature and you already collected the identity fields,
the session resolves server-side with no UI step.
3. Listen for webhook callbacks (see "Webhooks" below).
### Path B — Standalone server-to-server API
Best when you already have the screened entity's name + identifiers and
do not want a hosted session. Synchronous response, no webhook needed.
POST https://verification.didit.me/v3/aml/
Content-Type: application/json
Headers:
x-api-key: <your-api-key>
Body (person):
{
"entity_type": "person",
"full_name": "Carmen Espanola",
"date_of_birth": "1980-01-01",
"nationality": "ESP",
"document_number": "CAA000000",
"include_adverse_media": true,
"include_ongoing_monitoring": false
}
Body (company):
{
"entity_type": "company",
"full_name": "Acme Holdings Ltd",
"registration_number": "12345678",
"incorporation_country": "GBR",
"include_adverse_media": true
}
Response: JSON report with status, hits, scores, and a warnings array.
## 3. Webhooks (Path A and Path B ongoing monitoring)
- 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", "aml.new_hit"]
- 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.
## 4. Reading the report (both paths return the same shape)
The aml object includes:
- status: "Approved" | "Rejected" | "In Review" | "Not Started"
- total_hits: integer
- score: number 0-100 (overall AML risk score; highest non-False-Positive
match risk score wins)
- screened_data: the inputs used for the lookup
- hits: array of matched entities. Each hit includes:
- id, url, caption (matched display name)
- datasets: which categories matched (PEP, PEP Level 1..4, Sanctions,
Adverse Media, Warnings and Regulatory Enforcement, Fitness and
Probity, SIP, SIE, Insolvency)
- match_score (0-100, identity confidence — is it the same person)
- risk_view.categories.score (0-100, entity risk if it IS a match)
- sanction_matches, pep_matches, warning_matches,
adverse_media_matches (typed arrays with list names, source URLs,
legal basis, sanction program, sanctioning authority, publication
dates, sentiment scores, etc.)
- warnings: Array<{ risk, log_type, short_description, long_description }>
Two-score system (the part most agents get wrong):
1. Match Score answers "is this the same person we are screening".
Below the match_score_threshold (default 93) the hit is a
False Positive and excluded from the final status. At or above the
threshold it is Unreviewed (a possible match).
2. Risk Score answers "how risky is this entity if it IS a match".
The session's final status comes from the highest risk score among
non-False-Positive hits:
- risk score below approve_risk_threshold (80) => Approved
- between approve and review => In Review
- above review_risk_threshold (100) => Declined
Warning codes you should branch on:
- POSSIBLE_MATCH_FOUND (informational — at least one hit above the
match threshold; review or auto-approve
per your risk policy)
- COULD_NOT_PERFORM_AML_SCREENING (KYC fields incomplete; session is held
in In Review and re-triggered automatically
once full_name, date_of_birth, issuing
state and document_number are populated)
## 5. Hard rules — do not change
- Base URL for /v3/* endpoints is verification.didit.me (NOT apx.didit.me).
- Feature enum is UPPERCASE: AML, ID_VERIFICATION, LIVENESS, FACE_MATCH,
IP_ANALYSIS. The AML feature flag is AML, not AML_SCREENING.
- 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", "Rejected", "In Review",
"Not Started" (title-cased, space-separated).
- entity_type is lowercase: "person" or "company".
## 6. Ongoing monitoring
- Toggle include_ongoing_monitoring=true on the workflow or the standalone
request to enroll the screened entity in continuous AML monitoring.
- Didit rescreens every enrolled entity DAILY against the full 1,300+
watchlist database (sanctions, PEPs, adverse media, warnings).
- A status change (new hit above review or decline threshold) fires the
aml.new_hit webhook, flips the session status to In Review or Declined,
and surfaces the hit in the Business Console with full audit trail.
- Billing: $0.07 per enrolled entity per year. Toggle off at any time
from the Business Console — billing prorates to the day.
## 7. Pricing reference (public)
- AML Screening (one-time, per person OR per company): $0.20 per check
- Ongoing AML Monitoring: $0.07 per enrolled entity per year
- Bundled inside a full KYC workflow (ID + Liveness + Face Match + IP):
$0.33 per session — AML is an add-on at the same $0.20 standalone price
- 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 names: deterministic synthetic entities returned in sandbox
(Approved by default; canonical "PEP test name" returns an In Review
with a Wikidata PEP hit so you can exercise the review queue).
- Switch to live: flip the application environment toggle in the console.
When in doubt: https://docs.didit.me/core-technology/aml-screening/overview
월 $0. 신용카드 정보가 필요 없습니다.
사용한 만큼만 지불하세요. 25개 이상의 모듈. 모듈별 공개 가격, 월 최소 요금 없음.
맞춤형 MSA 및 SLA. 대규모 볼륨 및 규제 프로그램에 적합합니다.
무료로 시작 → 확인 실행 시에만 지불 → 맞춤형 계약, SLA 또는 데이터 상주를 위해 엔터프라이즈 잠금 해제.
Didit은 신원 및 사기 방지 인프라입니다. 저희가 직접 제품을 만들 때 있었으면 했던 플랫폼으로, 개방적이고 유연하며 개발자 친화적이어서 블랙박스처럼 통합하는 대신 스택의 실제 부분으로 작동합니다.
하나의 API로 개인 확인(KYC, 고객 알기), 기업 확인(KYB, 사업체 알기), 암호화폐 지갑 스크리닝(KYT, 거래 알기), 실시간 거래 모니터링을 지원하며, 다음을 위해 구축된 스택에서 작동합니다.
기반 기술: 48개 이상의 언어로 14,000개 이상의 문서 유형, 1,000개 이상의 데이터 소스, 모든 세션에서 200개 이상의 사기 신호를 처리합니다. Didit 인프라는 모든 세션에서 동적으로 학습하며 매일 발전합니다.
OFAC), 유럽 연합, 유엔, 영국 HM Treasury 및 모든 G20 국가 목록의 제재 목록을 포함합니다. PEP Level 1(국가 원수, 대법원 판사, 중앙은행 총재), PEP Level 2(국회의원, 대사, 군 지도자), PEP Level 3(중간급 공무원, 지방 정부), PEP Level 4(친척 및 밀접 관련자 / RCAs)의 네 가지 수준에 걸쳐 정치적 주요 인물을 스크리닝합니다. 또한 부정적인 미디어, Warnings and Regulatory Enforcement, Fitness and Probity, Insolvency, SIP(특수 관심 인물), SIE(특수 관심 법인) 및 사용자 지정 목록도 포함합니다. 전체 카탈로그는 지속적으로 업데이트됩니다. 자세한 내용은 docs.didit.me/core-technology/aml-screening/watchlist-database-aml-screening을 참조하세요.aml JSON 객체입니다. 최상위 status는 Approved, Rejected, In Review, Not Started 중 하나입니다. 이 객체에는 total_hits, 전체 score(0-100, 오탐이 아닌 가장 높은 위험 점수), 사용된 입력을 반영하는 screened_data 블록, 구조화된 risk 코드가 포함된 warnings 배열, 그리고 hits 배열이 포함됩니다. 각 히트에는 id, url, caption, datasets(일치하는 카테고리), match_score(신원 신뢰도 0-100), risk_view.categories.score(엔티티 위험도 0-100) 및 유형별 하위 배열(예: sanction_matches, pep_matches, warning_matches, adverse_media_matches)이 포함되며, 여기에는 목록 이름, 소스 URL, 법적 근거, 제재 기관, 발행일 및 감성 점수가 포함됩니다. 전체 참조는 docs.didit.me/core-technology/aml-screening/report-aml-screening에서 확인할 수 있습니다.전체 과정은 일반적으로 처음부터 끝까지 30초 미만이 소요됩니다., 신분증을 들고, 문서를 촬영하고, 셀카를 찍으면 완료됩니다. 이는 시장에서 가장 빠른 속도입니다. 기존 KYC 제공업체는 동일한 과정에 90초 이상이 소요되는 경우가 많습니다.
백엔드에서 Didit은 사용자가 셀카를 완료한 시점부터 웹훅이 실행되는 시점까지 p99 기준 2초 미만으로 결과를 반환합니다. 모바일 캡처는 느린 휴대폰과 느린 네트워크에 최적화되어 있습니다. 점진적 이미지 압축, 지연된 SDK 로드, 그리고 사용자가 웹에서 시작하는 경우 QR 코드를 통한 데스크톱에서 휴대폰으로의 원탭 핸드오프 기능을 제공합니다.
match_score(0-100, 기본 임계값 93)는 해당 히트가 실제로 동일한 사람인지 여부를 결정합니다. 이름 유사도 60%, 생년월일 25%, 국가 15%의 가중치를 적용하며, Golden Key 문서 번호 오버라이드를 통해 점수를 100으로 고정할 수 있습니다. risk_score(0-100, 기본 승인 80 / 검토 100)는 일치하는 경우 해당 엔티티의 위험도를 결정합니다. 카테고리 50%, 국가 30%, 범죄 기록 20%의 가중치를 적용합니다. 매치 임계값 미만의 히트는 False Positive로 분류되어 최종 상태 계산에서 제외됩니다. 최종 세션 상태는 남아있는 오탐이 아닌 히트 중 가장 높은 위험 점수를 사용합니다.모든 세션은 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, 그리고 스페인 Tesoro / SEPBLAC / CNMV로부터 Didit의 원격 신원 확인이 대면 확인보다 안전하다는 공개 인증을 받았습니다. 전체 보고서는 /security-compliance에서 확인할 수 있습니다.
Didit은 신원 인프라에 중요한 규제 기관에 대해 기본적으로 규정을 준수합니다.
자세한 메모, 모든 인증서, 모든 규제 기관 서신: /security-compliance.
세 가지 통합 경로, 스택에 가장 적합한 것을 선택하세요.
동일한 대시보드, 동일한 청구, 세 가지 모두에 대해 성공당 동일한 가격. 단계별 가이드는 docs.didit.me/integration/integration-prompt에서 확인할 수 있습니다.