A Didit troca dados da Regra de Viagem e verifica a carteira da contraparte na mesma chamada de transação /v3/. Payloads IVMS-101, $0.17 por transferência gerida, 500 verificações gratuitas todos os meses.
Confiado por mais de 2.000 organizações em todo o mundo.
Transferência de saídaPOST /v3/transactions/$0.17
O seu VASPoriginator
Off-chain · dados Travel RuleOn-chain · valor
Pacote IVMS-101
sem VASP4score de risco€2,400
Krakencounterparty
LibertarTravel RuleRastreio de carteiraLibertada · transferência enviada
O que a Regra de Viagem exige
Envie a identidade. Analise a carteira. A mesma chamada.
Cada VASP regulada deve ambas as partes em cada transferência, o pacote IVMS-101
para a VASP da contraparte, a verificação de risco on-chain para si mesma. A Didit envia-os
como uma única chamada da API de Transações: $0.17 gerida, $0.04 com Bring Your Own
Key no fornecedor da carteira. 500 verificações gratuitas todos os meses.
Como funciona
Do registo ao utilizador verificado em quatro passos.
Passo 01 / 04
01
Crie o fluxo de trabalho
Escolha as verificações que pretende, ID, prova de vida, correspondência facial, sanções, morada, idade, telefone, e-mail, perguntas personalizadas. Arraste-as para um fluxo no dashboard, ou publique o mesmo fluxo na nossa API. Crie ramificações com base em condições, execute testes A/B, sem necessidade de código.
Integre
Integre nativamente com o nosso SDK Web, iOS, Android, React Native ou Flutter. Redirecione para uma página alojada. Ou simplesmente envie um link ao seu utilizador, por e-mail, SMS, WhatsApp, em qualquer lugar. Escolha o que melhor se adapta à sua stack.
O utilizador passa pelo fluxo
A Didit gere a câmara, as indicações de iluminação, a transição móvel e a acessibilidade. Enquanto o utilizador está no fluxo, pontuamos mais de 200 sinais de fraude em tempo real e verificamos cada campo contra fontes de dados autorizadas. Resultado em menos de dois segundos.
Recebe os resultados
Webhooks assinados em tempo real mantêm a sua base de dados sincronizada no momento em que um utilizador é aprovado, recusado ou enviado para revisão. Consulte a API sob demanda. Ou abra a consola para inspecionar cada sessão, cada sinal e gerir os casos à sua maneira.
Criado para a Regra de Viagem · Preço de infraestrutura
Uma chamada. Pacote IVMS-101 + verificação de carteira. $0.17.
Uma transferência de cripto regulada não é uma única verificação, é uma receita. Ative cada módulo por fluxo de trabalho, troque o seu próprio fornecedor de verificação de carteira via Bring Your Own Key para reduzir para $0.04 por transferência.
Campos do originador e beneficiário preenchidos a partir do KYC verificado. Formatado automaticamente para o InterVASP Messaging Standard 101, o esquema que todos os principais protocolos de Travel Rule utilizam.
TFR da UE (sem mínimo), FinCEN dos EUA ($3.000), FCA do Reino Unido (£1.000), MAS (SGD 1.500), FINMA (CHF 1.000), VARA (AED 3.500). Um fluxo de trabalho por jurisdição; alterne via metadados da sessão.
TRP, Sumsub Travel Rule, Notabene, Veriscope, OpenVASP, Shyft, todos acessíveis através do mesmo payload IVMS-101. Escolha uma rede ou aceite todas; um contrato, uma fatura.
NotabeneEUA · Europacontraparte resolvida antes do envio
Sumsub TRCEI · globalalcançável na mesma chamada
VeriscopeShyft · Ásiauma integração, não seis
OpenVASPnorma abertaesquema e rotas abertos
Shyft NetworkÁsia · LatAmescolha uma rede ou aceite todas
Payload IVMS-101 · um contrato6/6
04 · Fluxo de carteira self-hosted
Destino self-hosted? Continua coberto.
Sem VASP contraparte para troca, a Didit recolhe a identidade do beneficiário do utilizador, executa desafios de prova de controlo acima dos limites de due diligence aprimorada da UE, verifica a carteira de destino, armazena o registo em formato IVMS.
Endereço de destinobc1qa3f7x9m2t8vq…hk22desafio de assinatura · nonce 8f31c2…a17dAssinatura verificada
Identidade do beneficiário captadado utilizador
Prova de controlosigned
Carteira destino rastreadaclean
Registo IVMS-101 guardadoFormato IVMS
Registado · controlo provadoguardado na UE
05 · Análise de carteira em conjunto com a regra
Travel Rule + análise de carteira. Mesma chamada.
$0.02 de base de monitorização de transações + $0.15 de análise de carteira gerida = $0.17 por transferência. Com a sua própria chave no fornecedor da carteira, a análise de carteira desce para $0.02, $0.04 no total.
Um pacote por transferência. Direto para a auditoria.
Payload IVMS-101, veredito de análise de carteira, atribuição de VASP contraparte, timestamps HMAC assinados. Armazenado na UE. Retido por 5 anos por defeito; extensível conforme orientação do supervisor.
201Criado{ estado APROVADO · EM_REVISÃO · RECUSADO · AGUARDANDO_UTILIZADOR }
Integração pronta para agente
Implemente um fluxo de Travel Rule com um único prompt.
Cole no Claude Code, Cursor, Codex, Devin, Aider ou Replit Agent. Preencha a sua stack. O agente constrói o fluxo de trabalho, preenche os campos IVMS da sessão KYC, executa a verificação da carteira e configura o webhook.
didit-integration-prompt.md
You are integrating Didit into a Virtual Asset Service Provider (VASP) / Crypto-Asset Service Provider (CASP) to satisfy the Travel Rule on every crypto transfer. Two obligations:
1. Verify the user (KYC) — identity, liveness, face match, device + IP, AML. The originator data on every outbound transfer comes from this verified profile.
2. Submit each transfer with originator + beneficiary fields (IVMS-101) AND screen the counterparty wallet — one /v3/transactions/ call.
Bundle pricing (verified live 2026-05-16):
- User Verification (KYC) bundle: $0.33 per user (Sessions API)
- Transactions API call: $0.02 base + $0.15 managed wallet screen = $0.17 per managed transfer
- Or bring your own wallet-screening provider and run it inside Didit — same contract, same price
- First 500 verifications free every month, forever
PRE-REQUISITES
- Production API key from https://business.didit.me (sandbox key in 60 seconds, no credit card).
- Webhook endpoint with HMAC SHA-256 verification of the X-Signature-V2 header.
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. - A workflow_id from the no-code Workflow Builder with ID Verification + Passive Liveness + Face Match 1:1 + Device & IP Analysis + AML Screening.
- Transaction Monitoring + Wallet Screening enabled in the Business Console (Transactions > Settings).
STEP 1 — Verify the user with the Sessions API (one-time onboarding)
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 user id>",
"callback": "https://<your-app>/casp/onboard/callback",
"metadata": {
"purpose": "casp_onboarding"
}
}
Response: 201 Created with the hosted session URL. Sub-2-second median verdict on completion.
STEP 2 — Read the signed webhook on KYC completion
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.
Capture the user's full name, date of birth, address, and any registered identity-document number from the decision payload. These fields populate the IVMS-101 originator block on every subsequent transfer.
STEP 3 — Submit every transfer with IVMS-101 + wallet screen in one call
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 transfer reference>",
"transaction_category": "finance",
"include_crypto_screening": true,
"transaction_details": {
"direction": "OUTBOUND",
"amount": "0.45",
"currency": "ETH",
"currency_kind": "crypto",
"action_type": "transfer"
},
"subject": {
"entity_type": "individual",
"vendor_data": "<your user id>",
"full_name": "<originator name from KYC>",
"address": "<originator address from KYC>",
"dob": "<originator dob from KYC, YYYY-MM-DD>"
},
"counterparty": {
"entity_type": "individual",
"full_name": "<beneficiary name>",
"address": "<beneficiary address if known>",
"payment_method": {
"method_type": "crypto_wallet",
"account_id": "<counterparty 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
- counterparty.payment_method.account_id (the wallet address)
Didit packages the subject + counterparty fields into an IVMS-101 payload, hands them off to the connected Travel Rule protocol (TRP / Sumsub TR / Notabene / Veriscope), runs Wallet Screening on the counterparty address server-side, and returns one verdict.
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,
"travel_rule": { "status": "EXCHANGED", "protocol": "<network>", "ivms_packet_id": "<id>" },
"props": {
"wallet_risk_score": 0,
"sanctions_hit": false,
"aml_provider": "<provider slug>",
"aml_screening_type": "WALLET_SCREENING",
"aml_screening_status": "COMPLETED"
},
"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.
Wallet-screen severity (UPPER): LOW | MEDIUM | HIGH | CRITICAL | UNKNOWN.
Branch logic:
APPROVED → release the crypto.
IN_REVIEW → hold the transfer, route to analyst queue.
DECLINED → refuse the transfer, log the IVMS attempt for the audit.
AWAITING_USER → redirect the user to the remediation URL on the response.
STEP 4 — Inbound transfers: ingest the counterparty's IVMS packet
When you RECEIVE a transfer from another VASP:
- The connected Travel Rule protocol delivers the originator IVMS data to you BEFORE the on-chain transfer settles.
- Submit it via the same POST /v3/transactions/ with direction: "INBOUND" and the originator fields on subject and your own beneficiary on counterparty.
- Wallet Screening runs on the originator wallet (subject.payment_method.account_id).
- Verdict drives whether to credit the user.
STEP 5 — Self-hosted (unhosted) wallet transfers
For transfers TO a self-hosted wallet (no counterparty VASP to exchange with):
- Collect the beneficiary identity from the user via a custom questionnaire ($0.10).
- Above local enhanced-due-diligence thresholds, prompt the user to sign a short message with the beneficiary wallet's private key as proof of control.
- Submit the transaction with the captured beneficiary fields + wallet address.
- Didit still runs Wallet Screening on the destination and stores the IVMS-format record for the audit.
STEP 6 — Continuous AML on the user is automatic
Every approved user is re-screened daily against 1,300+ sanctions, PEP, and adverse-media lists. There is NO separate endpoint to call. When a previously-clean user crosses an AML threshold, the session status updates and a signed webhook fires.
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 Title Case With Spaces; transaction statuses UPPER_SNAKE_CASE. Don't mix.
- EU Transfer of Funds Regulation has NO de minimis threshold for crypto — every transfer carries originator + beneficiary data.
- US Travel Rule kicks in at $3,000; UK at £1,000; Singapore at SGD 1,500; Switzerland at CHF 1,000. Apply per-workflow.
- Default record retention is 5 years post-transfer per most AML regimes; extensible per supervisor guidance.
- Wallet Screening MUST run BEFORE the crypto leaves — a post-transfer screen is useful for audit but useless for blocking.
Read the docs:
- https://docs.didit.me/transaction-monitoring/overview
- https://docs.didit.me/transaction-monitoring/transactions
- https://docs.didit.me/transaction-monitoring/aml-screening
- https://docs.didit.me/sessions-api/create-session
- 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.
Conformidade desde a conceção
Abra um novo país com um clique. Nós fazemos o trabalho difícil.
Abrimos as subsidiárias locais, garantimos as licenças, realizamos os testes de penetração, obtemos as certificações e alinhamos com cada nova regulamentação. Para lançar verificações num novo país, basta ativar um botão. Mais de 220 países ativos, auditados e testados trimestralmente, o único fornecedor de identidade que um governo de um estado-membro da UE formalmente considerou mais seguro do que a verificação presencial.
Por transferência gerida, base de Monitorização de Transações + Verificação de Carteira.
0+
Sanções, Pessoas Politicamente Expostas (PEP) e listas de media adversa verificadas para cada utilizador.
0+
Protocolos Travel Rule interoperáveis no mesmo payload IVMS-101, TRP, Sumsub TR, Notabene, Veriscope, OpenVASP, Shyft.
0
Verificações gratuitas todos os meses, em todas as contas.
Três níveis, uma tabela de preços
Comece grátis. Pague à medida que usa. Escale para Enterprise.
500 verificações gratuitas todos os meses, para sempre. Depois, pague apenas quando um módulo for executado. Contratos personalizados, residência de dados e acordos de nível de serviço (SLAs) no plano Enterprise.
Grátis
$0/ mês · sem cartão
Para construir, testar e para os seus primeiros utilizadores.
Tudo o que precisa para começar:
500 verificações KYC completas por mês
ID, prova de vida, correspondência facial, dispositivo e IP
Mais de 200 sinais de fraude, blocklist, duplicados
KYC reutilizável em toda a rede Didit
Construtor de fluxos de trabalho, gestão de casos, SDKs
Apoio de IAAgente de IA na consola, documentação e comunidade.