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


전 세계 2,000개 이상의 기관에서 신뢰합니다.
온램프가 갖춰야 할 것
모든 규제 온램프는 구매 시 구매자 KYC와 목적지 지갑 KYT, 이 두 가지를 모두 처리해야 합니다. Didit은 이를 하나의 워크플로우로 제공합니다. KYC $0.33 + 거래 $0.17 (관리형 지갑 심사 포함) = 구매당 $0.50입니다. 지갑 제공업체에 BYOK를 사용하면 $0.37로 줄어듭니다. 매월 500건 무료 인증을 제공합니다.
신분증, 생체 인식, 얼굴 매칭, 제재 목록, 주소, 연령, 전화번호, 이메일, 맞춤 질문 등 필요한 검사를 선택하세요. 대시보드에서 드래그 앤 드롭으로 플로우를 만들거나, 동일한 플로우를 API에 게시할 수 있습니다. 조건에 따라 분기하고 A/B 테스트를 실행할 수 있으며, 코드가 필요 없습니다.
Web, iOS, Android, React Native, Flutter SDK를 사용하여 네이티브로 임베드하거나, 호스팅된 페이지로 리디렉션할 수 있습니다. 또는 이메일, SMS, WhatsApp 등 어디든 사용자에게 링크를 보내기만 하면 됩니다. 스택에 맞는 방식을 선택하세요.
Didit은 카메라, 조명 안내, 모바일 핸드오프, 접근성을 호스팅합니다. 사용자가 플로우를 진행하는 동안 200개 이상의 사기 신호를 실시간으로 분석하고, 모든 필드를 신뢰할 수 있는 데이터 소스와 대조하여 확인합니다. 2초 이내에 결과를 제공합니다.
실시간 서명된 웹훅은 사용자가 승인, 거부 또는 검토로 전송되는 즉시 데이터베이스를 동기화합니다. 필요에 따라 API를 폴링하거나, 콘솔을 열어 모든 세션, 모든 신호를 검사하고 케이스를 관리할 수 있습니다.
$ 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_onramp_kyc",
"vendor_data": "buyer-42",
"metadata": { "destination_wallet": "0x2dc1...81f9" }
}'{ "session_url": "verify.didit.me/..." }$ curl -X POST https://verification.didit.me/v3/transactions/ \
-H "x-api-key: $DIDIT_API_KEY" \
-d '{
"transaction_id": "buy-42",
"transaction_details": { "direction": "OUTBOUND", "currency_kind": "crypto" },
"subject": { "vendor_data": "buyer-42", "full_name": "Jamie Example" },
"counterparty": { "full_name": "Destination wallet", "payment_method": { "account_id": "0x2dc1...81f9" }}
}'{ 상태: 승인됨 · 검토 중 · 거부됨 · 사용자 대기 중 }You are integrating Didit into a fiat-to-crypto on-ramp. Two obligations on every buy:
1. Verify the buyer (KYC) — identity, liveness, face match, device + IP, AML against 1,300+ sanctions / PEP / adverse-media lists. ONE call to the Sessions API.
2. Screen the destination wallet (KYT) — risk-score the address against sanctioned wallets, mixers, high-risk counterparties BEFORE the crypto leaves. ONE call to the Transactions API with currency_kind: "crypto".
Bundle pricing (verified live against POST /v3/transactions/, 2026-05-16):
- KYC bundle: $0.33 per buyer (Sessions API)
- Transactions API call: $0.02 base (transaction-monitoring) + $0.15 wallet screening (Didit's default managed provider) = $0.17 per buy
- Total managed: $0.33 + $0.17 = $0.50 per fully-screened buy
- Total with BYOK on the wallet provider: $0.33 + $0.04 = $0.37 per buy
- 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 that bundles ID Verification + Passive Liveness + Face Match 1:1 + Device & IP Analysis + AML Screening.
- Transaction Monitoring enabled in the Business Console (Transactions > Settings) with crypto screening turned on.
STEP 1 — Verify the buyer with the Sessions API
POST https://verification.didit.me/v3/session/
Headers:
x-api-key: <your api key>
Content-Type: application/json
Body:
{
"workflow_id": "<wf id with KYC + AML modules>",
"vendor_data": "<your buyer id, max 256 chars>",
"callback": "https://<your-app>/onramp/kyc/callback",
"metadata": {
"purpose": "crypto_onramp_buy",
"buy_id": "<your internal tx reference>"
}
}
Response: 201 Created with the hosted session URL. Redirect the buyer to it. Sub-2-second median verdict on completion.
STEP 2 — Read the signed webhook on KYC completion
Didit POSTs to your callback. Session statuses are Title Case With Spaces:
Body (excerpted):
{
"session_id": "<uuid>",
"vendor_data": "<your buyer id>",
"status": "Approved",
"id_verification": { "status": "Approved" },
"liveness": { "status": "Approved" },
"face": { "status": "Approved", "similarity_score": 0.94 },
"ip_analysis": { "status": "Approved" },
"aml": { "status": "Approved", "hits": [] }
}
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 3 — Screen the destination wallet BEFORE crediting the buy
POST https://verification.didit.me/v3/transactions/
Headers:
x-api-key: <your api key>
Content-Type: application/json
Body (required fields verified live 2026-05-16):
{
"transaction_id": "<your internal buy reference>",
"transaction_category": "finance",
"include_crypto_screening": true,
"transaction_details": {
"direction": "OUTBOUND",
"amount": "0.25",
"currency": "ETH",
"currency_kind": "crypto",
"action_type": "withdrawal"
},
"subject": {
"entity_type": "individual",
"vendor_data": "<your buyer id>",
"full_name": "<buyer full name>"
},
"counterparty": {
"entity_type": "unhosted_wallet",
"full_name": "<destination wallet label>",
"payment_method": {
"method_type": "crypto_wallet",
"account_id": "<destination wallet address>"
}
}
}
REQUIRED fields the API rejects if missing:
- subject.vendor_data + subject.full_name
- counterparty.full_name
- transaction_details.direction + currency + currency_kind + amount
- For crypto: a wallet address on counterparty.payment_method.account_id (OUTBOUND) or subject.payment_method.account_id (INBOUND post-transfer)
Wallet screening runs server-side when currency_kind = "crypto" and there is a wallet address in the right participant. No separate endpoint.
Response shape (excerpted from a real successful 201):
{
"uuid": "<server transaction uuid>",
"txn_id": "<your transaction_id echoed back>",
"status": "APPROVED",
"score": 0,
"severity": null, // null when score is 0; LOW | MEDIUM | HIGH | CRITICAL | UNKNOWN otherwise
"props": {
"wallet_risk_score": 0,
"sanctions_hit": false,
"pep_counterparty": false,
"aml_provider": "<provider slug>", // identifies the screening provider used on this call
"aml_screening_type": "WALLET_SCREENING",
"aml_screening_status": "COMPLETED"
},
"provider_results": [{ "provider": "<provider slug>", "result_type": "WALLET_SCREENING", "status": "SCREENED", ... }],
"cost_breakdown": {
"total_price": 0.17,
"items": [
{ "usage_type": "transaction_aml_monitoring", "price": 0.15 },
{ "usage_type": "transaction_monitoring", "price": 0.02 }
]
}
}
Transaction status enum (exact case, UPPER_SNAKE_CASE): APPROVED | IN_REVIEW | DECLINED | AWAITING_USER.
When a transaction enters AWAITING_USER, Didit creates a linked remediation session automatically and returns a verification URL on the response.
Real per-transaction cost (verified live):
- Plain fiat transaction monitoring: $0.02
- Crypto transaction with managed wallet screening: $0.17 ($0.02 TM base + $0.15 wallet screen on Didit's managed flow)
- Crypto transaction with BYOK wallet screening: $0.04 ($0.02 TM base + $0.02 wallet screen)
Branch logic:
APPROVED → send the crypto.
IN_REVIEW → hold the buy, route to analyst queue.
DECLINED → refund the fiat, block the address.
AWAITING_USER → redirect the buyer to the remediation session URL.
STEP 4 — Ongoing AML monitoring is automatic
Any session with AML enabled is rescreened DAILY by Didit's continuous monitoring at $0.07 per user per year. There is NO separate endpoint to call — the same workflow does it.
When a previously-approved buyer crosses an AML threshold, the session status changes to "In Review" or "Declined" automatically and your webhook fires the update.
STEP 5 — Off-ramp uses the same two endpoints
Selling crypto for fiat:
- KYC the seller via POST /v3/session/ (same as Step 1).
- Screen the source wallet via POST /v3/transactions/ with direction: "INBOUND" and the source wallet address on subject.payment_method.account_id.
WEBHOOK EVENT NAMES
- Sessions: status changes flow through the standard session webhook.
- Transactions: transaction.created · transaction.updated · transaction.status.changed · transaction.alert.generated.
Verify X-Signature-V2 on every payload.
CONSTRAINTS
- Session statuses use Title Case With Spaces (Approved, In Review). Transaction statuses use UPPER_SNAKE_CASE (APPROVED, IN_REVIEW). They live in different APIs — don't mix them in the same code path.
- Wallet Screening MUST run BEFORE the crypto leaves — a post-transfer screen is useful for audit but useless for blocking.
- Default record retention is 5 years post-relationship per the EU AML package; extend per your supervisor's guidance.
- 200+ fraud signals are evaluated on every KYC session at no extra cost — surface the score via the session decision payload, don't re-query.
Read the docs:
- https://docs.didit.me/sessions-api/create-session
- https://docs.didit.me/transaction-monitoring/overview
- https://docs.didit.me/transaction-monitoring/aml-screening
- 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은 신원 및 사기 방지 인프라입니다. 저희가 직접 제품을 만들 때 있었으면 했던 플랫폼이죠. 개방적이고 유연하며 개발자 친화적이어서, 단순히 통합하는 블랙박스가 아니라 스택의 실제 구성 요소처럼 작동합니다.
하나의 API로 개인 확인(KYC, 고객 알기), 기업 확인(KYB, 기업 알기), 암호화폐 지갑 심사(KYT, 거래 알기), 그리고 실시간 거래 모니터링을 모두 처리합니다. 이 모든 것은 다음을 위해 구축된 스택에서 이루어집니다:
기반 기술은 다음과 같습니다: 48개 이상의 언어로 14,000개 이상의 문서 유형, 1,000개 이상의 데이터 소스, 그리고 모든 세션에서 200개 이상의 사기 신호를 처리합니다. Didit 인프라는 모든 세션에서 동적으로 학습하며 매일 발전합니다.
온램프는 사용자가 카드나 은행 송금으로 결제하고 지갑으로 암호화폐를 받을 수 있게 해주는 서비스입니다. MoonPay, Ramp, Transak과 같은 서비스, 그리고 AhoraCrypto, GBTC Finance와 같은 Didit 고객사를 생각해보세요.
모든 구매에서 두 가지 문제가 발생할 수 있으므로 두 가지 확인이 필요합니다:
깨끗한 구매자도 나쁜 지갑으로 자금을 보낼 수 있고, 깨끗한 지갑도 나쁜 구매자로부터 자금을 받을 수 있습니다. 모든 구매에 대해 두 가지 확인이 필요합니다. Didit은 이를 하나의 워크플로우로 제공하며, 구매당 $0.50 (KYC $0.33 + 관리형 지갑 심사를 포함한 거래 $0.17) 또는 자체 지갑 심사 키를 사용하는 경우 $0.37입니다.
KYC는 개인에 대한 정보입니다. 이름, 신분증, 얼굴, 제재 목록, 로그인 위치 등을 확인합니다. 가입 시 한 번 실행하고 나중에 필요할 때 갱신합니다.
KYT는 지갑에 대한 정보입니다. 온체인 그래프에서 지갑의 위치, 거래 내역, 플래그 지정 여부 등을 확인합니다. 모든 거래 시 실행합니다.
규제 대상 온램프는 이 두 가지를 모두 처리해야 합니다. Didit은 구매자에 대한 KYC와 목적지 지갑에 대한 KYT를 동일한 워크플로우에서 실행하여 추가적인 복잡성 없이 처리합니다.
전체 프로세스는 일반적으로 30초 이내에 완료됩니다. 신분증을 들고, 서류를 촬영하고, 셀카를 찍으면 끝입니다. 이는 시장에서 가장 빠른 속도입니다. 기존 KYC 제공업체는 동일한 프로세스에 90초 이상이 소요되는 경우가 많습니다.
백엔드에서 Didit은 사용자가 셀카 촬영을 마친 시점부터 웹훅이 실행되는 시점까지 측정했을 때, p99 기준으로 2초 이내에 결과를 반환합니다. 모바일 캡처는 느린 휴대폰과 느린 네트워크 환경에 최적화되어 있습니다. 점진적 이미지 압축, 지연된 SDK 로드, 사용자가 웹에서 시작할 경우 QR 코드를 통한 데스크톱-휴대폰 간 원탭 핸드오프 기능을 제공합니다.
동일한 두 가지 검사를 역방향으로 수행합니다:
하나의 워크플로우로 구매와 판매를 모두 처리합니다. 하나의 계약, 하나의 인보이스, 양방향에 대한 하나의 감사 추적을 제공합니다.
모든 세션은 7가지 명확한 상태 중 하나로 분류되므로, 코드는 항상 무엇을 해야 할지 알 수 있습니다:
Approved, 모든 검사를 통과했습니다. 사용자를 다음 단계로 진행하세요.Declined, 하나 이상의 검사에 실패했습니다. 전체 플로우를 다시 실행하지 않고 특정 실패 단계(예: 셀카 재촬영)를 재제출하도록 허용할 수 있습니다.In Review, 규정 준수 검토를 위해 플래그가 지정되었습니다. 콘솔에서 케이스를 열고 모든 신호를 확인한 후 승인 또는 거부를 결정하세요.In Progress, 사용자가 플로우를 진행 중입니다.Not Started, 링크가 전송되었지만, 사용자가 아직 열지 않았습니다. 너무 오래 방치될 경우 알림을 보내세요.Abandoned, 사용자가 링크를 열었지만, 시간 내에 완료하지 못했습니다. 다시 참여를 유도하거나 만료시키세요.Expired, 세션 링크가 만료되었습니다. 새 세션을 생성하세요.모든 상태 변경 시 서명된 웹훅이 실행되므로, 데이터베이스는 항상 동기화 상태를 유지합니다. 중단되거나 거부된 세션은 무료입니다.
프로덕션 데이터는 기본적으로 Amazon Web Services의 유럽 연합 내에서 처리 및 저장됩니다. 엔터프라이즈 계약의 경우, 규제 기관의 요구 사항에 따라 다른 지역을 요청할 수 있습니다.
모든 곳에 암호화가 적용됩니다. 모든 데이터베이스, 객체 스토어, 백업에 AES-256 암호화가 적용됩니다. 모든 API 호출, 웹훅, Business Console 세션에는 전송 계층 보안 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에서 확인하세요.
네, 그렇습니다. EU Travel Rule(자금 이체 규정)에 따르면 CASP는 모든 암호화폐 이체 시 발신자 및 수신자 데이터를 교환해야 하며, EU 내 암호화폐에 대한 최소 임계값은 없습니다.
Didit은 다음을 통해 이를 처리합니다:
하나의 워크플로우로 두 가지를 모두 처리합니다. 사용자 KYC와 이체에 대한 Travel Rule 데이터를 제공합니다.
Didit은 승인된 모든 구매자를 가입 시 사용된 1,300개 이상의 목록과 매일 재확인합니다. 이는 자동적으로 이루어지며, 별도의 엔드포인트 호출이나 추가 설정이 필요 없으며, 대부분의 플랜에서는 추가 비용이 발생하지 않습니다(대량 계정의 경우 사용자당 연간 $0.07).
이전에 깨끗했던 구매자가 AML 임계값을 초과하면:
In Review 또는 Declined로 변경됩니다.백만 명의 구매자 기반의 경우, 사용자당 연간 몇 달러에 불과하며, 수동 검토 대기열보다 훨씬 저렴합니다.
샌드박스는 5분, 프로덕션은 주말이면 충분합니다.
POST /v3/session/ 호출을, 구매 단계에 POST /v3/transactions/ 호출을 추가하세요.AI 에이전트(Claude Code, Cursor, Codex, Devin, Aider, Replit Agent)를 통해 구축하고 싶다면, 위 섹션의 통합 프롬프트를 붙여넣으면 에이전트가 플로우를 구성합니다. 웹, iOS, Android, React Native, Flutter용 네이티브 SDK는 모두 동일한 세션 모델을 공유합니다.