core bancario) de la entidad financiera.
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).Pasos para procesar el crédito
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.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
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
La respuesta debe incluir un objeto
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
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}.- request
- response
Firmar la acción DOWNLOAD y enviar IOU firmado
El banco debe firmar la acción
Luego, debe enviar el IOU firmado a través de una llamada
Al hacerlo correctamente, recibirá la acciónUna vez enviada y validada la firma correctamente, TransfiYa devolverá la acción firmada con estado
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ónDOWNLOADpara 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 elhashdel objetoClaims, generando una estructura con la metadata de la firma.
- Enviar el IOU firmado
Realiza la llamadaPOST /v1/action/{downloadAction_id}/senditcon el contenido firmado.
COMPLETED y el hash correspondiente.Llamar al endpoint /continue con la acción DOWNLOAD firmada
El banco debe llamar al endpoint Una vez realizada esta llamada correctamente, la operación queda oficialmente registrada y completada en el sistema.
/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:statuscon valorCOMPLETED- el
hashfirmado en el campolabels.hash
error con: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_idde la acción principal (SENDoREQUEST) - La acción
DOWNLOADcon el estadoERRORenlabels.status - Un objeto
errorcon elcodeymessageque 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
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)