payment_method se puede cobrar solo cuando el mandato es aprobado.
Puedes enrolar un payment method de dos maneras:
- Por API (merchant-hosted): recolectas los datos de la cuenta y los documentos de consentimiento de tu cliente en tu propia UI y los envías a Fintoc en una única request.
- A través del checkout hosteado por Fintoc: creas un Checkout Session y rediriges a tu cliente, y Fintoc se encarga del flujo completo de enrolación, incluyendo la validación de identidad y el documento de mandato.
- Crear un Customer, usando tu Secret Key
- Enrolar el payment method, por API o a través de un Checkout Session
- Manejar los eventos de aprobación del mandato a través de webhooks
- Cobrar la cuenta enrolada, con invoices de suscripción o charges on-demand
Antes de empezar
Direct Debit está disponible para organizaciones que operan en México. Antes de integrar, asegúrate de tener:- Una cuenta Fintoc con Direct Debit México habilitado
- Una Secret Key y Public Key
- Un endpoint de webhooks para recibir los eventos de mandato y pagos
MXN.
Cómo funciona el mandato
Cada enrolación crea un mandato: la autorización del cliente para que cobres su cuenta. El mandato define:
Fintoc valida el límite del mandato en cada cobro. Si un cobro excedería el
max_amount del período actual, Fintoc rechaza el cobro con limit_exceeded antes de que llegue al banco del cliente.
Paso 1: Crear un Customer
Cada payment method de Direct Debit pertenece a unCustomer. Para Direct Debit, el customer necesita un nombre completo, un email y un tax ID mexicano (mx_rfc).
Customer creado. Guarda su id para enrolar un payment_method para él en el siguiente paso.
Paso 2, Opción 1: Enrolar por API (merchant-hosted)
Usa esta opción cuando recolectas los datos de la cuenta y los documentos de consentimiento en tu propia UI. Envía los datos de la cuenta, el límite autorizado del mandato y cuatro documentos de consentimiento como archivos en una única requestmultipart/form-data:
Fintoc devuelve el
payment_method creado con el mandato ya en revisión. Revisa la referencia de Crear un payment method para ver todos los parámetros y errores del endpoint.
La request es atómica. Si falta un documento o un archivo tiene un formato o tamaño inválido, Fintoc devuelve 422 Unprocessable Entity y no crea ningún payment_method.
Paso 2, Opción 2: Enrolar a través del checkout hosteado por Fintoc
Usa esta opción para dejar que Fintoc maneje el flujo completo de enrolación. Tu cliente completa sus datos personales, ingresa su CLABE o tarjeta de débito, autoriza el mandato y completa la validación de identidad en la página hosteada por Fintoc. Fintoc genera el documento de mandato firmado por ti. El checkout hosteado admite dos flujos:flow: subscriptionenrola el payment method y empieza una suscripción recurrente en un solo paso. Fintoc programa y cobra los invoices de cada ciclo de facturación automáticamente.flow: setupsolo enrola el payment method, sin cobros programados. Úsalo cuando quieras guardar la cuenta y decidir después cuándo y cuánto cobrar (invoices on-demand, ver Paso 4).
Checkout Session con flow: subscription para enrolar y empezar una suscripción recurrente en un solo paso:
Checkout Session creado. Usa su redirect_url para enviar a tu cliente al checkout hosteado.
Con flow configurado como subscription, Fintoc deriva el max_amount y el interval del mandato a partir de line_items: unit_amount multiplicado por quantity, y recurring.interval.
Para crear el payment method sin cobros programados, configura flow como setup. Las sesiones setup no tienen line_items para definir el monto máximo, pero puedes enviar el límite del mandato en payment_method_options.
Si omites payment_method_options, Fintoc crea el mandato con un límite predeterminado de MXN 10.000 por mes (max_amount: 1000000, interval: "month").
redirect_url de la sesión. En la página hosteada, el cliente completa cinco pasos:
- Datos personales: nombre, número del Registro Federal de Contribuyentes (RFC) y email, precargados desde
customer_data. - Enrolación de la cuenta: CLABE o tarjeta de débito.
- Autorización del mandato: documento completo del mandato.
- Validación de identidad: selfie e INE.
- Confirmación.
Después de que el checkout termina, la enrolación no está completa: el mandato queda en revisión y
mx_direct_debit.status sigue en pending. No actives el servicio de tu cliente hasta recibir payment_method.activated.Paso 3: Manejar los eventos de aprobación del mandato
Fintoc revisa el mandato de forma asíncrona y envía la aprobación aproximadamente un día hábil después de la enrolación. Usa siempre webhooks para monitorear el resultado:
Cuando el mandato es aprobado para un flujo
subscription, la suscripción pasa a active y Fintoc genera y cobra el primer invoice automáticamente.
Paso 4: Cobrar la cuenta enrolada
Conmx_direct_debit.status en active, puedes cobrar el payment_method de dos maneras:
- Suscripción: Fintoc genera un
invoicepor cada ciclo de facturación y cobra el invoice automáticamente contra la cuenta enrolada. Maneja los eventosinvoice.payment_succeededeinvoice.payment_failed. - On-demand: creas un
invoicepuntual asociado al payment method.
invoice creado en su estado inicial draft. Una vez que finalizas el invoice, Fintoc lo cobra automáticamente contra default_payment_method. Monitorea el resultado con invoice.payment_succeeded o invoice.payment_failed (enviados junto con payment_intent.succeeded o payment_intent.failed).
Validación del límite del mandato. Antes de que Fintoc ejecute un cobro, Fintoc suma el monto del cobro con cualquier monto ya cobrado o en curso del período actual. Luego Fintoc compara ese total contra el
max_amount del mandato. Fintoc rechaza los cobros que exceden el límite con 422 limit_exceeded antes de que el cobro llegue al banco del cliente. Los cobros fallidos no consumen el límite. El uso se resetea al inicio de cada período.Reglas y validaciones
Usa estos errores de validación para manejar fallas específicas de Direct Debit:Prueba tu integración
Usando tu Secret Key en modotest, puedes simular el flujo completo de Direct Debit sin mover dinero. En modo test, Fintoc aprueba o rechaza el mandato en aproximadamente 1 minuto en lugar de un día hábil. Un mandato creado con una CLABE terminada en 8888 nunca recibe confirmación del banco, y Fintoc expira el mandato a los 7 días.
CLABE (18 dígitos). Solo los últimos cuatro dígitos actúan como gatillo. Los ejemplos usan Santander, y cualquier banco soportado se comporta de la misma manera:
Para obtener un mandato aprobado, usa cualquier CLABE que no termine en uno de esos gatillos, como
014180000000014821.
Tarjeta de débito (16 dígitos). El número de tarjeta controla el resultado del mandato:
Charges. El monto controla el resultado, y el resultado llega por webhook 5 a 15 minutos después del cobro:
En modo
live la validación de identidad es real y puede rechazar a tu cliente. Asegúrate de que tu integración maneje el estado pending y el evento payment_method.canceled antes de pasar a producción.