Saltar al contenido principal
PATCH
curl

Autorizaciones

x-api-key
string
header
requerido

La clave de API de tu aplicación, que encontrarás en Developers -> API keys en la Business Console. La clave principal tiene acceso completo. Una clave con nombre puede tener un alcance limitado: ninguno, lectura o escritura por recurso, limitada a algunos flujos o a sesiones aprobadas, a una lista de direcciones IP y a una fecha de caducidad. 401 significa que la clave es incorrecta, se revocó o expiró; 403 significa que no se envió ninguna clave, que la clave no tiene acceso a este recurso o acción, o que la solicitud provino de una dirección fuera de su lista de IP; 404 en una ruta de sesión significa que la sesión está fuera de los flujos o estados de la clave. Una clave sin acceso a contenido multimedia recibe las URL de imágenes, videos y PDF como null, y una clave sin permiso de escritura en sesiones recibe los enlaces y tokens de sesión como null. Consulta https://docs.didit.me/console/api-keys.

Parámetros de ruta

transaction_id
string<uuid>
requerido

UUID estable de Didit de la transacción a la que pertenece la transferencia.

Cuerpo

application/json

Proporciona exactamente uno de estos: payment_txn_id (finalizar), action=cancel, action=resend, action=update_compliance_email con compliance_email, action=update_originator_wallet con wallet_address, o action=beneficiary_vasp con beneficiary_vasp.

payment_txn_id
string

El hash de la transacción on-chain. Requiere que la transferencia sea saliente y esté en estado COMPLETED.

action
enum<string>

"cancel" cancela una transferencia que aún no está en un estado final. "resend" vuelve a ejecutar el enrutamiento de una transferencia saliente bloqueada en COUNTERPARTY_VASP_NOT_FOUND, COUNTERPARTY_VASP_NOT_REACHABLE o NOT_ENOUGH_COUNTERPARTY_DATA. "update_compliance_email" sustituye el correo electrónico de cumplimiento al que se envía la solicitud, en una transferencia saliente que esté en uno de esos tres estados; envía "resend" después. "update_originator_wallet" registra la wallet desde la que realmente salieron los fondos (wallet_address, memo). "beneficiary_vasp" te permite indicar tú mismo el VASP de la contraparte (requiere beneficiary_vasp) para una transferencia saliente que esté en uno de esos estados: se enruta a ese VASP y se vuelve a enviar.

Opciones disponibles:
cancel,
resend,
update_compliance_email,
update_originator_wallet,
beneficiary_vasp
compliance_email
string<email>

Obligatorio con action: update_compliance_email. Se guarda como beneficiary_data.counterparty_vasp_email de esta transferencia: pertenece solo a esta transferencia y no se añade a ninguna entrada del directorio ni a ninguna lista de contactos.

Maximum string length: 254
wallet_address
string

Con action: update_originator_wallet: la wallet de la que salieron los fondos. Cuando se conocen las entradas UTXO de la transferencia, debe ser una de ellas.

Maximum string length: 128
memo
string

Con action: update_originator_wallet: el memo o la etiqueta de la wallet en una red con memo. Opcional.

Maximum string length: 256
beneficiary_vasp
string<uuid>

Obligatorio con action=beneficiary_vasp: el id de un VASP del directorio, obtenido de GET /v3/travel-rule/vasps/. Tu elección prevalece sobre todos los pasos de descubrimiento automático, que nunca la anulan.

Respuesta

La transferencia actualizada. Después de update_compliance_email, su estado no cambia y conserva reason: email_undeliverable hasta el siguiente resend.

Objeto de transferencia completo que devuelven los endpoints de confirmación de propiedad y de finalizar/cancelar. Mientras la propiedad de la wallet de una transferencia entrante no esté confirmada, los originator_data y beneficiary_data de la contraparte se devuelven enmascarados (se conserva la primera letra de cada palabra; la wallet, la cadena y el enrutamiento del VASP siguen siendo legibles) y data_masked es true.

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

La vía por la que se enrutó la transferencia, o null cuando no se seleccionó ninguna vía (por ejemplo, por debajo del umbral, con una wallet sin custodia de la contraparte, con un registro posterior al depósito o sin una contraparte alcanzable). INTERNAL significa que ambas partes son aplicaciones de Didit; EMAIL significa que se llegó a la contraparte mediante un enlace de recogida enviado por correo electrónico. TEST_VASP significa que el VASP de prueba de Didit respondió a la transferencia del sandbox. Por GTR, VERIFYVASP y SYGNA, Didit lee la respuesta de la contraparte en la respuesta de la red o consultándola cada 5 minutos. TRUST solo envía, por lo que una transferencia por TRUST permanece en AWAITING_COUNTERPARTY hasta que expira. Una vía de red solo se usa cuando has conectado tu propia membresía a esa red. Se elige después de que la creación de la transacción responde, por lo que es null en esa respuesta.

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

"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. En una transferencia entrante, los valores de la contraparte están enmascarados hasta que se confirma la propiedad.

beneficiary_data
object

Parte beneficiaria. En una transferencia entrante, los valores de la contraparte están enmascarados hasta que se confirma la propiedad.

name_match
object · null · null

La comparación de nombres que decidió la transferencia, o null hasta que se haya ejecutado una. Mientras las partes están enmascaradas, y en la copia del otro cliente de un intercambio INTERNAL, transfer_name, compared_name, matched_names y mismatched_names se ocultan. score y matched pueden no coincidir: matched sigue el nivel de exigencia y score es la similitud entre los dos nombres completos.

data_match
object | null

Comparación campo a campo de los datos de las partes de la transferencia con lo que la otra parte sabe del titular de la wallet. Indica campos y resultados, nunca valores, por lo que sigue siendo legible mientras los datos de la contraparte están enmascarados. Es null hasta que se realiza una comparación.

mismatched_fields
string[]

Atajo para data_match.mismatched_fields. Vacío cuando nada difiere.

data_unmasked
object | null

Registro de auditoría del momento en que se desenmascararon los datos de la contraparte. Es null mientras los datos siguen enmascarados, y en las transferencias salientes.

data_masked
boolean

True mientras los datos personales de la contraparte están enmascarados en esta respuesta.

created_at
string<date-time>
delivery
object | null

Estado del último mensaje que esta transferencia debe a la otra parte. Es nulo cuando la transferencia nunca debió ninguno (por ejemplo, por debajo de threshold_amount, una wallet sin custodia declarada o un registro de sunrise).

discovery
object[]

Cómo buscó Didit la contraparte, con una entrada por cada paso ejecutado. Vacío cuando no se ejecutó ningún descubrimiento, por ejemplo, en una transferencia entrante.

reason
string

Por qué está bloqueada una transferencia COUNTERPARTY_VASP_NOT_FOUND o COUNTERPARTY_VASP_NOT_REACHABLE; "" para cualquier otro estado. Primero lo determina una entrega fallida, solo en COUNTERPARTY_VASP_NOT_REACHABLE: email_undeliverable (el proveedor de correo rechazó el correo de cumplimiento y no queda ninguna dirección que probar: al enviarlo, en un recordatorio o como rebote permanente notificado más tarde) o delivery_failed (el canal que realizaba la entrega falló de forma definitiva: un canal de red rechazó el mensaje o agotó los reintentos, un host de identidad TRP no respondió o el host TRP de la contraparte no aceptó la consulta). En caso contrario, lo determina la traza discovery: awaiting_end_user (ningún paso indicó una contraparte a la que Didit pueda llegar), directory_match_no_route (un paso indicó un VASP del directorio que no tiene ruta), picked_member_without_proven_wallet (el usuario final eligió un cliente de Didit que no ha demostrado el control de la wallet) o no_directory_match cuando la traza no da ningún otro motivo. Un reenvío hace avanzar la transferencia, por lo que el motivo se borra. Consulta Por qué está bloqueada una transferencia.

next_actions
object[]

Qué hace avanzar la transferencia; [] para cualquier estado que no sea COUNTERPARTY_VASP_NOT_FOUND o COUNTERPARTY_VASP_NOT_REACHABLE. email_undeliverable ofrece update_compliance_email y después resend. delivery_failed ofrece resend. Un motivo de descubrimiento ofrece select_counterparty_vasp, declare_self_hosted, add_vasp_hint y resend.

chain_details
object

Cómo identifica la cadena de la transferencia sus dos wallets, cuando no se trata simplemente de una dirección que paga a otra. Vacío ({}) en una transferencia de una cadena basada en cuentas (EVM, Solana, Tron), donde las dos direcciones son las wallets. La coincidencia, el enrutamiento y la libreta de direcciones leen las wallets primero de aquí.

Última modificación el 1 de noviembre de 2026