- En tu backend, crea un
Checkout Sessionconflow: subscription. - Redirige al cliente para completar el registro en la página de checkout alojada por Fintoc.
- Maneja los eventos posteriores al registro y de pagos recurrentes (webhooks).

Crea una Checkout Session
El objeto Checkout Session representa tu intención de registrar un método de pago para cobros recurrentes y de crear una suscripción con un monto y periodicidad fijos. Usando tu Secret Key, crea unCheckout Session en tu backend con flow en subscription.
Servidor
Node
id y redirect_url para continuar el flujo:
redirect_url. En el siguiente paso, redirige al cliente a esta ubicación para completar la suscripción.
La siguiente tabla describe los parámetros que envías al crear un Checkout Session:
Incluir datos del cliente (requerido para suscripciones)
Al crear unCheckout Session con flow: subscription, debes incluir información del cliente. Puedes hacerlo ya sea referenciando un ID de customer existente (customer) o enviando customer_data para crear uno en línea:
Incluir una lista de ítems (requerido para suscripciones)
Al crear unCheckout Session con flow: subscription, debes incluir los ítems a los que se suscribe el cliente. Esta información permite a Fintoc mostrar los ítems en la página de checkout y mostrar solo los métodos de pago disponibles para productos específicos.
Cada ítem en
line_items debe incluir price_data.
Objeto price_data
Objeto product_data
Redirige al cliente para completar el registro
A continuación, redirige al cliente a la página de checkout alojada por Fintoc usando elredirect_url. Después de que el cliente complete el registro, Fintoc lo redirige de vuelta a tu sitio: al success_url en caso de éxito, o al cancel_url si cancela.
Cliente
Maneja los eventos posteriores a la sesión
Una vez que unCheckout Session finaliza, manejas el resultado en tu frontend y completas la suscripción en tu backend. Para tu backend, usas los eventos que Fintoc envía a través de webhooks.
Completa la suscripción en tu backend
Fintoc envía un eventocheckout_session.finished cuando la sesión se completa.
En un flujo de suscripción, este evento incluye información sobre la sesión y referencias a la subscription y al payment_method creados durante el registro.
Prueba tu integración
Para confirmar que tu integración funciona correctamente, puedes simular suscripciones y pagos recurrentes programados sin mover dinero.1) Crea una Checkout Session de suscripción usando credenciales de usuario de prueba
Usando tu Secret Key de modo de prueba, crea unCheckout Session con flow: subscription en tu backend. Luego completa el registro en la página de checkout alojada por Fintoc con las siguientes credenciales:
Credenciales de prueba
- Usuario (RUT):
11.111.111-1 - Contraseña:
jonsnow
2) Maneja pagos programados simulados de la suscripción
En modo de prueba, los pagos programados de la suscripción son simulados para que puedas verificar cómo maneja tu integración el éxito y la falla sin mover dinero. Los manejas a través de los mismos eventosinvoice.* y payment_intent.* descritos en la sección Manage invoices a continuación: un cargo exitoso emite invoice.payment_succeeded y payment_intent.succeeded, y uno fallido emite invoice.payment_failed y payment_intent.failed.
El modo de prueba aún no está disponible para pagos recurrentes en México.
Gestionar invoices
Cuando se crea una suscripción después de un registro exitoso en checkout, Fintoc genera automáticamente unInvoice para cada ciclo de facturación. Una invoice representa el monto que el cliente debe por un período dado. Fintoc intenta cobrar el pago de la invoice usando el método de pago registrado.
Para detalles completos sobre invoices, consulta el Invoice Object.
Invoices en el flujo de suscripción
Después del eventocheckout_session.finished, la suscripción pasa a active y Fintoc crea la primera invoice. A partir de ese momento, debes manejar los siguientes eventos relacionados a invoices junto con los eventos posteriores a la sesión descritos arriba:
Mes 1: Justo después de que se crea la suscripción, Fintoc genera la primera invoice e intenta el pago inmediatamente. Recibirás
invoice.created, seguido de invoice.finalized, luego invoice.payment_succeeded y payment_intent.succeeded en caso de éxito.
Mes 2 en adelante: En cada renovación de ciclo de facturación (basado en el billing_cycle_anchor de la suscripción), Fintoc crea una nueva invoice en estado draft. Después de 1 hora, Fintoc intenta el pago automáticamente. En éxito recibes invoice.payment_succeeded. En falla, invoice.payment_failed.
Recuperar un pago fallido
Cuando un cobro automático falla, Fintoc emiteinvoice.payment_failed. Para recuperar el pago, envía el hosted_invoice_url de la invoice a tu cliente por tu propio canal, como email o WhatsApp. La página alojada permite que tu cliente pague usando los métodos de pago habilitados en la cuenta de tu organización. Un pago exitoso crea un payment_intent en la invoice y salda la deuda. El método de pago inscrito de la suscripción sigue siendo válido, y Fintoc cobra el siguiente ciclo automáticamente.
El hosted_invoice_url queda disponible en el objeto Invoice una vez que la invoice alcanza el estado open. Para más detalles, consulta el Invoice object.
Una invoice acepta solo un pago a la vez. Si abres el
hosted_invoice_url mientras un cobro automático está en curso, la página muestra que hay un pago de invoice en progreso y el enlace de pago queda deshabilitado. Fintoc vuelve a habilitar el enlace de pago si el cobro automático falla.Probar la creación de invoice con estado draft
Para probar una invoice que se crea en estado draft, crea una suscripción con un line item usando el nombre de producto sandbox_draft:
Servidor
Node
Checkout Session:
draft, de modo que puedas editar sus ítems con el endpoint Add Lines antes de que la invoice transicione al siguiente estado.