Every time a customer pays you, something should happen automatically: your team gets notified, your CRM updates, an invoice goes out, your spreadsheet logs the revenue. Instead, most small businesses do each of these steps by hand, which takes time and introduces errors.

N8N's Stripe integration fixes that. In this tutorial, you'll learn how to connect Stripe to N8N and build four practical workflows that run without you touching them. No code required beyond copy-paste configuration.

If you're new to N8N, start with how to build your first N8N workflow before following this guide. If you already use webhooks, the N8N webhook tutorial explains the underlying mechanics that power Stripe triggers.

What You Can Automate with N8N and Stripe

Stripe fires a webhook event for virtually every action that happens in your account: a charge succeeds, a subscription renews, an invoice fails, a customer cancels. N8N can listen to any of these events and respond with whatever logic you define.

Here are the four workflows this guide covers:

  1. New payment alert — Notify your team on Slack the moment a payment succeeds
  2. Failed payment recovery — Email the customer automatically when a payment fails
  3. CRM sync — Create or update a contact in HubSpot or Airtable when a new customer pays
  4. Weekly revenue report — Pull Stripe charges every Monday and log them to Google Sheets

Each workflow is independent. Build one, test it, then add the others as you get comfortable with the pattern.

Step 1: Connect Stripe to N8N

Get a Stripe API key

Log into your Stripe dashboard. Go to Developers > API keys. Create a restricted key with only the permissions your workflows need. For read-only reporting, grant read access to charges, customers, and subscriptions. For workflows that update customer data, also grant write access to customers.

Using a restricted key limits the blast radius if credentials are ever exposed. Never use your secret key for automation workflows.

Add credentials in N8N

  1. In N8N, go to Settings > Credentials > New
  2. Search for "Stripe" and select the Stripe credential type
  3. Paste your restricted API key and save
  4. N8N will test the connection and confirm it's working

Your Stripe credentials are now available to any node in any workflow. You set them up once and reference them throughout.

Workflow 1: New Payment Alert to Slack

This is the most common Stripe workflow and the fastest to build. When a payment succeeds in Stripe, your team gets a Slack message with the customer name and amount. No more checking the Stripe dashboard to see if overnight revenue came in.

Build the workflow

  1. Create a new workflow in N8N
  2. Add a Stripe Trigger node as the first step. Set the event to payment_intent.succeeded
  3. N8N will give you a webhook URL. Copy it
  4. In Stripe, go to Developers > Webhooks > Add endpoint. Paste the N8N URL and select the payment_intent.succeeded event
  5. Back in N8N, add a Slack node after the trigger
  6. Configure the Slack message to include {{ $json.data.object.amount / 100 }} for the amount and {{ $json.data.object.receipt_email }} for the customer email

Test it by creating a test payment in Stripe using a test card. The Slack message should appear within seconds.

The N8N Slack integration guide covers formatting options in more detail if you want to include things like customer name, plan, or a link back to the Stripe dashboard record.

Workflow 2: Failed Payment Recovery Email

Failed payments are silent revenue killers. Stripe retries automatically on a schedule, but the customer often doesn't know their card declined until they notice a service interruption. A proactive email sent within minutes of failure recovers far more revenue than a retry alone.

Build the workflow

  1. Create a new workflow with a Stripe Trigger node set to invoice.payment_failed
  2. Add an IF node to check {{ $json.data.object.attempt_count }}. If it equals 1 (first failure), send an urgent "card declined" email. If it equals 2 or more, send a different message about account suspension risk
  3. Add an Email (SMTP) or Gmail node for each branch. Write a plain, direct subject line like "Action required: payment for [product] didn't go through"
  4. Include a direct link to Stripe's hosted invoice page so the customer can update their card without creating a support ticket: {{ $json.data.object.hosted_invoice_url }}

Keep the email short. The customer needs one thing: a link to fix their payment. Everything else is noise.

Add a Slack notification for your team

In the same workflow, add a parallel Slack branch so your team also knows about the failure. High-value customers may warrant a personal outreach from your sales team rather than a generic email.

Revenue impact: For one client, automating failed payment emails at the first retry attempt recovered 34% of initially failed subscription charges in the same billing cycle, compared to 11% from Stripe's automatic retries alone.

Workflow 3: CRM Sync on New Customer

When someone pays you for the first time, they should immediately appear in your CRM with the right tags, deal stage, and contact details. Doing this manually means delays, missed contacts, and inconsistent data.

Build the workflow

  1. Create a workflow with a Stripe Trigger set to checkout.session.completed
  2. Add a HubSpot node (or Airtable, Pipedrive, etc.) in "Upsert Contact" mode
  3. Map the Stripe fields to CRM fields:
    • customer_details.email → Contact email
    • customer_details.name → Contact name
    • amount_total / 100 → Deal value
    • metadata.plan → Product or plan name (if you set Stripe metadata)
  4. After the CRM upsert, add a Set node to tag the contact as "Paid Customer" and set the deal stage to "Closed Won"

If you use Airtable as a lightweight CRM, the N8N Airtable integration guide walks through the exact record-creation syntax for this kind of trigger.

Workflow 4: Weekly Revenue Report to Google Sheets

Finance and operations teams need a consistent view of what came in each week. Rather than logging into Stripe and manually exporting, you can have N8N pull the data every Monday morning and append it to a Google Sheet automatically.

Build the workflow

  1. Create a workflow with a Schedule Trigger set to run every Monday at 8:00 AM
  2. Add a Stripe node set to "Get Many" on the Charges resource. Filter by created[gte] set to the start of the previous week using an expression: {{ Math.floor(new Date(new Date().setDate(new Date().getDate() - 7)).setHours(0,0,0,0) / 1000) }}
  3. Add a Split In Batches node to handle large result sets
  4. Add a Google Sheets node to append each charge as a row: date, amount, customer email, description, status

The N8N Google Sheets integration guide and the N8N scheduled triggers tutorial cover the exact node configurations for these steps if you want more detail.

Manual vs. Automated: What the Time Adds Up To

Task Manual time per week With N8N + Stripe Time saved
New payment notifications Check Stripe 3-4x daily Instant Slack alert ~2 hrs/week
Failed payment follow-up emails 15-20 min per failure Automated within 60 seconds ~3 hrs/week for 10 failures
CRM contact creation 5-10 min per new customer Real-time, zero manual steps ~4 hrs/week for 25 customers
Weekly revenue report 30-45 min every Monday Delivered before you start work ~45 min/week

Across a team of three to five people, that's 8-10 hours per week reclaimed. For businesses processing higher payment volumes, the numbers grow proportionally.

Curious what this translates to in dollar terms for your business? Use the automation ROI calculator to run the math against your own numbers.

Security Best Practices for Stripe Webhooks in N8N

Stripe signs every webhook request with a secret so you can verify it actually came from Stripe. N8N's Stripe Trigger node handles signature verification automatically when you add your webhook signing secret. Here's how to set it up properly:

  1. In Stripe under Developers > Webhooks, click your endpoint and find the "Signing secret" field. Reveal it and copy it
  2. In N8N, edit your Stripe credentials and paste the signing secret into the "Webhook Secret" field
  3. N8N will now reject any webhook request that doesn't match the signature. Spoofed or replayed requests won't trigger your workflow

Use a restricted API key (not your secret key) for all read and write operations. Rotate API keys if any are exposed. Keep your N8N instance behind authentication, especially if self-hosted.

Common Issues and How to Fix Them

Webhook not firing

Make sure the Stripe endpoint is registered and the event type matches exactly. Stripe uses dot notation (payment_intent.succeeded), and the event selected in your N8N trigger must match. Also check that your N8N workflow is active, not in draft mode.

Amounts showing as integers

Stripe stores all amounts in the smallest currency unit (cents for USD). Always divide by 100 in your N8N expressions: {{ $json.data.object.amount / 100 }} before displaying or logging.

Missing customer data

The payment_intent.succeeded event doesn't always include customer email directly. For checkout flows, use checkout.session.completed instead, which includes customer_details.email and customer_details.name. For subscription renewals, use invoice.paid and retrieve the customer object separately with a second Stripe node.

Workflow errors on N8N error handling

Review the N8N error handling best practices guide for setting up retry logic and error alerts so your Stripe workflows don't silently fail during edge cases.

What to Build Next

Once these four workflows are running, you have a solid foundation. Here's where teams typically go next:

If you want to see how payment and operations automation has delivered measurable results, the Le Marquier case study is a concrete example. Their team reduced operational costs by 80% and reached a 98% AI handling rate across customer interactions, freeing up staff to focus on growth rather than administrative work.

Not sure whether your business is ready to go further with automation? The AI readiness assessment gives you a structured answer in about five minutes.

If you'd rather have someone build and maintain these workflows for you, our N8N automation service covers design, implementation, and ongoing monitoring for SMBs that want automation without the setup overhead.

Frequently Asked Questions

Does N8N have a native Stripe node?

Yes. N8N includes a built-in Stripe node that supports customers, charges, subscriptions, invoices, payment intents, and more. You can also use the HTTP Request node alongside Stripe webhooks for event-driven workflows not covered by the native node.

How do I trigger an N8N workflow when a Stripe payment fails?

Use N8N's Stripe Trigger node and select the payment_intent.payment_failed or invoice.payment_failed event. When Stripe fires that webhook, your N8N workflow starts automatically and can send the customer a retry email, notify your team on Slack, and log the failure to a spreadsheet.

Can N8N sync Stripe customers to my CRM automatically?

Yes. Use the Stripe Trigger node listening for customer.created or checkout.session.completed events, then pipe that data into HubSpot, Pipedrive, Airtable, or any CRM with an N8N node or HTTP Request. The sync runs in real time, within seconds of the payment.

Is it safe to connect Stripe to N8N?

Yes, when set up correctly. Use a restricted Stripe API key with only the permissions your workflow needs (read-only for reporting, write for customer updates). If you self-host N8N, your API credentials never leave your server. Always validate Stripe webhook signatures in your trigger node to reject spoofed requests.

What Stripe events can N8N listen to?

N8N's Stripe Trigger node supports all standard Stripe webhook events including payment_intent.succeeded, payment_intent.payment_failed, customer.subscription.created, customer.subscription.deleted, invoice.paid, invoice.payment_failed, checkout.session.completed, and more.

Ready to Get Started?

Book a free 30-minute discovery call. We'll identify your biggest opportunities and show you exactly what AI automation can do for your business.

Book a Free Discovery Call

Suyash Raj
Suyash Raj Founder of rajsuyash.com, an AI automation agency helping SMBs save time and scale with AI agents, N8N workflows, and voice automation.