- Tu usuario debe primero autorizar a Fintoc a debitar su cuenta. A esta autorización la llamamos Subscription.
- Una vez que el usuario autoriza a Fintoc, puedes crear cargos para debitar la cuenta de tu usuario.

Flujo de autorización
Antes de que puedas comenzar a crear cargos, tu usuario debe autorizar a Fintoc a debitar su cuenta. Esta autorización es lo que llamamos Subscription. Como en la mayoría de los productos de Fintoc, tu usuario debe pasar por el Widget para crear la suscripción. Hay tres pasos para crear suscripciones usando Fintoc:- En tu backend, crea un
SubscriptionIntentusando tu Secret Key - Abre el widget en tu frontend usando tu Public Key
- Maneja los eventos posteriores a la suscripción
Crear un Subscription Intent
Para iniciar el proceso de suscripción, primero debes crear un Subscription Intent desde tu backend.widget_token. Este token es necesario para abrir el Widget en el frontend de tu aplicación. La siguiente sección contiene más detalles al respecto.
Business Profile NamePuedes enviar
business_profile.name para personalizar el nombre que se mostrará como la “Empresa Destinataria” en las pantallas del widget.Abrir el widget para Subscriptions
Una vez creado el Subscription Intent, debes enviar suwidget_token a tu frontend y usarlo para configurar el widget y el flujo que seguirá el usuario.
Widget TokenEl
widget_token evita que tu aplicación tenga que enviar datos sensibles a Fintoc desde tu frontend. El token es temporal y expirará 10 minutos después de su creación.widget_token:
Usa los callbacks y eventos del Widget correctamenteNunca uses los callbacks
onSuccess, onExit u onEvent para obtener el estado de la Subscription que se está creando. Debes usar estos callbacks solo para manejar el flujo de tu aplicación frontend, mientras esperas la confirmación del backend mediante Webhooks. Los eventos del frontend también pueden usarse para generar métricas sobre el uso general del widget, pero nunca debes basarte únicamente en ellos para asumir que una Subscription fue creada o falló al crearse.Manejar eventos posteriores a la suscripción
Una vez que un Subscription Intent termina, manejas el resultado de la suscripción en tu frontend y completas la suscripción en tu backend. Para tu frontend usarás el callback del widget, y para tu backend usarás los eventos enviados por webhooks.Manejar el resultado de la suscripción en tu frontend
Una vez que un Subscription Intent termina exitosamente, el widget ejecuta el callbackonSuccess. Necesitas pasarle esta función al widget al momento de crearlo.
Con este callback puedes decidir qué hacer con el frontend de tu usuario una vez completada la suscripción, por ejemplo:
- Redirigir al usuario a una vista posterior a la suscripción
- Mostrar al usuario una pantalla de éxito.
Manejar errores
No solo necesitas manejar el caso exitoso, ya que las suscripciones también pueden fallar. Por ejemplo, tu cliente abandonó el proceso antes de completar la suscripción. Cuando una suscripción falla o es rechazada por tu cliente, el widget ejecuta el callbackonExit. Con este callback puedes manejar errores en tu frontend. Por ejemplo, puedes invitar a tu cliente a reintentar el proceso.
Para obtener la razón del error puedes acceder al callback onExit creando una instancia de él. Aquí un ejemplo:
Almacenar la suscripción creada
Para recibir notificaciones sobre el proceso de suscripción, primero debes haber creado un Webhook Endpoint en Fintoc y asignarle los eventos que quieres recibir. Es muy importante que te suscribas al eventosubscription_intent.succeeded. Además, debes almacenar el subscription_id incluido en un lugar seguro al que puedas acceder más tarde. El subscription_id es necesario para crear Charges más adelante.
El proceso de suscripción puede generar 3 eventos distintos que se envían a tu webhook endpoint:
Webhook del backend vs onSuccess del widgetEs muy importante que esperes el evento del webhook en tu backend para terminar el proceso. Nunca debes finalizar el flujo basándote únicamente en la función
onSuccess del widget. Algunos usuarios pueden cerrar el widget antes de que el callback que envía el webhook a tu backend se ejecute.Esperar la activación de la suscripción
La suscripción creada comienza con un estadopending. Esto indica que la suscripción se creó correctamente, pero todavía no se pueden crear cargos. Primero, Fintoc necesita que el banco confirme que la suscripción está operativa.
Una nueva suscripción puede tardar hasta 5 días hábiles en estar operativa. Una vez que una suscripción se valida como lista para recibir cargos, se dispara un evento subscription.activated y se envía por webhooks.
Si por alguna razón el banco informa a Fintoc que una suscripción ha sido cancelada, se disparará un evento subscription.canceled.
¿Qué sucede cuando el usuario crea un nuevo Subscription Intent con la misma cuenta bancaria?Cada flujo verifica si existen suscripciones previas creadas entre el usuario y tu organización. Si ya existe una activa, los usuarios verán una pantalla de éxito como confirmación y se enviará el evento
subscription_intent.succeeded con el subscription.id activo.Flujo de cargos
Crear un Charge
Fintoc usa el objetoCharge para representar un pago de suscripción.
Desde tu backend, crea un Charge con el monto, la moneda y el subscription_id que obtuviste en el paso de autorización. También puedes agregar el objeto business_profile para facturación por categoría. Aquí un ejemplo:
Confirmación del cargo
Un cargo puede tardar hasta 2 días hábiles antes de tener confirmación de su éxito o falla:- Al crearse, los cargos tienen un estado inicial de
pending. - Fintoc procesa los cargos una vez al día a las 2 pm. Cuando esto ocurre, el cargo pasa a
in_progressy ya no se puede cancelar. Los cargos creados después de las 2 pm (hora de CL) se procesan el siguiente día hábil. - Durante los siguientes 2 días hábiles, el cargo pasa a succeeded o failed dependiendo del banco del usuario.
- Tu usuario ve el cargo reflejado en su estado de cuenta bancario 2 días hábiles después de creado el cargo. Tu usuario sabrá si el cargo fue exitoso antes de que el banco notifique a Fintoc.
- Los cargos se transfieren a tu cuenta bancaria el siguiente día hábil después de que pasaron al estado exitoso.
Webhooks de cargos
Una vez que se completa el cargo, te enviaremos un evento concharge como tipo a través de un webhook.
Para suscribirte al evento, primero debes haber creado un Webhook Endpoint en Fintoc y asignarle los eventos que quieres recibir.
Debes suscribirte a estos eventos, ya que puedes usarlos para identificar los cargos exitosos de los fallidos.
Charge Succeeded vs transferencia de fondosUn cargo se marca como exitoso cuando el banco confirma a Fintoc que ya se le ha cobrado al usuario el monto especificado. Esto no significa que esos fondos ya estén en la cuenta de tu organización. Fintoc tiene 1 día hábil para transferir ese dinero a tu cuenta.
Recibir fondos en tu cuenta
Una vez que creas un cargo a la cuenta de tu usuario, tomará de 3 a 4 días hábiles que esté disponible en tu cuenta bancaria. Esto depende principalmente de si el cargo se crea antes/después del horario de corte bancario. El esquema básico de tiempos es:

