Saltar para o conteúdo principal
POST
curl

Carteiras autocustodiadas

Quando a carteira da contraparte foi declarada como autocustodiada (counterparty.payment_method.method_type: "unhosted_wallet"), a transferência fica em UNCONFIRMED_OWNERSHIP. Ao chamar este endpoint com confirmed: true, fica registado que o seu cliente verificou quem controla essa carteira e a transferência é concluída (COMPLETED), tanto nos levantamentos de saída como nos depósitos de entrada. Um depósito de entrada cujo hash on-chain já é conhecido passa para FINISHED. A carteira verificada é a da contraparte: o destino de um levantamento de saída ou a origem (a carteira do ordenante) de um depósito de entrada. A Didit adiciona-a ao livro de endereços de carteiras como tendo a propriedade verificada, em nome da contraparte, e compara-a com o nome da contraparte (o ordenante, no caso de um depósito). Se o livro de endereços já tiver essa carteira associada a um nome de titular diferente, a transferência passa para COUNTERPARTY_MISMATCHED_DATA. Se a transferência não indicar nenhuma carteira da contraparte, envie wallet_address no corpo do pedido. Quando nem a transferência nem o pedido indicam um endereço, o pedido é rejeitado com 400. confirmed: false recusa a transferência (COUNTERPARTY_VASP_GENERAL_DECLINE).

Autorizações

x-api-key
string
header
obrigatório

A chave de API da sua aplicação, a partir de Programadores -> Chaves de API na Business Console. A chave principal tem acesso total. Uma chave nomeada pode ter o âmbito definido: nenhum, leitura ou escrita por recurso, limitada a alguns fluxos ou a sessões aprovadas, a uma lista de endereços IP e a uma data de validade. 401 significa que a chave está incorreta, revogada ou expirada; 403 significa que nenhuma chave foi enviada, que a chave não tem acesso a este recurso ou ação, ou que o pedido veio de um endereço fora da sua lista de IP; 404 numa rota de sessão significa que a sessão está fora dos fluxos ou estados da chave. Uma chave sem acesso a multimédia recebe URLs de imagens, vídeos e PDFs como nulos, e uma chave sem permissão de escrita em sessões recebe ligações de sessão e tokens como nulos. Consulte https://docs.didit.me/console/api-keys.

Parâmetros de caminho

transaction_id
string<uuid>
obrigatório

UUID estável da Didit da transação que a sua aplicação detém para esta transferência: a transação do lado do beneficiário numa transferência por via INTERNAL, ou a transação que criou (de saída ou de entrada) quando a carteira da contraparte foi declarada como autocustodiada.

Corpo

application/json
confirmed
boolean
obrigatório

true para confirmar a propriedade, false para a negar.

wallet_address
string
padrão:""

Transferências TRP de entrada: o endereço de pagamento que a Didit devolve ao VASP de origem quando aprova. O valor predefinido é o endereço da entrada correspondente no livro de endereços, seguido de beneficiary_data.wallet_address. Numa transferência declarada de carteira autocustodiada que não indique uma carteira da contraparte, a carteira cuja propriedade verificou; sem ela, o pedido é rejeitado com 400. Ignorado para outras transferências.

Resposta

A transferência atualizada. Para uma transferência recebida, os dados originator_data/beneficiary_data da contraparte permanecem mascarados (data_masked: true) até que a propriedade seja confirmada; em seguida, data_unmasked regista quando, porquê e por quem.

Objeto completo de transferência devolvido pelos endpoints de confirmação de propriedade e de finalização/cancelamento. Enquanto a propriedade da carteira de uma transferência recebida não estiver confirmada, os campos originator_data e beneficiary_data da contraparte são devolvidos mascarados (a primeira letra de cada palavra é mantida; a carteira, a blockchain e o encaminhamento do VASP permanecem legíveis) e data_masked é true.

uuid
string<uuid>
status
enum<string>
Opções disponíveis:
AWAITING_COUNTERPARTY,
ON_HOLD,
COMPLETED,
FINISHED,
CANCELLED,
EXPIRED,
COUNTERPARTY_MISMATCHED_DATA,
COUNTERPARTY_VASP_NOT_FOUND,
COUNTERPARTY_VASP_NOT_REACHABLE,
UNCONFIRMED_OWNERSHIP,
COUNTERPARTY_VASP_GENERAL_DECLINE,
NOT_ENOUGH_COUNTERPARTY_DATA,
NOT_APPLICABLE
direction
enum<string>
Opções disponíveis:
INBOUND,
OUTBOUND
rail
enum<string> | null

O canal através do qual a transferência foi encaminhada, ou null quando nenhum canal foi selecionado (por exemplo, abaixo do limiar, uma carteira de contraparte autocustodiada, um registo pós-depósito, ou nenhuma contraparte alcançável). INTERNAL significa que ambos os lados são aplicações da Didit; EMAIL significa que a contraparte foi alcançada através de uma ligação de recolha enviada por e-mail. TEST_VASP significa que o Didit Test VASP respondeu à transferência em sandbox. Através de GTR, VERIFYVASP e SYGNA, a Didit lê a resposta da contraparte a partir da resposta da rede ou consultando-a a cada 5 minutos. TRUST apenas envia, pelo que uma transferência TRUST permanece AWAITING_COUNTERPARTY até expirar. Um canal de rede só é utilizado quando tiver associado a sua própria adesão a essa rede. É escolhido após o retorno da criação da transação, pelo que é null nessa resposta.

Opções disponíveis:
INTERNAL,
TRP,
GTR,
TRUST,
VERIFYVASP,
SYGNA,
EMAIL,
TEST_VASP,
null
protocol
string | null
ivms_version
string
Exemplo:

"ivms101.2023"

required
boolean
ownership_confirmed
boolean | null
deadline_at
string<date-time> | null
timeline
object[]
counterparty_vasp
object | null
originator_data
object

Parte ordenante. Para uma transferência de entrada, os valores da contraparte são ocultados até que a propriedade seja confirmada.

beneficiary_data
object

Parte beneficiária. Para uma transferência de entrada, os valores da contraparte são ocultados até que a propriedade seja confirmada.

name_match
object · null · null

A comparação de nomes que decidiu a transferência, ou nulo até que uma seja executada. Enquanto as partes estiverem mascaradas, e na cópia do outro cliente de uma troca INTERNAL, transfer_name, compared_name, matched_names e mismatched_names são ocultados. score e matched podem divergir: matched segue o rigor, score é a semelhança dos dois nomes completos.

data_match
object | null

Comparação campo a campo dos dados das partes da transferência com o que a outra parte sabe sobre o titular da carteira. Indica campos e resultados, nunca valores, para que permaneça legível enquanto os dados da contraparte estiverem mascarados. Null até que uma comparação tenha sido executada.

mismatched_fields
string[]

Atalho para data_match.mismatched_fields. Vazio quando nada difere.

data_unmasked
object | null

Registo de auditoria do momento em que os dados da contraparte foram desmascarados. Nulo enquanto os dados ainda estiverem mascarados e para transferências de saída.

data_masked
boolean

Verdadeiro enquanto os dados pessoais da contraparte estiverem mascarados nesta resposta.

created_at
string<date-time>
delivery
object | null

O estado em que se encontra a mensagem mais recente que esta transferência deve à outra parte. Nulo quando a transferência nunca deveu nenhuma (por exemplo, abaixo de threshold_amount, uma carteira autocustodiada declarada ou um registo sunrise).

discovery
object[]

Como a Didit procurou a contraparte, uma entrada por passo executado. Vazio quando não foi executada qualquer deteção, por exemplo, numa transferência recebida.

reason
string

O motivo pelo qual uma transferência COUNTERPARTY_VASP_NOT_FOUND ou COUNTERPARTY_VASP_NOT_REACHABLE está bloqueada; "" para qualquer outro estado. Uma falha na entrega determina-o primeiro, apenas em COUNTERPARTY_VASP_NOT_REACHABLE: email_undeliverable (o fornecedor de e-mail recusou o e-mail de conformidade e não resta nenhum endereço para tentar: quando foi enviado, num lembrete ou como uma devolução permanente comunicada posteriormente) ou delivery_failed (o canal que estava a efetuar a entrega falhou definitivamente: um canal de rede recusou a mensagem ou esgotou as tentativas, um host de identidade TRP não respondeu, ou o host TRP da contraparte não aceitou a consulta). Caso contrário, o rastreio de discovery determina-o: awaiting_end_user (nenhum passo identificou uma contraparte que a Didit consiga contactar), directory_match_no_route (um passo identificou um VASP de diretório que não tem rota), picked_member_without_proven_wallet (o utilizador final escolheu um cliente Didit que não comprovou o controlo da carteira), ou no_directory_match quando o rastreio não fornece outro motivo. Um novo envio faz avançar a transferência, pelo que o motivo é limpo. Consulte Por que motivo uma transferência está bloqueada.

next_actions
object[]

O que faz a transferência avançar; [] para qualquer estado exceto COUNTERPARTY_VASP_NOT_FOUND ou COUNTERPARTY_VASP_NOT_REACHABLE. email_undeliverable disponibiliza update_compliance_email e, em seguida, resend. delivery_failed disponibiliza resend. Um motivo de descoberta disponibiliza select_counterparty_vasp, declare_self_hosted, add_vasp_hint e resend.

chain_details
object

Como a blockchain da transferência designa as suas duas carteiras, quando se trata de mais do que um endereço a pagar a outro. Vazio ({}) para uma transferência numa blockchain baseada em contas (EVM, Solana, Tron), onde os dois endereços são as carteiras. A correspondência, o encaminhamento e o livro de endereços leem primeiro as carteiras a partir daqui.

Última modificação em 7 de novembro de 2026