API Credito
Este endpoint ejecuta la descarga (download) en el sistema de TIN Cloud y acredita los fondos en el núcleo bancario (core bancario
) de la entidad financiera.
IMPORTANTE: Para evitar el riesgo de procesar créditos duplicados, es indispensable que el banco valide si la operación de crédito ya ha sido procesada para esta transferencia.
Esta verificación puede implementarse consultando si existe una acción de tipo DOWNLOAD
con el ID correspondiente (CUS) en la base de datos del banco.
IMPORTANTE: Los objetos de error mostrados en los diagramas son ilustrativos. Pueden variar según la causa del error.
El banco debe construir y enviar el objeto de error correspondiente a la causa real del fallo.
Casos de crédito
Caso 1: Transferencia de crédito regular
En este caso, el banco acredita la cuenta del usuario destino como parte de un flujo exitoso SEND
o REQUEST
. Este paso representa el tercero en el flujo UPLOAD → SEND → DOWNLOAD
(o DEBIT → SEND → CREDIT
).
Caso 2: Reversión de débito
Aquí, el banco acredita nuevamente la cuenta del usuario origen como parte de un flujo fallido de SEND
o REQUEST
. Es decir, el usuario original recupera el dinero como parte del proceso de reversión (REJECT
).
Pasos para procesar el crédito
Crear acción DOWNLOAD
Crear la acción con los siguientes valores:
Consultar datos del firmante objetivo
Usar la información de Action.snapshot.target.signer.handle
y recuperar los datos de la cuenta bancaria localmente.
Analizar tipo de operación
Analizar Action.labels.type
para determinar si se trata de un crédito normal por SEND
, REQUEST
o una reversión por REJECT
.
Decidir aceptar o rechazar la transferencia
Si se decide rechazar, devolver la acción con status: "REJECT"
. Si se acepta, retornar con status: "PENDING"
.
Cargar Keeper del firmante objetivo
Cargar el firmante relacionado con el campo Action.snapshot.target.signer.handle
.
Actualizar etiquetas de la acción
Actualizar labels
de la acción con información necesaria como tx_ref
, description
, domain
, entre otros.
Firmar acción DOWNLOAD
Firmar la acción usando el Keeper del firmante.
Enviar acción firmada a /v1/transfer/:tx_ref/continue
Enviar la acción con estado COMPLETED
al endpoint de TIN Cloud para continuar el flujo.
Continuar procesamiento
⚠️ IMPORTANTE: La referencia de la transacción en el sistema bancario debe ser guardada en labels.tx_id. Esta referencia será usada en el proceso de conciliación y debe ser única por cada acción DOWNLOAD.
💡 NOTA: La llamada al endpoint /v1/transfer/:tx_ref/continue debe ejecutarse antes de 8 minutos después de la aceptación de la transferencia. Si no se hace, el estado de la transferencia se actualizará automáticamente a ERROR.
Flujo Exitoso
TIN Cloud envía solicitud de crédito
TIN Cloud calls /credit
bank endpoint.
El banco crea la acción DOWNLOAD
The Bank creates the action DOWNLOAD
by making a POST
request to /v1/action
.
El banco responde a la solicitud de creación de la acción
El endpoint del banco devuelve a TIN Cloud la acción DOWNLOAD
con el estado PENDING
en el cuerpo de la respuesta.
La respuesta debe incluir un objeto error
con código 0
y el mensaje "success"
.
El banco procesa el abono y actualiza la acción
El banco procesa la operación de crédito en su Core bancario.
El sistema bancario responde con una referencia de la transacción que debe almacenarse en el campo labels.tx_id
de la acción DOWNLOAD
.
Esta referencia será utilizada posteriormente en los procesos de conciliación y debe identificar de forma clara y única la transacción en el banco asociada a esta acción.
El banco debe actualizar la acción DOWNLOAD
utilizando la referencia proporcionada, realizando una llamada PUT
a /v1/action/{downloadAction_id}
.
Firmar la acción DOWNLOAD y enviar IOU firmado
El banco debe firmar la acción DOWNLOAD
utilizando las llaves de la cuenta del usuario (es decir, las llaves del firmante source
).
Luego, debe enviar el IOU firmado a través de una llamada POST
a /v1/action/{downloadAction_id}/sendit
.
Al hacerlo correctamente, recibirá la acción DOWNLOAD
con estado COMPLETED
y un hash
de transacción en la etiqueta labels.hash
.
Los pasos detallados para completar esta operación son:
- Crear el objeto Claims (IOU)
Utiliza los campos de la acciónDOWNLOAD
para construir el objeto consource
,target
,amount
,symbol
,domain
, yexpiry
.
- Cargar las llaves del firmante
Carga las llaves públicas y privadas del firmante correspondiente (cuenta de usuario).
- Firmar el IOU
Aplica la firma criptográfica sobre elhash
del objetoClaims
, generando una estructura con la metadata de la firma.
- Enviar el IOU firmado
Realiza la llamadaPOST /v1/action/{downloadAction_id}/sendit
con el contenido firmado.
Una vez enviada y validada la firma correctamente, TransfiYa devolverá la acción firmada con estado COMPLETED
y el hash
correspondiente.
Llamar al endpoint /continue con la acción DOWNLOAD firmada
El banco debe llamar al endpoint /v1/transfer/{mainAction_id}/continue
o /v1/transfer/{tx_ref}/continue
(ambos son válidos) utilizando como cuerpo del mensaje la acción DOWNLOAD
firmada previamente en el paso anterior.
Esta acción DOWNLOAD
debe tener:
status
con valorCOMPLETED
- el
hash
firmado en el campolabels.hash
Esta llamada sirve para notificar a TIN Cloud que la transferencia fue acreditada correctamente y que el flujo puede continuar su procesamiento.
✅ La respuesta esperada por parte del banco debe incluir el objeto error
con:
Una vez realizada esta llamada correctamente, la operación queda oficialmente registrada y completada en el sistema.
Flujo de error - Inicio del proceso de acreditación
TIN Cloud llama al endpoint /credit
del banco para iniciar el proceso de acreditación de fondos.
Flujo de error - Creación de la acción DOWNLOAD
El banco crea una acción de tipo DOWNLOAD
basada en la información de la transferencia principal.
Flujo de error - Respuesta con acción DOWNLOAD pendiente
El banco responde a TIN Cloud con la acción DOWNLOAD
en el cuerpo, con estado PENDING
y un objeto error
con código 0
y mensaje Success
.
Flujo de error - Error en el procesamiento del Core bancario
El banco intenta acreditar los fondos en su sistema Core, pero ocurre un error durante el procesamiento.
Flujo de error - Llamada al endpoint /continue con estado ERROR
El banco debe invocar el endpoint /v1/transfer/{tx_ref}/continue
para continuar el flujo, incluyendo:
- El
action_id
de la acción principal (SEND
oREQUEST
) - La acción
DOWNLOAD
con el estadoERROR
enlabels.status
- Un objeto
error
con elcode
ymessage
que describen la causa del error
⚠️ Nota: Esta llamada es obligatoria cuando el proceso en el Core retorna un error. Permite que TIN Cloud actualice el estado de la transferencia de manera adecuada.
Ejemplo de respuesta de Error
Código: El código de error debe estar basado en la tabla de códigos de error definida en la documentación técnica del servicio. En caso exitoso, debe enviarse el código 0
.
Mensaje: El mensaje de error debe corresponder al código utilizado, también basado en la tabla de errores. En caso exitoso, debe enviarse el mensaje "Success"
.
Conclusión:
El banco realiza una llamada al endpoint /continue
enviando una acción de tipo UPLOAD
o DOWNLOAD
con estado COMPLETED
o ERROR
. A partir de esta llamada, TIN Cloud puede determinar cómo continuar el flujo de la transferencia. Las posibles rutas son:
- Continuar con el proceso (flujo exitoso)
- Dejar la transferencia en estado
ERROR
- Revertir la transferencia (flujo de reversa)