Home › Products › Failed Payment Dunning (for Stripe), n8n pack
Failed Payment Dunning (for Stripe), n8n pack
Find out the moment a subscription payment fails, and win it back. Import one n8n workflow.
It verifies Stripe's signature, replies straight away, skips duplicate events and posts a Slack alert with the amount, attempt number and next retry. It can also email the customer a friendly notice with Stripe's hosted pay link; that email becomes a "Final notice" only when Stripe has no retry left. A "Recovered" alert is posted when the payment goes through.
It works alongside Stripe's own retries; it doesn't replace them.
Who it's for
SaaS founders and ops people on self-hosted n8n.
What's tested
- 21 static checks of the workflow file, all passing
- 22 end-to-end checks, all passing: the workflow was imported into a real local n8n 2.43.7 and sent signed sample events
- Checked: bad, tampered and stale signatures rejected; duplicates skipped; Slack and email content; "Final notice" only when no retry is left; recovered alerts
What isn't tested
- Slack and email were mocked (a local HTTP server and a local SMTP sink); real Slack, real email providers and live Stripe deliveries were not used
- Not tested on n8n Cloud, n8n 1.x, or n8n's external task-runner mode
- The Stripe Dashboard steps in SETUP.md are written from Stripe's docs
What's in the download
- workflow/failed-payment-dunning.json: import this into n8n
- SETUP.md: step-by-step setup
- test-data/: 5 sample Stripe events
- tests/: validator and end-to-end harness
- TEST-REPORT.md, LICENSE.txt, REFUND.txt
Requirements
Self-hosted n8n only (tested on n8n 2.43.7, Node 24). Needs the environment variable NODE_FUNCTION_ALLOW_BUILTIN=crypto (see SETUP.md, including the task-runner note). A Slack incoming-webhook URL; SMTP credentials only if you email customers. Setup typically takes 15–30 minutes (an estimate).
How to use it
In n8n, choose Workflows > Import from File and pick workflow/failed-payment-dunning.json, then follow SETUP.md.