Saltar al contenido principal
POST
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.

Cuerpo

application/json
transaction_id
string
requerido

Tu identificador único de esta transacción (máximo 128 caracteres).

Ejemplo:

"your-txn-2026-05-17-001"

transaction_category
enum<string>
requerido

Categoría de la transacción. También se aceptan alias en CamelCase (travelRule, userPlatformEvent, gamblingBet, …); el valor almacenado y devuelto está en camelCase para las categorías de varias palabras.

Opciones disponibles:
finance,
kyc,
travel_rule,
user_event,
audit_trail_event,
gambling_bet,
gambling_limit_change,
gambling_bonus_change,
travelRule
Ejemplo:

"finance"

transaction_details
object
requerido

Datos financieros principales de la transacción.

subject
object
requerido

El sujeto (solicitante) de la transacción.

transaction_at
string<date-time>

Cuándo se produjo la transacción. Si se omite, se usa el momento actual.

time_zone
string

Identificador de zona horaria IANA, p. ej. Europe/Madrid.

counterparty
object

La contraparte de la transacción (opcional).

custom_properties
object

Pares clave-valor arbitrarios adjuntos a la transacción. Cada clave se puede referenciar en las condiciones de las reglas con la ruta de campo custom_values.<key>.

Ejemplo:
travel_rule_details
object

Datos de Travel Rule. Cuando Travel Rule está habilitada y transaction_category es travel_rule, Didit gestiona el intercambio por sí mismo: ignora status, protocol, required y obligations_count, y usa originator_data, beneficiary_data y metadata. En caso contrario, Didit almacena estos valores como un registro pasivo de Travel Rule. Mientras Travel Rule esté activada, una transferencia saliente igual o superior a tu umbral debe incluir lo que exige su régimen (EU TFR o la Recomendación 16 del FATF), que se comprueba en las partes que envías: si falta un campo, la respuesta es 400 en travel_rule_details.originator_data o travel_rule_details.beneficiary_data, por ejemplo "EU TFR requires the originator name."

network_snapshot
object

Instantánea precalculada del grafo de red.

include_crypto_screening
boolean | null

Sobrescritura por transacción del análisis de blockchain de criptoactivos. Cuando es true, el análisis de criptoactivos se realiza independientemente del valor predeterminado de la aplicación. Cuando es false, el análisis de criptoactivos se omite aunque esté habilitado en la configuración de la aplicación. Cuando se omite o es null, se usa el valor predeterminado a nivel de aplicación configurado en la Console. El análisis de criptoactivos requiere transaction_details.direction, currency_kind: "crypto", una cadena/moneda y la dirección de wallet que corresponde según la dirección de la transacción: el análisis entrante previo a la transferencia usa counterparty.payment_method.account_id, el análisis entrante por hash de transacción usa subject.payment_method.account_id y el análisis saliente usa counterparty.payment_method.account_id. Cuando transaction_details.payment_reference_id contiene un hash de transacción de blockchain, Didit realiza el análisis de la transacción y devuelve el enriquecimiento con el resumen de la transacción cuando está disponible.

Respuesta

Transacción enviada y monitorizada. El cuerpo es el detalle completo de la transacción (con la misma estructura que GET /v3/transactions/{transaction_id}/) y refleja los resultados de las reglas ya aplicadas.

Registro de monitorización completo de una transacción, tal como lo devuelven GET /v3/transactions/{transaction_id}/ y POST /v3/transactions/.

uuid
string<uuid>

Identificador estable de Didit de la transacción. Úsalo como {transaction_id} en las llamadas posteriores.

environment
enum<string>

Entorno de la aplicación a la que pertenece la transacción. Una transacción de sandbox se almacena, pero nunca se evalúa, analiza, notifica ni factura, por lo que un rule_runs vacío significa "no evaluada".

Opciones disponibles:
live,
sandbox
transaction_number
integer

Número secuencial de transacción dentro de la aplicación que se muestra en la consola (p. ej., 4123).

txn_id
string

El transaction_id que proporcionaste al crearla (máx. 128 caracteres). Único por aplicación.

txn_date
string<date-time>

Cuándo se produjo la transacción (a partir de transaction_at; por defecto, el momento del envío).

zone_id
string | null

Identificador de zona horaria IANA proporcionado al crear.

transaction_type
string

Categoría de nivel superior tal como se almacena: finance, kyc, travelRule, userPlatformEvent, gamblingBet, gamblingLimitChange, gamblingBonusChange, auditTrailEvent. Ten en cuenta que los valores de varias palabras se devuelven en camelCase aunque se envíen en snake_case.

action_type
string

Subtipo dentro de la categoría (p. ej., deposit, withdrawal, transfer). Si no se indica, toma por defecto el valor de la categoría.

direction
enum<string>

Sentido respecto al sujeto. Se almacena en mayúsculas independientemente de cómo se envíe (en la entrada se aceptan in/out/inbound/outbound).

Opciones disponibles:
INBOUND,
OUTBOUND
status
enum<string>

Veredicto de monitorización actual. Las transacciones se crean como APPROVED; las reglas pueden cambiarlas a IN_REVIEW/DECLINED de forma síncrona.

Opciones disponibles:
APPROVED,
IN_REVIEW,
DECLINED,
AWAITING_USER
source
enum<string>

Cómo se originó el registro: LIVE para las transacciones enviadas mediante la API o el SDK, IMPORTED para las transacciones cargadas mediante la importación de la consola.

Opciones disponibles:
LIVE,
IMPORTED
amount
string

Importe de la transacción como cadena decimal sin ceros finales (p. ej., "1500", "0.5", "0.123456789012345678"). Hasta 18 decimales.

currency
string

Código de moneda de amount. Se acepta cualquier código alfabético ISO 4217 (p. ej. EUR, USD, NGN), así como el símbolo de un criptoactivo (p. ej. BTC). Es preferible un código actualmente en circulación. No todos los códigos aceptados tienen tipo de cambio. Cuando no hay ninguno disponible para el código, la conversión automática falla. Es el caso, por ejemplo, de la unidad contable ISO XSU o de un símbolo cripto al que Didit no asigna precio. Entonces preferred_currency_amount se devuelve como null, salvo que la solicitud haya incluido un amount_in_default_currency ya convertido.

currency_type
string | null

fiat o crypto, tal como se envió en currency_kind.

amount_in_default_currency
string | null

Importe ya convertido que proporcionaste, como cadena decimal sin ceros finales.

default_currency_code
string | null
preferred_currency_amount
string | null

amount convertido a la moneda preferida de la aplicación, cuando está disponible.

preferred_currency_code
string | null
payment_details
string | null

Referencia o concepto de pago en texto libre del envío.

payment_txn_id
string | null

Referencia del sistema de pago externo (p. ej., el hash de la transacción en blockchain) procedente de payment_reference_id.

score
integer

Puntuación de riesgo acumulada por las reglas (normalmente de 0 a 100). Cuanto más alta, mayor riesgo.

severity
enum<string> | null

Gravedad categórica del riesgo establecida por reglas o proveedores (UNKNOWN, LOW, MEDIUM, HIGH, CRITICAL). null hasta que algo la establezca.

Opciones disponibles:
UNKNOWN,
LOW,
MEDIUM,
HIGH,
CRITICAL
decision_reason_code
string | null

Motivo legible por máquina del status actual.

decision_reason_label
string | null

Etiqueta legible de decision_reason_code.

vendor_data
string | null

Copia de conveniencia del vendor_data del solicitante.

metadata
object

Instantánea de los payloads subject y counterparty tal como se enviaron en el momento de la creación.

props
object

Las custom_properties que proporcionaste al crearlo. En las condiciones de las reglas, cada clave se referencia como custom_values.<key>.

tags
object[]

Etiquetas asociadas a la transacción (manualmente o mediante reglas).

parties
object[]

Partes de la transacción (solicitante, contraparte).

payment_methods
object[]

Métodos de pago vinculados a la transacción.

documents
object[]

Archivos adjuntados a la transacción desde la consola. [] cuando no hay ninguno.

activities
object[]

Entradas del registro de actividad (creación, notas, revisiones manuales, cambios de estado).

alerts
object[]

Actualmente siempre vacío. Una alerta abierta es una transacción con estado IN_REVIEW o AWAITING_USER.

rule_runs
object[]

Resultados de ejecución por regla: qué regla se activó y con qué impacto en la puntuación.

provider_results
object[]

Payloads sin procesar de los proveedores (análisis AML, analítica de blockchain, etc.).

travel_rule
object | null

Transferencia o comprobación de Travel Rule. Se rellena cuando se envió travel_rule_details, y también cuando Travel Rule está habilitada y la transacción se creó con transaction_category: travelRule (Didit inicia el intercambio por sí mismo, incluso sin travel_rule_details). null cuando no existe ninguna transferencia ni comprobación. En una transferencia entrante, los originator_data y beneficiary_data de la contraparte permanecen enmascarados (data_masked: true) hasta que se confirma la propiedad de la wallet.

network_snapshot
object | null

Instantánea del grafo de transacciones/partes relacionadas que usa el motor de reglas. Es el network_snapshot enviado con la transacción o el grafo que Didit construye a partir de un análisis AML de wallet exitoso (que reemplaza al enviado). null cuando no existe ninguno.

remediation
object | null

Sesión de corrección que se ofrece al usuario cuando se requiere una reverificación. Ha sido reemplazada por action_required, que es el bloque canónico; se mantiene por compatibilidad con versiones anteriores.

action_required
Verification session · object

Acción pendiente del usuario final necesaria para completar esta transacción, o null cuando no hay ninguna. Los SDK de Didit abren la acción automáticamente de forma predeterminada y actualizan la transacción cuando termina. Hay dos variantes, que se distinguen por type: verification_session (una sesión de verificación alojada creada por la acción de una regla) y wallet_ownership (una sesión del widget de propiedad de la wallet generada automáticamente para una transferencia de la Travel Rule que requiere probar el control de la wallet, sujeta a la configuración auto_wallet_verification de la Travel Rule). Cuando ambas podrían aplicarse, wallet_ownership tiene prioridad porque bloquea el intercambio de la Travel Rule.

cost_breakdown
object | null

Coste de esta transacción: total_price e items, uno por cargo, cada uno con usage_type, price, details y created_at. Un nuevo análisis de la misma transacción es un ítem nuevo.

Última modificación el 1 de noviembre de 2026