Automatización con IA

Facturación y Seguimiento de Pagos

Automatiza recordatorios de facturas y seguimiento de pagos pendientes

Flujo 09: Facturación y Seguimiento de Pagos

El problema

Las facturas vencidas sin cobrar son el problema de tesorería más común en autónomos y pymes. El ciclo es siempre el mismo: se emite la factura, pasa la fecha de vencimiento, nadie la reclama porque se olvida o "da apuro", y al final algunas facturas se cobran con 60-90 días de retraso. Este flujo implementa una secuencia de recuperación (dunning) de 3 contactos automáticos para facturas impagadas, activada directamente por Stripe cuando detecta un pago fallido.

Herramientas necesarias

Nodo n8n Función
Stripe Trigger Detecta el evento invoice.payment_failed en tiempo real
Set Normaliza los datos de la factura fallida
Gmail Envía el primer email de notificación (día 0)
Wait Pausa 3 días antes del segundo intento
Gmail Envía el segundo email (día 3)
Wait Pausa 4 días más
Gmail Envía el tercer email firme (día 7)
Google Sheets Registra cada evento del dunning para seguimiento

Servicios externos:

  • Cuenta Stripe con Webhook configurado
  • Cuenta Gmail con OAuth2
  • Google Sheets para el log de seguimiento

Configuración paso a paso

Nodo 1: Stripe Trigger

Añade el nodo Stripe Trigger:

  • Credentials: conecta tu cuenta Stripe (API Key en n8n Credentials)
  • Events: selecciona invoice.payment_failed

n8n registra automáticamente el webhook en Stripe. Comprueba en tu dashboard de Stripe (Developers → Webhooks) que aparece la URL de n8n.

Campos disponibles del evento:

{{ $json.customer_email }}          → email del cliente
{{ $json.customer_name }}           → nombre del cliente
{{ $json.amount_due }}              → importe en céntimos (dividir entre 100)
{{ $json.currency }}                → moneda
{{ $json.number }}                  → número de factura
{{ $json.hosted_invoice_url }}      → URL de la factura en Stripe
{{ $json.due_date }}                → fecha de vencimiento (Unix timestamp)
{{ $json.attempt_count }}           → número de intento fallido

Nodo 2: Set — Normalizar datos

Añade un nodo Set para preparar los datos:

  • cliente_nombre: ={{ $json.customer_name || 'Cliente' }}
  • cliente_email: ={{ $json.customer_email }}
  • importe: ={{ ($json.amount_due / 100).toFixed(2) }}
  • moneda: ={{ $json.currency.toUpperCase() }}
  • numero_factura: ={{ $json.number }}
  • url_factura: ={{ $json.hosted_invoice_url }}
  • fecha_vencimiento: ={{ new Date($json.due_date * 1000).toLocaleDateString('es-ES') }}
  • intento: ={{ $json.attempt_count }}

Nodo 3: Google Sheets — Registrar evento inicial

Añade el nodo Google Sheets:

  • Operation: Append Row
  • Sheet: Seguimiento_Pagos
  • Columns:
    • Fecha_Evento: ={{ $now.toISO() }}
    • Numero_Factura: ={{ $json.numero_factura }}
    • Cliente: ={{ $json.cliente_nombre }}
    • Email: ={{ $json.cliente_email }}
    • Importe: ={{ $json.importe }}
    • Intento_Nro: ={{ $json.intento }}
    • Estado: Pago fallido — Dunning iniciado

Nodo 4: Gmail — Email día 0 (notificación inmediata)

Añade el nodo Gmail:

  • To: ={{ $json.cliente_email }}
  • Subject: =Problema con el pago de la factura {{ $json.numero_factura }}
  • Message:
Hola {{ $json.cliente_nombre }},

Hemos detectado un problema al procesar el pago de la factura {{ $json.numero_factura }}
por importe de {{ $json.importe }} {{ $json.moneda }}.

Esto puede ocurrir por fondos insuficientes, tarjeta caducada o un problema
temporal con tu banco. No se trata de un problema de seguridad.

Para resolverlo, accede a tu factura y actualiza el método de pago:
{{ $json.url_factura }}

Si el problema persiste, responde a este email y te ayudamos en menos de 24 horas.

Un saludo,
[Tu nombre]
[EMPRESA]

Nodo 5: Wait — 3 días

Añade el nodo Wait:

  • Wait For: Specific Amount of Time
  • Amount: 3
  • Unit: Days

Nodo 6: Gmail — Email día 3 (recordatorio)

  • Subject: =Recordatorio: Factura {{ $('Set').item.json.numero_factura }} pendiente de pago
  • Message:
Hola {{ $('Set').item.json.cliente_nombre }},

Te escribimos porque la factura {{ $('Set').item.json.numero_factura }}
({{ $('Set').item.json.importe }} {{ $('Set').item.json.moneda }})
sigue pendiente de pago.

Si ya lo has solucionado, ignora este mensaje — el sistema lo detectará automáticamente.
Si no, actualiza tu método de pago aquí:

{{ $('Set').item.json.url_factura }}

¿Necesitas ayuda o quieres aplazar el pago? Responde a este email.

[Tu nombre] — [EMPRESA]

Nodo 7: Google Sheets — Actualizar estado (día 3)

  • Operation: Update Row (busca por Numero_Factura)
  • Actualiza el campo Estado: Recordatorio día 3 enviado

Nodo 8: Wait — 4 días más

  • Amount: 4 días (total acumulado: 7 días desde el evento original)

Nodo 9: Gmail — Email día 7 (aviso firme)

  • Subject: =Último aviso: Factura {{ $('Set').item.json.numero_factura }} — Acción requerida
  • Message:
Estimado/a {{ $('Set').item.json.cliente_nombre }},

Han transcurrido 7 días desde que intentamos procesar el pago
de la factura {{ $('Set').item.json.numero_factura }}
por {{ $('Set').item.json.importe }} {{ $('Set').item.json.moneda }}.

A partir del próximo lunes, el acceso a [TU SERVICIO] quedará suspendido
temporalmente hasta regularizar el pago.

Para evitarlo, actualiza tu método de pago ahora:
{{ $('Set').item.json.url_factura }}

Si necesitas un plan de pago o tienes alguna incidencia excepcional,
contacta con nosotros antes del lunes en admin@tuempresa.com
o llama al [TELÉFONO].

Atentamente,
Departamento de Administración
[EMPRESA]

Nodo 10: Google Sheets — Registrar cierre del dunning

  • Actualiza Estado: Dunning completo — Intervención manual requerida si sigue impagada
  • Añade columna Fecha_Fin_Dunning: ={{ $now.toISO() }}

Ejemplo de prompt IA

Este flujo no requiere IA generativa porque los emails de dunning son más efectivos cuando son directos y no parecen generados por máquina. Sin embargo, puedes añadir un nodo OpenAI para personalizar el primer email según el historial del cliente:

Eres el gestor de cobros de [EMPRESA]. Redacta un email de notificación
de pago fallido para este cliente.

Contexto:
- Cliente: {{ $json.cliente_nombre }}
- Importe: {{ $json.importe }}€
- Número de factura: {{ $json.numero_factura }}
- Es el intento número: {{ $json.intento }}
- Si intento > 1, el tono debe ser más firme pero siempre profesional

Reglas:
- Máximo 100 palabras
- No usar palabras como "desafortunadamente" o "lamentablemente"
- Incluir siempre el enlace: {{ $json.url_factura }}
- Ofrecer ayuda si hay algún problema excepcional

Ahorro estimado

Métrica Antes Con automatización
Seguimiento manual de impagados 2 h/semana 5 min (revisar Sheets)
Emails de recordatorio individuales 3-5 min/factura 0 min
Facturas cobradas en primeros 30 días ~60% ~80-85%
Periodo medio de cobro 35-45 días ~20 días

Ahorro neto: ~1,75 horas/semana + reducción del periodo medio de cobro en 15-20 días. Para una empresa con 20 facturas mensuales a €1.000 de media, reducir el periodo de cobro de 40 a 20 días equivale a €40.000 menos en financiación externa del circulante.