Cómo hacer una reversión
Guia del proceso de reversiones en Transfiya
Un flujo de reversión es el conjunto de acciones necesarias para devolver el dinero al origen. Cuando ocurre un error en algún punto del flujo regular, se generan las acciones necesarias para revertir el movimiento de fondos. Al igual que las acciones regulares, estas acciones de reversión deben ser firmadas por las entidades financieras.
Actualmente existen dos tipos de acciones asociadas al flujo de reversión:
- REJECT: es la acción que permite devolver el dinero del usuario destino al usuario origen. Es la acción opuesta a la acción principal (SEND / REQUEST). Esta acción es creada por TIN Cloud y firmada por la entidad financiera que actuó como receptora en la transacción a través del endpoint
/action
. - REVERSE DOWNLOAD: es la acción que devuelve el dinero del usuario origen al banco origen. Es la inversa de la acción UPLOAD. Tanto la creación como la firma dependen del endpoint
/credit
de la entidad financiera que actuó como origen.
Es importante destacar que cuando ocurre un error en el flujo regular, el estado de la transferencia cambia a ERROR, y la acción principal pasa a estado REJECTED, manteniéndose así hasta que la acción REVERSE DOWNLOAD sea firmada con éxito. En ese momento, la transferencia cambia su estado a REJECTED.
⚠️ IMPORTANTE: Si ocurre un error durante la ejecución del flujo de reversión, el estado de la transferencia permanecerá en ERROR.
Acciones realizadas por el flujo de reversión
Cuando inicia:
- Cambia el estado de la transferencia a
ERROR
. - Cambia el estado de la acción que falló a
ERROR
(la acción principal pasa aREJECTED
).
Si finaliza con éxito:
- Cambia el estado de la transferencia a
REJECTED
. - Llama al endpoint
/status
. - Llama a Monitor+ (341).
Definiciones y Validaciones
Si ocurre un error durante el proceso de reversión, la transferencia pasará a estado ERROR
y será gestionada por el equipo de soporte.
El objeto error
de la transferencia se enviará al endpoint /status
del banco (solo si la transferencia tiene estado final REJECTED
o COMPLETED
).
Para revertir una acción, se deben cumplir las siguientes condiciones:
- La acción debe tener un
hash
. - El proceso de reversión para la acción no debe haber sido iniciado previamente.
Si el banco llama a /continue
con una acción en error mientras el flujo de reversión ya ha comenzado, la API ignorará la solicitud.
Comportamientos por tipo de error
- Si el endpoint
/debit
retorna un error pero la acción UPLOAD fue completada, se llamará al endpoint/credit
del origen. - Si el error ocurre después de completar la acción principal (SEND o REQUEST), se creará una acción REJECT y se llamará al endpoint
/credit
del origen. - Si el error ocurre con una acción DOWNLOAD completada, se cambiará el estado de la transferencia a ERROR.
Validaciones en la respuesta de los bancos
La respuesta de los endpoints /debit
, /transfer
y /credit
del banco será validada. Si la respuesta no cumple con los requisitos, la transferencia permanecerá en el estado anterior y no se generará flujo de reversión. La transacción se detendrá en el punto donde el banco no respondió correctamente.
Respuestas inválidas incluyen:
- Objeto vacío
- Acción sin
action_id
- Acción sin
labels.tx_ref
- Acción sin
labels.type
- Acción sin
labels.status
- Acción sin objeto
error
(solo si la respuesta es un error) - Incoherencia en
code
ymessage
(por ejemplo, deben ser"code": 0, "message": "Success"
)
Impacto en el flujo
Flujo Asíncrono
- /debit: Sin efecto (el banco usa
/continue
). - /transfer: Transferencia queda en
ACCEPTED
oERROR
, acción principal enCOMPLETED
oPENDING
. - /credit: Sin efecto (el banco usa
/continue
).
Flujo Síncrono
- /debit: Transferencia queda en
INITIATED
, acción UPLOAD enCOMPLETED
oPENDING
. - /transfer: Transferencia queda en
ACCEPTED
oERROR
, acción principal enCOMPLETED
oPENDING
. - /credit: Transferencia queda en
ACCEPTED
oERROR
, acción DOWNLOAD enCOMPLETED
oPENDING
.