Intermediate~15 min setupFinance & FinanceVerified April 2026
QuickBooks logo
Stripe logo

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-time

Use case type

notification

Real-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.

/mo
505005K50K

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

Skip the setup

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.

Admin access to Stripe account with webhook creation permissions
QuickBooks Online subscription with API access enabled
Slack workspace admin rights or permission to add integrations
Test Stripe account to validate failed payment scenarios

Field Mapping

Map these fields between your apps.

FieldAPI 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

1

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.

  1. 1Click 'New Workflow' button in dashboard
  2. 2Click on the empty trigger step
  3. 3Search for 'Stripe' in the sources panel
  4. 4Select 'Stripe - New Event (Instant)'
What you should see: You should see the Stripe webhook configuration panel with event type dropdown and authentication options.
2

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.

  1. 1Click 'Connect Account' and authenticate with Stripe
  2. 2Select 'invoice.payment_failed' from event types
  3. 3Click 'Save and Continue'
  4. 4Copy the generated webhook URL
What you should see: You should see a green 'Connected' status and the webhook URL should appear in your Stripe dashboard under Developers > Webhooks.
Common mistake — The webhook fires for ALL failed payments. If you only want specific customer segments, add a filter step next.
3

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.

  1. 1Click the '+' icon to add new step
  2. 2Search 'QuickBooks' in the actions panel
  3. 3Select 'QuickBooks - Create Item'
  4. 4Click 'Connect Account' and complete OAuth
What you should see: The QuickBooks step should show 'Connected' status with your company name displayed in the authentication section.
Common mistake — QuickBooks tasks require 'Service' item type. Don't select 'Inventory' or 'Non-inventory' or the task won't appear in your to-do list.
4

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.

  1. 1Set 'Type' dropdown to 'Service'
  2. 2Click 'Name' field and select Stripe customer data
  3. 3Add invoice details to 'Description' field
  4. 4Set 'Active' toggle to true
What you should see: The configuration panel should show mapped fields with blue Stripe data tags indicating dynamic content will be inserted.
5

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.

  1. 1Expand the Stripe data tree in right panel
  2. 2Map 'data.object.customer_email' to Name field
  3. 3Map 'data.object.amount_due' to Description
  4. 4Add 'data.object.last_finalization_error.message' for failure reason
What you should see: Each mapped field should show a blue tag with the Stripe field path, and you should see sample data populate in the preview.
Common mistake — Stripe amounts are in cents. Divide by 100 in the Description field or your team will see inflated dollar amounts.
QuickBooks fields
DocNumber
CustomerRef.name
TotalAmt
Balance
DueDate
available as variables:
1.props.DocNumber
1.props.CustomerRef.name
1.props.TotalAmt
1.props.Balance
1.props.DueDate
6

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.

  1. 1Click '+' to add another step
  2. 2Search 'Slack' and select 'Send Message to Channel'
  3. 3Connect your Slack workspace
  4. 4Select your finance team channel from dropdown
What you should see: You should see your Slack channels populate in the dropdown, and the authentication should show your workspace name.
Common mistake — Private channels won't appear unless you invite the Pipedream bot first. Check channel permissions if your target channel is missing.
7

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.

  1. 1Click in the 'Text' field to open message editor
  2. 2Add customer name and failed amount from Stripe data
  3. 3Include Stripe dashboard link using invoice ID
  4. 4Reference the created QuickBooks task name
What you should see: The message preview should show formatted text with customer details and clickable links to Stripe dashboard.
Common mistake — Map fields using the variable picker — don't type field names manually. Hand-typed variable names often have invisible spacing errors that produce blank output.
8

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.

  1. 1Click 'Deploy' button to activate workflow
  2. 2Go to Stripe dashboard and create test invoice
  3. 3Use declined card number 4000000000000002
  4. 4Check QuickBooks tasks and Slack channel for results
What you should see: You should see a new task in QuickBooks under Lists > Items and a notification in your Slack channel within 2 minutes.
Common mistake — Test mode webhooks use different API keys. Switch to live mode carefully and update the Stripe connection when you're ready for production.

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
    };
  }
});
Pipedream
▶ Deploy & test
executed
QuickBooks
Stripe
Stripe
🔔 notification
received

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

VerdictWhy n8n for this workflow

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.

Cost

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.

Tradeoffs

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 automationCreate a follow-up workflow that automatically retries failed payments after 3 days using Stripe's retry API.
  • Escalation for repeat failuresTrack customers with multiple failures and create high-priority tasks or email alerts for manual intervention.
  • Revenue impact reportingSend weekly summaries of failed payment totals to finance leadership with recovery rate metrics.

Related guides

Was this guide helpful?
QuickBooks + Stripe overviewPipedream profile →