Débito al usuario origen
El endpoint de débito se invoca al inicio del procesamiento de una transferencia, con el objetivo de debitar la cuenta del usuario origen. Este endpoint debe garantizar que la cuenta esté activa y sea válida, y debe reservar los fondos necesarios para que la operación pueda ejecutarse.Los bancos pueden optar por registrar la transacción de forma definitiva o simplemente realizar una reserva de fondos.
UPLOAD
. Si esta acción se marca como COMPLETED
exitosamente, pero más adelante ocurre un error en el procesamiento, Transfiya ejecutará una operación opuesta (de tipo credit
) para revertir el movimiento de saldo y restablecer el estado original de la cuenta.
Flujo de debito al usuario origen
Proceso de débito paso a paso
A continuación, se describe detalladamente el flujo de procesamiento para una transferencia tipoSEND
, enfocándonos en la etapa de débito al usuario origen. Este flujo se ejecuta en múltiples etapas, combinando interacciones entre Transfiya y el banco originador, tanto en fases síncronas como asincrónicas.
El objetivo principal de este proceso es asegurar que los fondos del usuario origen estén disponibles y sean reservados o debitados correctamente antes de avanzar con el resto de la operación. El flujo también contempla los mecanismos necesarios para revertir movimientos en caso de errores, así como el uso de pruebas criptográficas (IOU) y el cumplimiento de los tiempos regulatorios.
Cada paso está alineado con los lineamientos del nuevo modelo SPI (Sistema de Pagos Inmediatos) y busca mantener la compatibilidad con la arquitectura existente de Transfiya. A continuación se detallan las acciones involucradas, junto con ejemplos prácticos y consideraciones técnicas relevantes.
1
Transfiya llama al banco origen para procesar la operación de débito
Transfiya inicia el proceso mediante una solicitud POST al endpoint de débito del banco origen, con la información completa de la transferencia.
2
El banco origen crea una acción tipo `UPLOAD` en Transfiya
Esto representa la reserva o débito de fondos. Se debe generar una acción usando el API de Transfiya, referenciando la transferencia original.
Atributo | Valor |
---|---|
source | bankSigner.handle — Bank settlement signer. |
target | mainAction.snapshot.source.signer.handle — Source of the transfer (bank user). |
symbol | mainAction.symbol — Currency of the transfer. |
labels.type | UPLOAD — Always UPLOAD for debits. |
labels.tx_ref | mainAction.labels.tx_ref — Transfer reference. |
mainAction
en los valores se utiliza al hacer referencia a los datos de la acción principal recibida desde TransfiYa. En otras palabras, representa el cuerpo de una llamada POST a https://ban.co/transfiya/debit
.bankSigner
representa el firmante de liquidación que es registrado por el banco durante el proceso de incorporación con TransfiYa. Este firmante mantiene el balance total disponible para el banco dentro del sistema.3
El banco origen responde a la solicitud inicial de débito
Esta respuesta marca el cierre de la fase síncrona. El campo obligatorio es
action_id
.Se pueden incluir campos adicionales en la respuesta, pero solo
action_id
es obligatorio.4
El banco valida la cuenta origen y debita el monto correspondiente
Se realizan validaciones sobre la cuenta y se ejecuta la operación interna de débito.
5
El banco actualiza la acción `UPLOAD` con el `tx_id` de la transacción interna
El identificador
tx_id
permite posteriores conciliaciones entre Transfiya y el banco.Field name | Field value |
---|---|
<upload_action_id> | The <upload_action_id> used in the URL is the ID of the UPLOAD action created in step 2. In our example, it is 5954ac04-b4db-4c6f-86f6-43df30f6bacb . |
labels.tx_id | Unique identifier of the transaction executed by the bank to debit the funds from the source account. |
6
El banco crea y firma un objeto IOU como prueba criptográfica
Este IOU contiene la información de la transacción y su firma digital, generada con claves privadas del firmante.
Transfiya valida la firma del objeto IOU recibido y lo almacena en el libro mayor, si todo es válido. Esta operación también marca la acción
UPLOAD
como COMPLETED
.7
El banco realiza validaciones finales y llama al endpoint `continue`
Esta llamada debe incluir los campos
received
y dispatched
. Se puede incluir un objeto error
si aplica.Para continuar con el procesamiento de la transferencia, es suficiente con llamar al endpoint
continue
y proporcionar las marcas de tiempo requeridas por la regulación.Field name | Descripción |
---|---|
<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 | Marca de tiempo en formato ISO 8601. Representa el momento en que se recibió la última respuesta de Transfiya (llamada sendit ). |
dispatched | Marca de tiempo en formato ISO 8601. Representa el momento en que se envió la llamada continue a Transfiya. |