

How to Sync Stripe Customers to QuickBooks with Pipedream
Auto-create QuickBooks customer records when new customers are added to Stripe, keeping both systems in sync.
Steps and UI details are based on platform versions at time of writing β check each platform for the latest interface.
Best for
SaaS companies that need accurate accounting records without manual data entry between payment and bookkeeping systems
Not ideal for
Teams that need two-way sync or batch processing of historical customer data
Sync type
real-timeUse case type
syncReal-World Example
A 25-person subscription software company processes 200+ new customers monthly through Stripe. Their bookkeeper spent 6 hours weekly copying customer details into QuickBooks for invoicing and reporting. Now customer records appear in QuickBooks within 30 seconds of Stripe signup, and the bookkeeper focuses on reconciliation instead of data entry.
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 Name | Name | |
6 optional fieldsβΈ show
| Email Address | PrimaryEmailAddr |
| Phone Number | PrimaryPhone |
| Billing Address | BillAddr |
| Company Name | CompanyName |
| Customer Notes | Notes |
| Stripe Customer ID | DisplayName |
Step-by-Step Setup
Workflows > New Workflow
Create New Workflow
Go to pipedream.com and click Workflows in the left sidebar. Click the blue New Workflow button in the top right. You'll see an empty workflow canvas with a trigger placeholder. This is where you'll configure the Stripe webhook that fires when customers are created.
- 1Click Workflows in the left sidebar
- 2Click the blue New Workflow button
- 3Click on the trigger placeholder box
- 4Search for 'Stripe' in the app list
Workflows > Trigger > Stripe > New Customer
Configure Stripe Webhook Source
Select 'New Customer' from the Stripe triggers list. Pipedream will show you the webhook configuration screen. You need to connect your Stripe account first, then Pipedream automatically creates the webhook endpoint in your Stripe dashboard. The webhook fires instantly when customers are created in Stripe.
- 1Select 'New Customer' from the trigger options
- 2Click 'Connect Account' next to Stripe
- 3Authorize Pipedream in the Stripe popup
- 4Click 'Create Source' at the bottom
Stripe Dashboard > Customers > Add Customer
Test Stripe Connection
Create a test customer in your Stripe dashboard to verify the webhook works. Go to Stripe's dashboard, navigate to Customers, and click Add Customer. Fill in test details and save. Return to Pipedream and refresh the trigger step - you should see the customer data appear in the test event section.
- 1Open Stripe dashboard in a new tab
- 2Go to Customers > Add Customer
- 3Enter test name and email
- 4Click 'Add Customer'
- 5Return to Pipedream and click 'Test' on the trigger
Workflows > + > QuickBooks > Create Customer
Add QuickBooks Step
Click the + button below your trigger step to add a new action. Search for QuickBooks and select it from the app list. Choose 'Create Customer' as the action type. This step will receive the Stripe customer data and create a matching record in QuickBooks Online.
- 1Click the + button below the trigger step
- 2Search for 'QuickBooks' in the apps list
- 3Select QuickBooks from the results
- 4Choose 'Create Customer' action
QuickBooks Step > Connect Account
Connect QuickBooks Account
Click 'Connect Account' in the QuickBooks step configuration. You'll be redirected to Intuit's authorization page where you select which QuickBooks company to connect. Choose the correct company and grant permissions. Pipedream needs read/write access to customers and basic company info.
- 1Click 'Connect Account' in the QuickBooks section
- 2Select your QuickBooks company in the Intuit popup
- 3Click 'Authorize' to grant permissions
- 4Confirm the connection in Pipedream
QuickBooks Step > Name Field > Custom Expression
Map Customer Name Fields
In the QuickBooks step, you'll see form fields for Name, Email, and other customer properties. Click the Name field and select 'Custom Expression' from the dropdown. Map the Stripe customer name using the expression builder - typically this is steps.trigger.event.name or a combination of first/last name fields if they're separate in your Stripe data.
- 1Click in the Name field input box
- 2Select 'Custom Expression' from the dropdown
- 3Type steps.trigger.event.name in the expression box
- 4Click 'Use Expression' to confirm
QuickBooks Step > Email Field > Trigger Data
Map Email and Contact Fields
Map the customer email from Stripe to QuickBooks by clicking the Email field and selecting the email property from the trigger data. Add the customer's phone number if available in Stripe. You can also map billing address fields if your Stripe customers have complete address data stored.
- 1Click the Email field input box
- 2Select steps.trigger.event.email from the dropdown
- 3Map Phone field if available in your Stripe data
- 4Add billing address fields from Stripe if present
Workflows > + > Code > Node.js
Add Duplicate Prevention
Click the + button to add another step before the QuickBooks action. Search for 'Code' and select 'Run Node.js Code'. This step will check if the customer already exists in QuickBooks before creating a duplicate. You'll write a simple lookup using the QuickBooks API to search by email address.
- 1Click + between the trigger and QuickBooks steps
- 2Search for 'Code' and select it
- 3Choose 'Run Node.js Code' action
- 4Move this step above the QuickBooks create action
Code Step > Editor
Configure Code Step Logic
In the code editor, write logic to search QuickBooks for existing customers with the same email. If found, update the existing customer instead of creating a duplicate. If not found, pass the data through to create a new customer. The code uses Pipedream's QuickBooks integration to query the customer list API.
- 1Connect your QuickBooks account in the code step
- 2Write the duplicate check logic in the editor
- 3Add error handling for API failures
- 4Test the code with your sample data
This code goes in the Node.js code step to prevent duplicate customers by searching QuickBooks before creating new records. Paste it in the code editor between your trigger and QuickBooks create steps.
JavaScript β Code Stepexport default defineComponent({βΈ Show code
export default defineComponent({
props: {
quickbooks: {... expand to see full code
export default defineComponent({
props: {
quickbooks: {
type: "app",
app: "quickbooks"
}
},
async run({ steps, $ }) {
const customerEmail = steps.trigger.event.email;
const customerName = steps.trigger.event.name || customerEmail;
try {
// Search for existing customer by email
const searchQuery = `SELECT * FROM Customer WHERE PrimaryEmailAddr = '${customerEmail}'`;
const existingCustomer = await this.quickbooks.makeRequest({
url: `/v3/companyid/query?query=${encodeURIComponent(searchQuery)}`,
method: 'GET'
});
if (existingCustomer.QueryResponse?.Customer?.length > 0) {
console.log(`Customer ${customerEmail} already exists`);
return {
action: 'skip',
existing_customer: existingCustomer.QueryResponse.Customer[0],
message: 'Customer already exists in QuickBooks'
};
}
// Check for duplicate names
const nameQuery = `SELECT * FROM Customer WHERE Name = '${customerName.replace(/'/g, "\\'")}'`;
const nameCheck = await this.quickbooks.makeRequest({
url: `/v3/companyid/query?query=${encodeURIComponent(nameQuery)}`,
method: 'GET'
});
const finalName = nameCheck.QueryResponse?.Customer?.length > 0
? `${customerName} (${steps.trigger.event.id.slice(-4)})`
: customerName;
return {
action: 'create',
customer_name: finalName,
customer_email: customerEmail,
stripe_id: steps.trigger.event.id
};
} catch (error) {
console.error('QuickBooks API error:', error);
throw new Error(`Failed to check for existing customer: ${error.message}`);
}
}
});Workflows > Test Workflow
Test Complete Workflow
Click 'Test' at the top of the workflow to run all steps with your sample Stripe customer data. Watch each step execute in sequence - the trigger fires, duplicate check runs, and QuickBooks creates or updates the customer. Check your QuickBooks dashboard to verify the customer appears correctly with all mapped fields.
- 1Click the 'Test' button at the top right
- 2Watch each step execute in the workflow
- 3Check for any error messages in red
- 4Verify the customer appears in QuickBooks
Workflows > Deploy
Deploy Workflow
Click 'Deploy' to activate the workflow for live customer syncing. Pipedream will start processing real Stripe webhooks immediately. The workflow runs automatically whenever new customers are created in Stripe. You can monitor execution history and errors in the workflow's activity log.
- 1Click the green 'Deploy' button
- 2Confirm deployment in the popup dialog
- 3Switch to the activity tab to monitor runs
- 4Create a test customer in Stripe to verify live operation
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 need instant customer syncing with custom logic. The webhook triggers fire within 15 seconds of Stripe customer creation, and the Node.js code steps let you handle duplicate prevention and field transformation that other platforms struggle with. Pipedream's QuickBooks integration handles OAuth refresh automatically. Skip this for bulk historical imports - use CSV export/import instead.
This costs about $0.002 per customer sync on Pipedream's free tier (20k operations/month). At 500 new customers monthly, you'll pay nothing. At 2000+ customers monthly, expect $15-20/month. Zapier charges $20/month for the same volume, and Make charges around $12/month but doesn't include the QuickBooks integration in their free tier.
Zapier handles QuickBooks field mapping better with dropdown selectors instead of custom expressions. Make has superior error handling and retry logic for API failures. n8n offers unlimited executions if you self-host but requires more technical setup for QuickBooks OAuth. Power Automate works well if you're already in Microsoft 365 but costs $15/user/month minimum. Pipedream wins because the code steps solve the duplicate customer problem that breaks other platforms - QuickBooks' unique name requirement kills basic field mapping approaches.
You'll hit QuickBooks API rate limits if you process customers in rapid bursts - Stripe can create 20+ customers per second during flash sales, but QuickBooks Online throttles to 500 requests per minute. The webhook will retry failed requests, but large customer batches might delay by 10-15 minutes. Customers with special characters in names (apostrophes, quotes) break the API query syntax and need escaping in your duplicate check code.
Ideas for what to build next
- βAdd Customer Updates β Create a second workflow to sync customer profile changes from Stripe to QuickBooks when addresses or contact info is updated.
- βSync Payment Methods β Extend the workflow to create payment method records in QuickBooks for each customer's default payment source.
- βConnect Invoice Creation β Build a follow-up automation that creates QuickBooks invoices when Stripe customers make purchases or subscription payments.
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