N8n con Stripe pagos es uno de los usos más prácticos de n8n. n8n con Stripe permite automatizar todo el ciclo de vida de los pagos: desde enviar un email cuando se completa un pago hasta gestionar cancelaciones de suscripción y crear facturas personalizadas. En esta guía aprenderás a conectar n8n con Stripe y los casos de uso más habituales.
Configurar la integración n8n — Stripe
API Key de Stripe
- En el Dashboard de Stripe, ve a Developers → API Keys
- Copia la Secret Key (empieza por
sk_live_...en producción osk_test_...para pruebas) - En n8n: Credentials → Stripe API → pega la clave
Importante: Siempre empieza con la clave de test (sk_test_...) para probar los workflows sin hacer cargos reales.
Configurar webhooks de Stripe
Los webhooks son esenciales para reaccionar a eventos de Stripe en tiempo real:
- En Stripe: Developers → Webhooks → Add endpoint
- Endpoint URL: la URL de tu nodo Webhook de n8n
- Events: selecciona los que necesitas (ej:
payment_intent.succeeded,customer.subscription.deleted) - Copia el Webhook Signing Secret (
whsec_...)
En n8n, añade el nodo Stripe Trigger que verifica la firma del webhook automáticamente.
Caso de uso 1: Email de bienvenida tras el pago
Cuando un cliente completa un pago, envía un email de bienvenida con instrucciones:
Stripe Trigger (payment_intent.succeeded)
→ Gmail — Send Email (bienvenida con instrucciones)
→ HubSpot — Create Contact (si no existe)
→ Slack — Notificar al equipo (#ventas)
Configuración del Stripe Trigger:
- Event:
payment_intent.succeeded
Email de bienvenida con datos del cliente:
Asunto: ¡Gracias por tu compra, {{ $json.data.object.shipping.name }}!
Hola {{ $json.data.object.shipping.name }},
Tu pago de {{ ($json.data.object.amount / 100).toFixed(2) }}€ ha sido confirmado.
Número de pedido: {{ $json.data.object.id }}
[Instrucciones de acceso o entrega]
Caso de uso 2: Gestión de suscripciones canceladas
Cuando un cliente cancela su suscripción, actualiza su estado en CRM y envía un email de retención:
Stripe Trigger (customer.subscription.deleted)
→ HubSpot — Update Contact (propiedad "Estado" = "Cancelado")
→ Delay (2 horas)
→ Gmail — Email de retención con oferta
→ Slack — Alerta al equipo de Customer Success
Email de retención:
Asunto: Lamentamos que te vayas, [nombre]
Hemos procesado tu cancelación, pero queremos darte una oportunidad más.
Como cliente valioso, te ofrecemos un 30% de descuento durante 3 meses
si reactivas tu cuenta en las próximas 48 horas.
[Enlace de reactivación con cupón]
Caso de uso 3: Factura personalizada en PDF
Stripe genera facturas pero a veces necesitas un formato personalizado con tu logo y datos fiscales:
Stripe Trigger (invoice.payment_succeeded)
→ HTTP Request (obtener detalles del cliente desde Stripe)
→ Code (generar HTML de la factura)
→ HTTP Request (PDF.co o similar para convertir HTML a PDF)
→ Gmail — Enviar factura al cliente
→ Google Drive — Guardar copia
Estructura del HTML de factura:
// Nodo Code: genera el HTML
const invoice = $input.first().json.data.object;
const html = `
<html>
<body>
<h1>FACTURA #${invoice.number}</h1>
<p>Fecha: ${new Date(invoice.created * 1000).toLocaleDateString('es-ES')}</p>
<p>Cliente: ${invoice.customer_email}</p>
<table>
${invoice.lines.data.map(line => `
<tr>
<td>${line.description}</td>
<td>${(line.amount / 100).toFixed(2)}€</td>
</tr>
`).join('')}
</table>
<p><strong>Total: ${(invoice.amount_paid / 100).toFixed(2)}€</strong></p>
</body>
</html>`;
return [{ html }];
Caso de uso 4: Reporte semanal de ingresos
Cada lunes, genera un resumen de los ingresos de la semana anterior:
Schedule Trigger (lunes 8:00) →
- Stripe — List Charges (filtrado por fecha de la última semana)
- Code — suma y agrupa los datos
- Slack o Gmail — envía el resumen al equipo directivo
Nodo Code para el resumen:
const charges = $input.all();
const total = charges.reduce((sum, c) => sum + c.json.amount, 0) / 100;
const count = charges.length;
const avgTicket = count > 0 ? (total / count).toFixed(2) : 0;
return [{
total_ingresos: total.toFixed(2),
numero_pagos: count,
ticket_medio: avgTicket
}];
Caso de uso 5: Reintento de pagos fallidos
Cuando un pago falla, intenta cobrarlo de nuevo y notifica al cliente:
Stripe Trigger (payment_intent.payment_failed)
→ Gmail — Aviso al cliente (actualiza método de pago)
→ Delay (24 horas)
→ Stripe — Confirm PaymentIntent (intento de reintento)
→ IF (éxito) → Email de confirmación
→ IF (fallo) → Slack — Alerta para gestión manual
Datos útiles de los webhooks de Stripe
Los eventos de Stripe tienen una estructura consistente:
$json.data.object— el objeto afectado (pago, suscripción, etc.)$json.data.object.customer— ID del cliente de Stripe$json.data.object.amount— importe en centavos (dividir entre 100 para euros)$json.data.object.metadata— metadatos personalizados que puedas haber añadido
Conclusión
La integración n8n con Stripe automatiza el proceso post-pago completo: emails de bienvenida, facturas personalizadas, gestión de cancelaciones y reportes financieros. Al conectar Stripe con tu CRM, herramientas de comunicación y sistemas internos a través de n8n, cada evento de pago desencadena las acciones correctas sin intervención manual.


