

How to create failed payment alerts with Pipedream
When a Stripe payment fails, automatically create a follow-up task in QuickBooks and send a notification to your finance team.
Steps and UI details are based on platform versions at time of writing — check each platform for the latest interface.
Best for
Finance teams processing 50+ failed payments monthly who need immediate task creation and team alerts
Not ideal for
Teams wanting batch processing or complex approval workflows should use n8n instead
Sync type
real-timeUse case type
notificationReal-World Example
A 12-person e-commerce company processes 200 failed payments monthly. Before automation, finance manually created QuickBooks tasks 2-3 times daily, missing urgent retries for 4-6 hours. Now failed payments trigger instant QuickBooks tasks with customer details and notify the #finance Slack channel within 30 seconds.
What Will This Cost?
Drag the slider to your expected monthly volume.
Each platform counts differently — Zapier: 1 task per trigger. Make: 1 operation per module per record. n8n: 1 execution per run.





Prices shown for annual billing. Based on published pricing as of April 2026.
Estimated ROI
1000
min saved/mo
$583
labor value/mo
Free
no platform cost
Based on ~2 min manual effort per operation at $35/hr fully loaded labor cost.
Implementation
Import this workflow directly into Pipedream
Copy the pre-built Pipedream blueprint and paste it straight into Pipedream. All modules, filters, and field mappings are already configured — you just need to connect your accounts.
Before You Start
Make sure you have everything ready.
Field Mapping
Map these fields between your apps.
| Field | API Name | |
|---|---|---|
| Required | ||
| Customer Email | ||
| Failed Amount | ||
| Failure Reason | ||
| Invoice Number | ||
3 optional fields▸ show
| Attempt Count | |
| Customer Name | |
| Payment Method Type |
Step-by-Step Setup
Workflows > New Workflow
Create new workflow in Pipedream
Navigate to pipedream.com and click New Workflow in the top right. You'll see the workflow builder interface with an empty trigger step. Click on the trigger step to configure it. This opens the source selection panel where you'll choose your Stripe webhook trigger.
- 1Click 'New Workflow' button in dashboard
- 2Click on the empty trigger step
- 3Search for 'Stripe' in the sources panel
- 4Select 'Stripe - New Event (Instant)'
Trigger Step > Configure Source
Configure Stripe webhook for payment failures
Select the 'invoice.payment_failed' event type from the dropdown. This specifically catches failed payment attempts on invoices. Connect your Stripe account through the authentication panel. Pipedream will automatically create the webhook endpoint in your Stripe dashboard pointing to your workflow URL.
- 1Click 'Connect Account' and authenticate with Stripe
- 2Select 'invoice.payment_failed' from event types
- 3Click 'Save and Continue'
- 4Copy the generated webhook URL
Workflow > Add Step > QuickBooks
Add QuickBooks connection step
Click the plus icon below your trigger to add a new step. Search for QuickBooks and select the 'Create Item' action. This lets you create tasks, which QuickBooks treats as to-do items. You'll need to authenticate with your QuickBooks company file during this step.
- 1Click the '+' icon to add new step
- 2Search 'QuickBooks' in the actions panel
- 3Select 'QuickBooks - Create Item'
- 4Click 'Connect Account' and complete OAuth
QuickBooks Step > Configuration
Configure QuickBooks task creation
Set the Item Type to 'Service' to create a task item. In the Name field, use dynamic data from the Stripe webhook like customer name and invoice number. Set the Description field to include failure reason and amount. The Active field should be set to true so the task appears in your QuickBooks to-do list.
- 1Set 'Type' dropdown to 'Service'
- 2Click 'Name' field and select Stripe customer data
- 3Add invoice details to 'Description' field
- 4Set 'Active' toggle to true
QuickBooks Step > Field Mapping
Map critical payment failure data
Use the data explorer on the right to map Stripe webhook data to QuickBooks fields. Map the customer email, failed amount, and failure reason from the Stripe payload. The invoice ID and attempt count are useful for tracking repeated failures. Click on field names to see the full Stripe webhook structure.
- 1Expand the Stripe data tree in right panel
- 2Map 'data.object.customer_email' to Name field
- 3Map 'data.object.amount_due' to Description
- 4Add 'data.object.last_finalization_error.message' for failure reason
Workflow > Add Step > Slack
Add Slack notification step
Add another step and search for Slack to notify your finance team. Select 'Send Message to Channel' action. Connect your Slack workspace and choose the finance team channel. This step runs after the QuickBooks task is created, so you can confirm the task was added successfully.
- 1Click '+' to add another step
- 2Search 'Slack' and select 'Send Message to Channel'
- 3Connect your Slack workspace
- 4Select your finance team channel from dropdown
Slack Step > Message Configuration
Format Slack notification message
Create a message that includes customer name, failed amount, and a link back to the Stripe dashboard. Use Slack markdown formatting for better readability. Include the QuickBooks task name so your team knows the task was created. Add urgency indicators for high-value failures.
- 1Click in the 'Text' field to open message editor
- 2Add customer name and failed amount from Stripe data
- 3Include Stripe dashboard link using invoice ID
- 4Reference the created QuickBooks task name
Workflow > Deploy > Test
Test the complete workflow
Click 'Deploy' to activate your workflow, then trigger a test by creating a failed payment in Stripe's test mode. Use a declined test card to generate a real payment failure event. Check that both the QuickBooks task appears and the Slack notification sends correctly.
- 1Click 'Deploy' button to activate workflow
- 2Go to Stripe dashboard and create test invoice
- 3Use declined card number 4000000000000002
- 4Check QuickBooks tasks and Slack channel for results
Add this code step between Stripe and QuickBooks to format currency properly and add priority flags for high-value failures. Paste this in a Node.js code step after the Stripe trigger.
JavaScript — Code Stepexport default defineComponent({▸ Show code
export default defineComponent({
async run({ steps, $ }) {
const stripeData = steps.trigger.event.data.object;... expand to see full code
export default defineComponent({
async run({ steps, $ }) {
const stripeData = steps.trigger.event.data.object;
// Convert cents to dollars with proper formatting
const amountFailed = (stripeData.amount_due / 100).toFixed(2);
// Determine priority based on amount
const priority = stripeData.amount_due >= 10000 ? 'HIGH' : 'NORMAL';
// Clean up failure reason for readability
const failureReason = stripeData.last_finalization_error?.message || 'Payment declined';
// Format task name with priority indicator
const taskName = `[${priority}] Failed Payment: ${stripeData.customer_email}`;
// Create detailed description
const taskDescription = `Amount: $${amountFailed}\nReason: ${failureReason}\nInvoice: ${stripeData.id}\nAttempts: ${stripeData.attempt_count || 1}`;
return {
formatted_amount: amountFailed,
priority_level: priority,
task_name: taskName,
task_description: taskDescription,
needs_urgent_follow_up: stripeData.amount_due >= 10000
};
}
});Going live
Production Checklist
Before you turn this on for real, confirm each item.
Troubleshooting
Common errors and how to fix them.
Frequently Asked Questions
Common questions about this workflow.
Analysis
Use Pipedream for this if you process 20+ failed payments daily and need instant QuickBooks task creation with custom formatting. The Node.js code steps let you calculate priority levels, format currency properly, and add conditional logic that Zapier can't match. Skip Pipedream if you want batch processing of failures once per day — n8n handles scheduled bulk operations better.
This workflow costs 1 credit per failed payment. At 100 failures monthly, you'll spend $1 on the Basic plan. Zapier charges $0.01 per task after the free tier, so 100 failures costs $1 there too. Make.com includes 1000 operations for free, making it cheaper until you hit 150+ failures monthly. n8n self-hosted is free but requires server maintenance.
Zapier beats Pipedream on the QuickBooks integration — their 'Create Task' action maps directly to QB's to-do items while Pipedream requires the roundabout 'Create Item' approach. Make.com has better Stripe filtering options in their webhook trigger. n8n excels at complex data transformation without code steps. Power Automate connects to QuickBooks Desktop versions that other platforms miss. But Pipedream's instant webhook processing and currency formatting code step make it ideal for time-sensitive payment failures.
You'll hit Stripe's webhook timeout limit if your QuickBooks step takes longer than 30 seconds to respond. Large QB company files slow down API calls significantly. The Slack notification will fail if someone removes the Pipedream bot from your channel, breaking the entire workflow silently. Test with declined card 4000000000000002 extensively — production failures have different data structures than test mode events.
Ideas for what to build next
- →Add retry automation — Create a follow-up workflow that automatically retries failed payments after 3 days using Stripe's retry API.
- →Escalation for repeat failures — Track customers with multiple failures and create high-priority tasks or email alerts for manual intervention.
- →Revenue impact reporting — Send weekly summaries of failed payment totals to finance leadership with recovery rate metrics.
Related guides
How to Share Notion Meeting Notes to Slack with Pipedream
~15 min setup
How to Share Notion Meeting Notes to Slack with Power Automate
~15 min setup
How to Share Notion Meeting Notes to Slack with n8n
~20 min setup
How to Send Notion Meeting Notes to Slack with Zapier
~8 min setup
How to Share Notion Meeting Notes to Slack with Make
~12 min setup
How to Create Notion Tasks from Slack with Pipedream
~15 min setup