- 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).
Los endpoints v2 de
Checkout Session requieren la versión de API 2026-02-01 o posterior. Fintoc fija tu cuenta en la versión vigente al momento de tu primera solicitud. Si tu cuenta está fijada en una versión anterior, envía el header Fintoc-Version: 2026-02-01 en las solicitudes de checkout session. Así puedes probarlas sin afectar el resto de tu integración. Consulta Autenticación para más detalles.
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, Fintoc simula los pagos programados de la suscripción para que puedas verificar el manejo del éxito y de la falla sin mover dinero. Los pagos simulados 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, invoice.paid y payment_intent.succeeded. Un cargo 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, invoice.paid 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 e invoice.paid. 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.Cobrar las invoices tú mismo en vez de cobrar automáticamente
Concollection_method en send_invoice, Fintoc deja de hacer cobros automáticos. Fintoc igual emite una invoice por período de facturación, pero cada invoice queda open y tú decides cómo cobrarla. Tienes tres formas de saldar una invoice abierta:
- Enviarle a tu cliente el link de pago que está en
hosted_invoice_urly dejar que pague en la página alojada por Fintoc. - Cobrar la invoice a pedido con Pagar una invoice, usando el payment method asociado a la suscripción.
- Cobrar la plata fuera de Fintoc, por transferencia o en efectivo, y marcar la invoice como pagada. Fintoc lo registra con
external_paymententrue.
send_invoice no requiere payment method. Puedes crear la suscripción con Crear una suscripción sin pasar a tu cliente por un enrolamiento de checkout. Igual puedes asociar un payment method después, lo que te permite cobrar invoices a pedido.
Fintoc no contacta a tu cliente por ningún canal. Contactarlo es tu responsabilidad, cualquiera sea la opción que uses.
Cobrar las invoices tú mismo tiene tres consecuencias:
- Las invoices impagas se acumulan. Cada período de facturación agrega una invoice, y cada una se salda por separado.
- La suscripción nace
active, y eso no significa que tu cliente haya pagado. Consend_invoiceno hay cobro que esperar, así que Fintoc se salta el estadoincompleteque usa concharge_automatically. Sigue elstatusde cada invoice para saber qué te debe tu cliente. - Solo Actualizar una suscripción cambia el modo de cobro. Asociar un payment method no cambia la suscripción a
charge_automatically.
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.