Validación de aceptación por el banco destino
Una vez realizado el débito, Transfiya ejecuta controles antifraude sobre la transferencia y contacta al banco destino para solicitar la aceptación del pago. Este paso permite al banco receptor validar la información de la cuenta destino y confirmar que el pago puede ser recibido correctamente.Durante esta etapa, el banco DEBE realizar las siguientes validaciones:Que la cuenta destino exista.Que la cuenta esté activa y habilitada para recibir pagos.Que la moneda de la cuenta coincida con la moneda de la transferencia.Que el monto de la transferencia no supere los límites previamente definidos.
Las validaciones de aceptación DEBEN realizarse inmediatamente cuando la transferencia entra en estado PENDING.
En este capítulo nos enfocaremos exclusivamente en el manejo del estado PENDING a través del endpoint status.
Los demás estados (COMPLETED y REJECTED) serán abordados más adelante en el flujo de procesamiento.
Aceptación de transferencia – Pasos detallados
A continuación detallamos los pasos del diagrama de secuencia con el detalle tecnico.
1
Transfiya llama al endpoint `status` del banco destino con estado `PENDING`
Se realiza una solicitud
POST
al endpoint del banco con todos los datos relevantes de la transferencia. El campo labels.status
estará en PENDING
.2
El banco valida que la cuenta de destino exista
Puede ser un
signer.handle
(si el usuario ya está registrado) o una referencia bancaria del tipo tipo-cuenta:número-cuenta@dominio-banco
, por ejemplo: svgs:1001001000@bank.io
.3
Banco destino verifica que la cuenta esté activa y pueda recibir pagos
Si la cuenta está cerrada, bloqueada o suspendida, el banco debe rechazar la transferencia mediante el endpoint
/reject
, incluyendo un código como 307 - Inactive account
.Los bancos pueden rechazar transferencias llamando al endpoint
reject
de la transferencia e incluyendo un objeto error
en el cuerpo con información adicional sobre el motivo del rechazo.Los códigos de error devueltos por los bancos deben estar dentro del rango 3xx
.Field name | Descripción en español |
---|---|
<tx_ref> | El campo <tx_ref> en la URL representa la referencia de la transferencia, que puede encontrarse en labels.tx_ref del mainAction . |
received | Marca de tiempo en formato ISO 8601. Representa el momento en que se recibió la llamada status desde Transfiya. |
dispatched | Marca de tiempo en formato ISO 8601. Representa el momento en que se envió la llamada reject hacia Transfiya. |
4
Banco destino valida que la moneda y el monto sean válidos para la cuenta
En caso de discrepancia, la operación debe rechazarse con un código de error como
304 - Transfer information is invalid
.Los bancos pueden rechazar transferencias llamando al endpoint
reject
de la transferencia y proporcionando un objeto error
en el cuerpo con información adicional sobre el motivo del rechazo.Los códigos de error devueltos por los bancos deben estar en el rango 3xx
.Field name | Descripción en español |
---|---|
<tx_ref> | El campo <tx_ref> en la URL representa la referencia de la transferencia, que se encuentra en labels.tx_ref del mainAction . |
received | Timestamp en formato ISO 8601. Representa el momento en que se recibió la llamada status desde Transfiya. |
dispatched | Timestamp en formato ISO 8601. Representa el momento en que se envió la llamada reject a Transfiya. |
5
Banco Destino verifica si la cuenta está registrada en Transfiya (onboarded)
Se valida que exista un
signer
en el sistema y que cuente con una clave pública (keeper
) válida asociada. Esta validacion la realiza el banco internamente, no debe ir a transfiya para realizarla.6
Genera una clave privada (`keeper`) si la cuenta no está registrada
Cada cuenta debe tener una clave criptográfica única. Esta se usa para firmar operaciones bajo el modelo de Transfiya.
La seguridad de Transfiya se basa en criptografía de clave pública/privada. Esta clave se utiliza para autorizar cualquier pago asociado a la cuenta, por lo que cada cuenta debe tener una clave única asociada. Se recomienda utilizar los SDKs de Transfiya para generar estas claves de manera segura.
7
Banco Destino Registra el `signer` en Transfiya
El banco destino registra una cuenta en Transfiya creando un signer vinculado a una clave pública, la cual está asociada a la clave privada generada previamente. Este signer contiene también metadatos adicionales sobre la cuenta y su titular, los cuales son necesarios para el correcto procesamiento de las transacciones dentro del sistema.
No se requiere consentimiento del usuario para crear signers de cuenta que no estén vinculados a alias. Este tipo de signers son útiles para incorporar automáticamente cuentas de usuario sin necesidad de solicitar confirmación.
8
El banco destino acepta la transferencia `PENDING`
El banco debe llamar al endpoint
/accept
incluyendo los campos received
, dispatched
y el signer.handle
correspondiente.Esta aceptación es obligatoria antes de que se realice la operación de crédito que ocurre posterior a la liquidación con MOL.