Skip to main content
Direct Debit en México (domiciliación bancaria) te permite cobrar automáticamente las cuentas bancarias y tarjetas de débito de tus clientes. El cliente autoriza un mandato una sola vez. Después de que Fintoc aprueba el mandato, puedes cobrar la cuenta de forma recurrente o on-demand sin más acciones por parte del cliente. A diferencia de otros métodos de pago, Direct Debit tiene un paso de aprobación asíncrono: después de la enrolación, el mandato queda en revisión durante aproximadamente un día hábil. El payment_method se puede cobrar solo cuando el mandato es aprobado. Puedes enrolar un payment method de dos maneras:
  1. 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.
  2. 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.
Aceptar pagos por Direct Debit toma cuatro pasos:
  1. Crear un Customer, usando tu Secret Key
  2. Enrolar el payment method, por API o a través de un Checkout Session
  3. Manejar los eventos de aprobación del mandato a través de webhooks
  4. 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
Todas las operaciones de Direct Debit usan 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 un Customer. Para Direct Debit, el customer necesita un nombre completo, un email y un tax ID mexicano (mx_rfc).
Fintoc devuelve el 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 request multipart/form-data:
La request de enrolación merchant-hosted acepta estos parámetros: 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.
Un payment_method no se puede editar después de creado. Si los documentos de consentimiento son rechazados o están incompletos, Fintoc cancela el método (payment_method.canceled) y debes crear un nuevo payment_method con los documentos corregidos.

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: subscription enrola 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: setup solo 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).
Crea un Checkout Session con flow: subscription para enrolar y empezar una suscripción recurrente en un solo paso:
Fintoc devuelve el 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").
Redirige a tu cliente al redirect_url de la sesión. En la página hosteada, el cliente completa cinco pasos:
  1. Datos personales: nombre, número del Registro Federal de Contribuyentes (RFC) y email, precargados desde customer_data.
  2. Enrolación de la cuenta: CLABE o tarjeta de débito.
  3. Autorización del mandato: documento completo del mandato.
  4. Validación de identidad: selfie e INE.
  5. 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

Con mx_direct_debit.status en active, puedes cobrar el payment_method de dos maneras:
  • Suscripción: Fintoc genera un invoice por cada ciclo de facturación y cobra el invoice automáticamente contra la cuenta enrolada. Maneja los eventos invoice.payment_succeeded e invoice.payment_failed.
  • On-demand: creas un invoice puntual asociado al payment method.
Fintoc devuelve el 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 modo test, 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.