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

How to Record Refunds from Stripe to QuickBooks with Pipedream

Automatically create QuickBooks credit memos when Stripe processes refunds to keep your books accurate.

Steps and UI details are based on platform versions at time of writing β€” check each platform for the latest interface.

Best for

Businesses processing 50+ refunds monthly who need accurate books without manual data entry

Not ideal for

Companies that only process 1-2 refunds per month where manual entry makes more sense

Sync type

real-time

Use case type

sync

Real-World Example

πŸ’‘

A 25-person e-commerce company processes 80 refunds monthly across their Stripe account. Before automation, their bookkeeper spent 3 hours weekly creating QuickBooks credit memos manually, often missing refunds that created reconciliation headaches. Now refunds appear in QuickBooks within 30 seconds of processing.

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.

QuickBooks Online subscription with API access enabled
Stripe account with webhook creation permissions
Admin access to both Stripe dashboard and QuickBooks company file
At least one customer record in QuickBooks for testing

Field Mapping

Map these fields between your apps.

FieldAPI Name
Required
Customer ReferenceCustomerRef
Credit Memo AmountTotalAmt
Credit Memo DateTxnDate
Income AccountAccountRef
2 optional fieldsβ–Έ show
Reference NumberDocNumber
Line Item DescriptionDescription

Step-by-Step Setup

1

Dashboard > New Workflow

Create new workflow in Pipedream

Log into pipedream.com and click the blue 'New Workflow' button in your dashboard. You'll see a blank workflow canvas with a trigger placeholder at the top. This is where you'll configure the Stripe webhook that fires when refunds happen.

  1. 1Click 'New Workflow' from the dashboard
  2. 2Name your workflow 'Stripe Refunds to QuickBooks'
  3. 3Click the trigger step to configure it
βœ“ What you should see: You should see a workflow canvas with an empty trigger step ready for configuration.
2

Trigger > Select a Source > Stripe

Add Stripe webhook trigger

Click 'Select a Source' in the trigger step and search for 'Stripe'. Choose 'New Refund' from the available Stripe triggers. Pipedream will generate a unique webhook URL that you'll need to register with Stripe in the next step.

  1. 1Click 'Select a Source' in the trigger step
  2. 2Search for 'Stripe' in the app directory
  3. 3Select 'New Refund' from the trigger options
  4. 4Copy the generated webhook URL
βœ“ What you should see: You should see a webhook URL starting with https://eolxxxxxxxxx.m.pipedream.net that Stripe will send refund events to.
⚠
Common mistake β€” Don't test the workflow yet - Stripe needs to be configured first or you'll get authentication errors.
Pipedream
+
click +
search apps
QuickBooks
QU
QuickBooks
Add Stripe webhook trigger
QuickBooks
QU
module added
3

Trigger Configuration > Connect Account

Connect your Stripe account

Click 'Connect Account' in the Stripe trigger configuration. Pipedream will open Stripe's OAuth flow where you'll authorize access to your Stripe data. Make sure you're logged into the correct Stripe account before clicking authorize.

  1. 1Click 'Connect Account' in the trigger step
  2. 2Sign into your Stripe account in the popup
  3. 3Click 'Allow access' to authorize Pipedream
  4. 4Confirm the connection shows as 'Connected'
βœ“ What you should see: You should see a green 'Connected' status next to your Stripe account name in the trigger configuration.
⚠
Common mistake β€” If you have multiple Stripe accounts, double-check you're connecting the right one - switching later requires reconfiguring the entire workflow.
Pipedream settings
Connection
Choose a connection…Add
click Add
QuickBooks
Log in to authorize
Authorize Pipedream
popup window
βœ“
Connected
green checkmark
4

Stripe Dashboard > Developers > Webhooks

Register webhook in Stripe dashboard

Open your Stripe dashboard in a new tab and navigate to Developers > Webhooks. Click 'Add endpoint' and paste the webhook URL from Pipedream. Select 'charge.dispute.refunded' and 'refund.created' events to capture all refund scenarios.

  1. 1Go to stripe.com/dashboard and log in
  2. 2Navigate to Developers > Webhooks
  3. 3Click 'Add endpoint' and paste the Pipedream URL
  4. 4Select 'charge.dispute.refunded' and 'refund.created' events
  5. 5Click 'Add endpoint' to save
βœ“ What you should see: You should see your new webhook endpoint listed with a 'Succeeded' status after Pipedream automatically validates it.
⚠
Common mistake β€” Only select refund-related events - adding too many events will trigger your workflow for irrelevant Stripe activity.
5

Workflow Canvas > + Add Step > QuickBooks

Add QuickBooks action step

Back in Pipedream, click the + button below your trigger to add a new step. Search for 'QuickBooks' and select 'Create Credit Memo' as your action. This will create the accounting entry for the refund in your QuickBooks company file.

  1. 1Click the + button below the Stripe trigger
  2. 2Search for 'QuickBooks' in the actions list
  3. 3Select 'Create Credit Memo' from the options
  4. 4Click to configure the action
βœ“ What you should see: You should see a QuickBooks step added to your workflow with configuration fields for credit memo details.
6

QuickBooks Step > Connect Account

Connect QuickBooks account

Click 'Connect Account' in the QuickBooks step. You'll go through Intuit's OAuth process to authorize Pipedream access to your QuickBooks Online company. Make sure you select the correct company if you have multiple QuickBooks files.

  1. 1Click 'Connect Account' in the QuickBooks step
  2. 2Sign into your Intuit account in the popup
  3. 3Select the correct QuickBooks company
  4. 4Click 'Authorize' to grant access
βœ“ What you should see: You should see your QuickBooks company name displayed with a 'Connected' status in the step configuration.
⚠
Common mistake β€” QuickBooks Desktop isn't supported - this only works with QuickBooks Online subscriptions.
7

QuickBooks Step > Credit Memo Configuration > CustomerRef

Map customer information

In the credit memo configuration, you need to map the Stripe customer to a QuickBooks customer. Click the CustomerRef field and select 'steps.trigger.event.data.object.customer' from the dynamic data menu. Add a fallback value like 'Cash Customer' for anonymous purchases.

  1. 1Click the CustomerRef field in the credit memo form
  2. 2Select 'steps.trigger.event.data.object.customer' from the dropdown
  3. 3Set a fallback value of 'Cash Customer' for null customers
  4. 4Verify the mapping shows the Stripe customer ID
βœ“ What you should see: The CustomerRef field should show {{steps.trigger.event.data.object.customer}} with your fallback value configured.
⚠
Common mistake β€” Stripe customer IDs won't match QuickBooks customer names - you'll need a lookup step if you want exact customer matching instead of creating generic entries.
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
8

QuickBooks Step > Line Items > Add Line Item

Configure credit memo line items

Scroll down to the Line Items section and click 'Add Line Item'. Map the Amount field to 'steps.trigger.event.data.object.amount' and set the Description to include the original charge ID. This creates the actual refund line in your books.

  1. 1Click 'Add Line Item' in the credit memo configuration
  2. 2Set Amount to {{steps.trigger.event.data.object.amount}}
  3. 3Set Description to 'Stripe refund for {{steps.trigger.event.data.object.charge}}'
  4. 4Select an appropriate income account for the line item
βœ“ What you should see: You should see a line item configured with the refund amount and description pulling from Stripe webhook data.
⚠
Common mistake β€” Stripe amounts are in cents - you'll need to divide by 100 in a code step if your QuickBooks expects dollar amounts.
9

Workflow Canvas > + Add Step > Code

Add currency conversion code step

Click + to add a code step between Stripe and QuickBooks. This step will convert Stripe's cent-based amounts to dollar amounts that QuickBooks expects. Paste the currency conversion code that divides the amount by 100 and formats it properly.

  1. 1Click + between the Stripe trigger and QuickBooks step
  2. 2Select 'Code' from the step options
  3. 3Choose 'Node.js' as your runtime
  4. 4Paste the amount conversion code in the editor
βœ“ What you should see: You should see a code step that outputs the refund amount converted from cents to dollars.
⚠
Common mistake β€” Make sure to handle zero amounts and null values - failed refunds can send incomplete data that breaks the conversion.

Add this code step between Stripe and QuickBooks to handle currency conversion and create better tracking. Paste it in a Node.js code step to convert cents to dollars and add proper error handling.

JavaScript β€” Code Stepexport default defineComponent({
β–Έ Show code
export default defineComponent({
  async run({ steps, $ }) {
    const refund = steps.trigger.event.data.object;

... expand to see full code

export default defineComponent({
  async run({ steps, $ }) {
    const refund = steps.trigger.event.data.object;
    
    // Convert cents to dollars with proper rounding
    const dollarAmount = Math.round(refund.amount) / 100;
    
    // Handle missing customer data
    const customerRef = refund.customer || 'Cash Customer';
    
    // Format date for QuickBooks
    const refundDate = new Date(refund.created * 1000).toISOString().split('T')[0];
    
    // Create description with charge reference
    const description = `Stripe refund ${refund.id} for charge ${refund.charge}`;
    
    // Error handling for edge cases
    if (dollarAmount <= 0) {
      throw new Error(`Invalid refund amount: ${dollarAmount}`);
    }
    
    return {
      amount: dollarAmount,
      customer: customerRef,
      date: refundDate,
      description: description,
      refund_id: refund.id,
      original_charge: refund.charge
    };
  },
});
10

Stripe Dashboard > Payments > Refund

Test the complete workflow

Process a test refund in your Stripe dashboard to trigger the workflow end-to-end. Go to Payments > find a charge > click 'Refund' and process a small amount. Check both the Pipedream execution log and your QuickBooks company file to verify the credit memo was created correctly.

  1. 1Go to Stripe dashboard > Payments
  2. 2Find a recent charge and click on it
  3. 3Click 'Refund' and process a $1.00 test refund
  4. 4Check Pipedream workflow execution in the dashboard
  5. 5Verify credit memo appears in QuickBooks > Sales > Credit Memos
βœ“ What you should see: You should see a successful workflow execution in Pipedream and a new credit memo in QuickBooks with the correct refund amount and customer.
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 need instant refund recording with custom business logic. The Node.js code steps handle currency conversion and customer matching better than other platforms' built-in transformations. Webhook processing averages 800ms from Stripe to QuickBooks. Skip Pipedream if you only process 5-10 refunds monthly - Zapier's simpler interface makes more sense for low-volume scenarios.

Cost

Pipedream costs 1 credit per refund processed. At 100 refunds monthly, you'll spend $10/month on the Developer plan. Zapier charges $20/month for the same volume on their Starter plan, making Pipedream 50% cheaper. Make.com would cost $9/month but lacks the webhook reliability that Stripe integration demands.

Tradeoffs

Zapier wins on ease of setup with better QuickBooks customer matching out of the box. Make.com offers superior error handling with built-in retry logic for failed QuickBooks API calls. n8n gives you more control over webhook verification and custom authentication flows. Power Automate integrates better if you're already using Microsoft's ecosystem. But Pipedream's instant webhook processing and flexible Node.js environment handle the currency conversion and customer lookup logic that this workflow requires without external dependencies.

You'll hit QuickBooks API rate limits at 500+ refunds per hour - add exponential backoff in your code step. Stripe webhook retries can create duplicate credit memos if you don't implement idempotency checking. Anonymous Stripe customers will create 'null' customer references in QuickBooks unless you set up proper fallback handling. International refunds need currency conversion logic that accounts for exchange rate fluctuations between the original charge and refund dates.

Ideas for what to build next

  • β†’
    Add refund categorization β€” Create different QuickBooks items based on refund reason codes from Stripe to better track why customers request refunds.
  • β†’
    Build dispute tracking β€” Extend the workflow to handle Stripe disputes and chargebacks with separate QuickBooks journal entries for proper accounting.
  • β†’
    Create refund reporting β€” Add a monthly digest that summarizes refund totals by customer and reason, sending reports to your finance team via email or Slack.

Related guides

Was this guide helpful?
← QuickBooks + Stripe overviewPipedream profile β†’