Saltar al contingut principal
POST
curl

Carteres autoallotjades

Quan la cartera de la contrapart s’ha declarat autoallotjada (counterparty.payment_method.method_type: "unhosted_wallet"), la transferència queda en espera en l’estat UNCONFIRMED_OWNERSHIP. Si crides aquest endpoint amb confirmed: true, registres que el teu client ha verificat qui controla aquesta cartera i completes la transferència (COMPLETED), tant per a les retirades sortints com per als dipòsits entrants. Un dipòsit entrant amb un hash on-chain ja conegut passa a FINISHED. La cartera verificada és la de la contrapart: el destí d’una retirada sortint, o l’origen (la cartera de l’ordenant) d’un dipòsit entrant. Didit l’afegeix a la llibreta d’adreces com a cartera amb la titularitat verificada, a nom de la contrapart, i es compara amb el nom de la contrapart (l’ordenant, en cas d’un dipòsit). Si la llibreta d’adreces ja conté aquesta cartera amb un nom de titular diferent, la transferència passa a COUNTERPARTY_MISMATCHED_DATA. Si la transferència no indica cap cartera de la contrapart, passa wallet_address al cos de la sol·licitud. Quan ni la transferència ni la sol·licitud aporten una adreça, la sol·licitud es rebutja amb 400. confirmed: false rebutja la transferència (COUNTERPARTY_VASP_GENERAL_DECLINE).

Autoritzacions

x-api-key
string
header
requerit

La clau d'API de la teva aplicació, des de Developers -> API keys a la Business Console. La clau primària té accés complet. Una clau amb nom pot tenir l'abast limitat: cap, lectura o escriptura per recurs, limitada a determinats fluxos de treball o a sessions aprovades, a una llista d'adreces IP i a una data de caducitat. 401 significa que la clau és incorrecta, revocada o caducada; 403 significa que no s'ha enviat cap clau, que la clau no té accés a aquest recurs o acció, o que la sol·licitud prové d'una adreça fora de la seva llista d'IP; 404 en una ruta de sessió significa que la sessió està fora dels fluxos de treball o estats de la clau. Una clau sense accés a fitxers multimèdia rep els URL d'imatge, vídeo i PDF com a null, i una clau sense permís d'escriptura de sessions rep els enllaços de sessió i els tokens com a null. Consulta https://docs.didit.me/console/api-keys.

Paràmetres de ruta

transaction_id
string<uuid>
requerit

UUID estable de Didit de la transacció que la teva aplicació manté per a aquesta transferència: la transacció del costat del beneficiari en una transferència per rail INTERNAL, o la transacció que has creat (sortint o entrant) quan la cartera de la contrapart es va declarar autoallotjada.

Cos

application/json
confirmed
boolean
requerit

true per confirmar la titularitat, false per denegar-la.

wallet_address
string
predeterminat:""

Transferències TRP entrants: l'adreça de pagament que Didit retorna al VASP ordenant quan aproves. Per defecte és l'adreça de l'entrada coincident de la llibreta d'adreces, i després beneficiary_data.wallet_address. En una transferència declarada amb cartera autoallotjada que no especifica cap cartera de la contrapart, la cartera de la qual has verificat la titularitat; sense aquesta, la sol·licitud es rebutja amb un 400. S'ignora per a altres transferències.

Resposta

La transferència actualitzada. Per a una transferència entrant, les dades originator_data/beneficiary_data de la contrapart es mantenen emmascarades (data_masked: true) fins que es confirma la titularitat; després, data_unmasked registra quan, per què i per qui.

Objecte de transferència complet retornat pels endpoints de confirmació de titularitat i de finalització/cancel·lació. Mentre la titularitat de la cartera d'una transferència entrant no estigui confirmada, els camps originator_data i beneficiary_data de la contrapart es retornen emmascarats (es manté la primera lletra de cada paraula; la cartera, la cadena i l'encaminament del VASP continuen sent llegibles) i data_masked és true.

uuid
string<uuid>
status
enum<string>
Opcions disponibles:
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>
Opcions disponibles:
INBOUND,
OUTBOUND
rail
enum<string> | null

El rail pel qual s'ha encaminat la transferència, o null quan no se n'ha seleccionat cap (per exemple, per sota del llindar, una cartera autoallotjada de la contrapart, un registre posterior al dipòsit o cap contrapart accessible). INTERNAL significa que ambdues parts són aplicacions de Didit; EMAIL significa que s'ha contactat amb la contrapart mitjançant un enllaç de recollida enviat per correu electrònic. TEST_VASP significa que el Didit Test VASP ha respost a la transferència de sandbox. A través de GTR, VERIFYVASP i SYGNA, Didit llegeix la resposta de la contrapart a partir de la resposta de la xarxa o fent-ne un sondeig cada 5 minuts. TRUST només envia, de manera que una transferència TRUST roman en AWAITING_COUNTERPARTY fins que caduca. Un rail de xarxa només s'utilitza quan has connectat la teva pròpia afiliació a aquesta xarxa. Es tria després que la creació de la transacció retorni, de manera que és null en aquesta resposta.

Opcions disponibles:
INTERNAL,
TRP,
GTR,
TRUST,
VERIFYVASP,
SYGNA,
EMAIL,
TEST_VASP,
null
protocol
string | null
ivms_version
string
Exemple:

"ivms101.2023"

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

Part ordenant. Per a una transferència entrant, els valors de la contrapart s'emmascaren fins que se'n confirmi la titularitat.

beneficiary_data
object

Part beneficiària. Per a una transferència entrant, els valors de la contrapart s'emmascaren fins que es confirmi la titularitat.

name_match
object · null · null

La comparació de noms que ha decidit la transferència, o null fins que se n'hagi executat una. Mentre les parts estan emmascarades, i a la còpia de l'altre client d'un intercanvi INTERNAL, transfer_name, compared_name, matched_names i mismatched_names s'oculten. score i matched poden discrepar: matched segueix l'estrictesa, score és la similitud dels dos noms complets.

data_match
object | null

Comparació camp per camp de les dades de les parts de la transferència amb el que l'altra part sap sobre el titular de la cartera. Nomena camps i resultats, mai valors, de manera que continua sent llegible mentre les dades de la contrapart estan emmascarades. Null fins que s'executi una comparació.

mismatched_fields
string[]

Drecera per a data_match.mismatched_fields. Buit quan no hi ha cap diferència.

data_unmasked
object | null

Registre d'auditoria del moment en què es van desenmascarar les dades de la contrapart. És null mentre les dades continuïn emmascarades, així com per a transferències sortints.

data_masked
boolean

Cert mentre les dades personals de la contrapart estiguin emmascarades en aquesta resposta.

created_at
string<date-time>
delivery
object | null

Estat en què es troba l'últim missatge que aquesta transferència deu a l'altra part. És nul quan la transferència mai no n'ha degut cap (per exemple, per sota de threshold_amount, una cartera autoallotjada declarada o un registre de sunrise).

discovery
object[]

Com Didit ha cercat la contrapart, una entrada per cada pas que s'ha executat. Buit quan no s'ha executat cap descobriment, per exemple en una transferència entrant.

reason
string

Per què una transferència COUNTERPARTY_VASP_NOT_FOUND o COUNTERPARTY_VASP_NOT_REACHABLE està encallada; "" per a qualsevol altre estat. Un lliurament fallit ho determina primer, només a COUNTERPARTY_VASP_NOT_REACHABLE: email_undeliverable (el proveïdor de correu ha refusat el correu electrònic de compliment i no queda cap adreça per provar: quan s'ha enviat, en un recordatori o com un rebot permanent notificat més tard) o delivery_failed (el canal que l'estava lliurant ha fallat definitivament: un canal de xarxa ha refusat el missatge o s'ha quedat sense reintents, un host d'identitat TRP no ha respost o l'host TRP de la contrapart no ha acceptat la consulta). En cas contrari, el rastreig de discovery ho determina: awaiting_end_user (cap pas ha indicat una contrapart a la qual Didit pugui arribar), directory_match_no_route (un pas ha indicat un VASP del directori que no té ruta), picked_member_without_proven_wallet (l'usuari final ha triat un client de Didit que no ha demostrat el control de la cartera) o no_directory_match quan el rastreig no dóna cap altre motiu. Un reenviament fa avançar la transferència, de manera que el motiu s'esborra. Consulta Per què una transferència està encallada.

next_actions
object[]

Què fa avançar la transferència; [] per a qualsevol estat excepte COUNTERPARTY_VASP_NOT_FOUND o COUNTERPARTY_VASP_NOT_REACHABLE. email_undeliverable ofereix update_compliance_email i després resend. delivery_failed ofereix resend. Un motiu de descobriment ofereix select_counterparty_vasp, declare_self_hosted, add_vasp_hint i resend.

chain_details
object

Com anomena la cadena de la transferència les seves dues carteres, quan es tracta de més d'una adreça pagant-ne una altra. Buit ({}) per a una transferència de cadena basada en comptes (EVM, Solana, Tron), on les dues adreces són les carteres. La coincidència, l'encaminament i la llibreta d'adreces llegeixen primer les carteres d'aquí.

Darrera modificació el 7 de novembre del 2026