Skip to content
Automation Squad
StGGSMade to order

Invoicing, payments & bookkeeping

Stripe failed payment → customer email from Gmail + retry log in Sheets

Every failed card gets a personal payment-link email and a row in your log.

Stripe retries a failed card on its own schedule, and the customer hears about it only if you switched Stripe's emails on. Here each failed attempt sends a note from your Gmail within a minute, with the amount and the hosted payment link, and writes a row to a Google Sheet. Once Stripe gives up retrying, you get an email naming the customer and what is still owed.

How it works

  1. St

    Trigger

    invoice.payment_failed webhook event (subscription or sent invoice, any attempt)

    Stripe

  2. if

    Step 1

    Read the attempt and pick the stage

    Invoice number, amount due, currency, customer email, attempt count and next retry date come off the event. Attempt one gets the soft note; an attempt with no next retry date is the final stage.

  3. G

    Step 2

    Email the customer from your own inbox

    A plain-text email goes to the invoice's customer email with the amount, the invoice number and Stripe's hosted payment link. It sends from your Gmail, so replies come back to you.

  4. GS

    Step 3

    Append the attempt to the log

    One row per attempt: date, customer, invoice number, amount, currency, attempt number, next retry date, the Stripe event ID and whether the email went out.

  5. G

    Step 4

    Escalate once Stripe stops retrying

    On the final attempt a second email goes to the address you set, naming the customer, the amount still owed and a direct link to the invoice in the Stripe dashboard.

What changes once it runs

  • The customer has a payment link in their inbox within a minute of the card failing.
  • Every attempt sits in one sheet, so who is on a second or third failure is one glance away.
  • Stripe's last retry sends you an email, not a silent lapse.
  • Replies land in your Gmail thread rather than at a Stripe no-reply address.

What you get

  • n8n workflow export with the Stripe trigger already scoped to invoice.payment_failed
  • Two email templates, first attempt and final attempt, as editable text
  • The Google Sheet with headers and a sample row
  • A written setup guide covering the Stripe webhook signing secret and the Gmail connection
  • Screen recording of a test failure using one of Stripe's test cards

Before you start

  • Stripe account with Billing (subscriptions or invoicing) in use
  • Gmail or Google Workspace mailbox to send from
  • A Google Sheet with the header row from the package (one copy is included)
  • n8n Cloud, or self-hosted n8n on a public URL so Stripe can reach the webhook

Built for

Questions before you buy

Stripe already sends failed-payment emails. Why add this?
Stripe's emails are optional, come from a Stripe address and give you little say over the wording. This one sends from your mailbox in your words, keeps a log you own, and tells you when retries have run out. Turn Stripe's own failed-payment emails off in Billing settings once this is live, or the customer gets both.
Does it cover one-off card payments, not just subscriptions?
Out of the box it listens for invoice.payment_failed, which covers subscriptions and invoices you send from Stripe. One-off Checkout charges raise payment_intent.payment_failed instead. The setup guide shows the two-line change to listen for both.
What happens if the Gmail send fails?
The row still gets written, with the email column marked failed, and the execution sits in n8n's error list for you to re-run from the dashboard. n8n answers Stripe the moment the event arrives, so Stripe does not resend it; a second email only goes out if you choose to re-run.
Can I run it on Make instead of n8n?
Yes. Make's Stripe app has a Watch Events module you point at invoice.payment_failed, and a Router carries the final-attempt branch. Zapier is not offered for this one; we have not tested its Stripe trigger against the invoice fields the stage logic needs. The n8n export is the version we test.

Nearby on the shelf

Whole catalog