Skip to main content
Cuando el método de pago de un cliente falla, o cuando el cliente quiere cambiarlo, puedes actualizar el método de pago asociado a una suscripción. La actualización afecta solo los ciclos de facturación futuros. No cobra las invoices abiertas. Cobra las invoices abiertas por separado usando el hosted_invoice_url de cada una, uno por invoice. Hay dos flujos para actualizar el método de pago de una suscripción:
  • Caso A (iniciado por el usuario): Envíale al cliente un nuevo link de enrolamiento. Úsalo cuando el cliente tiene que autorizar un nuevo mandato de Pago Automático de Cuentas (PAC) o ingresar los datos de una nueva tarjeta.
  • Caso B (iniciado por el comercio): Asocia un método de pago que ya está activo directamente por la API, sin interacción del cliente.
Crea un CheckoutSession con flow: "setup" y envía el ID de la suscripción existente en subscription. El cliente abre el link y enrola un nuevo método de pago. Para tarjetas, Fintoc asocia el método de pago a la suscripción cuando termina el enrolamiento. Para PAC, Fintoc asocia el método de pago cuando el mandato se activa. Servidor
Node
Fintoc responde con el objeto CheckoutSession:
Redirige al cliente al redirect_url para que complete el enrolamiento.

Ventana de activación del PAC

Para PAC, la confirmación del banco toma aproximadamente 5 días hábiles. El nuevo método de pago queda en estado pending durante esa ventana, y Fintoc todavía no ejecutó el cambio. checkout_session.finished indica que el cliente completó el flujo de enrolamiento, no que el cambio ocurrió. Espera el subscription.payment_method_updated antes de tratar el nuevo método de pago como activo. Para revisar el estado de activación mientras el mandato está pendiente, llama a GET /v2/payment_methods/{id} y lee pac.status:

Maneja los eventos de reenrolamiento

Suscríbete a los siguientes eventos cuando actualizas el método de pago de una suscripción con un link de reenrolamiento:

Caso B: Asociar un método de pago existente

Si el cliente ya tiene un método de pago activo registrado, asócialo a una suscripción directamente, sin un nuevo link de enrolamiento.

Cambia el método de pago de una suscripción existente

Llama a PATCH /v2/subscriptions/{id} con el ID del método de pago activo. El método de pago debe pertenecer al mismo customer que la suscripción. Servidor
Node
Fintoc devuelve la Subscription actualizada:
El mandato del método de pago ya está activo, así que el cambio es inmediato. El valor de payment_method en la respuesta apunta al nuevo método de pago. Fintoc también emite subscription.payment_method_updated.

Crear una suscripción nueva con un método de pago existente

Crear una suscripción contra un método de pago que el cliente ya tiene no es una actualización, así que vive con el resto de la creación de suscripciones. Envía el payment_method a Crear una suscripción, como se describe en Cobra automáticamente contra un método de pago.

Actualizar el método de pago de una suscripción no paga las invoices abiertas

Actualizar el método de pago cambia qué método cobra Fintoc en los ciclos de facturación futuros. No paga las invoices abiertas de ciclos anteriores. Si la suscripción tiene invoices abiertas cuando ocurre el cambio, cóbralas por separado usando el hosted_invoice_url de cada una, uno por invoice.

Casos borde

Una actualización a la vez: Solo puede haber una actualización de método de pago en curso por suscripción. Un segundo intento mientras un mandato PAC está pending devuelve un error payment_method_update_in_progress (409 Conflict). Ciclo de facturación durante la ventana de activación: Si un ancla de ciclo de facturación cae mientras un nuevo mandato PAC todavía está pending, Fintoc crea la invoice en estado open sin cobro automático. Cobra la invoice usando su hosted_invoice_url. Cancelación durante la activación: Si cancelas la suscripción mientras un mandato PAC espera la confirmación del banco, el cambio no se ejecuta. Fintoc crea y guarda el nuevo método de pago en el registro del cliente, pero no lo asocia a ninguna suscripción.

Prueba tu integración

Usando tu Secret Key de modo de prueba, ejecuta los dos flujos contra una suscripción de prueba sin mover dinero. Crea el Checkout Session de setup con el subscription de una suscripción de prueba existente, y completa el enrolamiento en la página alojada por Fintoc con las credenciales de prueba que están en Guardar un método de pago para cobros futuros. Verifica que:
  • Recibas el checkout_session.finished, con el ID del nuevo payment_method.
  • Recibas el subscription.payment_method_updated, y que tu integración trate el nuevo método de pago como activo solo después de ese evento.
  • Obtener una suscripción reporte el nuevo payment_method.
No des el cambio por hecho solo con el checkout_session.finished. Esa es la falla que describe la ventana de activación del PAC.

2) Prueba el cambio por API

Enrola un segundo método de pago para el mismo customer de prueba y cámbialo con Actualizar una suscripción. Verifica que:
  • La respuesta reporte el nuevo payment_method y mantenga la suscripción active.
  • Recibas el subscription.payment_method_updated.
  • Un segundo cambio mientras otro está en curso devuelva payment_method_update_in_progress con 409 Conflict.