Beginner~12 min setupFinance & FinanceVerified April 2026
QuickBooks logo
Stripe logo

How to Sync Stripe Customers to QuickBooks with Make

When a new customer is created in Stripe, automatically find or create the matching customer record in QuickBooks to keep 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 and online businesses that need real-time customer sync between payment processing and accounting.

Not ideal for

High-volume businesses processing 1000+ customers daily due to Make's operation costs and QuickBooks API limits.

Sync type

real-time

Use case type

sync

Real-World Example

💡

A 25-person B2B SaaS company uses this to sync their 150 monthly Stripe customers into QuickBooks for revenue recognition. Before automation, their bookkeeper manually exported Stripe customers weekly and spent 3 hours copying data into QuickBooks. Now customer records appear instantly when trials convert to paid accounts.

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 Make

Copy the pre-built Make blueprint and paste it straight into Make. 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.

Active Stripe account with API access enabled
QuickBooks Online subscription with API access
Make account with at least the Core plan for webhooks
Admin permissions in both Stripe and QuickBooks

Field Mapping

Map these fields between your apps.

FieldAPI Name
Required
Customer NameName
Email AddressPrimaryEmailAddr.Address
Customer IDId
3 optional fields▸ show
Phone NumberPrimaryPhone.FreeFormNumber
Company NameCompanyName
Display NameDisplayName

Step-by-Step Setup

1

Scenarios > Create new scenario

Create new Make scenario

Start a new automation scenario in Make. This will house your entire Stripe-to-QuickBooks customer sync workflow.

  1. 1Log into Make and click 'Create a new scenario'
  2. 2Click the large '+' button in the center of the canvas
What you should see: You'll see an empty scenario canvas with a single '+' module ready for configuration.
2

Module > Apps > Stripe > Watch Events

Add Stripe trigger module

Configure the trigger that fires whenever a new customer is created in your Stripe account. This watches for new customer events in real-time.

  1. 1Search for 'Stripe' in the app list
  2. 2Select 'Watch Events' from the Stripe trigger options
  3. 3Choose 'customer.created' from the event type dropdown
  4. 4Connect your Stripe account using your API key
What you should see: The module shows 'Stripe - Watch Events' with a green connection badge and 'customer.created' selected as the event type.
Common mistake — Don't pick 'customer.updated' unless you want this firing on every customer field change — that includes email updates and metadata changes.
Make
+
click +
search apps
QuickBooks
QU
QuickBooks
Add Stripe trigger module
QuickBooks
QU
module added
3

Module > Apps > QuickBooks Online > Search Customers

Connect QuickBooks Online

Add the QuickBooks module that will search for existing customers. You'll need this to avoid creating duplicates when a customer already exists.

  1. 1Click the '+' button after the Stripe module
  2. 2Search for 'QuickBooks Online' in the apps list
  3. 3Select 'Search Customers' from the QuickBooks actions
  4. 4Authorize Make to access your QuickBooks company file
What you should see: A QuickBooks Online module appears connected to Stripe, showing 'Search Customers' as the selected action.
4

QuickBooks Online > Search Customers > Query

Configure customer search

Set up the search to look for existing customers by email address. This prevents duplicate customer records when someone already exists in QuickBooks.

  1. 1In the QuickBooks module, click the 'Query' field
  2. 2Enter the search formula: PrimaryEmailAddr = '{{1.data.object.email}}'
  3. 3Set 'Max Results' to 1 since you only need to check if one exists
What you should see: The search query shows the Stripe email mapping and Max Results is set to 1.
Common mistake — Use the exact syntax 'PrimaryEmailAddr = ' — QuickBooks query format is picky and 'email =' won't work.
5

Module > Flow Control > Router

Add router module

Insert a router to handle two paths: create new customer if none found, or update existing customer if found. This gives you branching logic.

  1. 1Click the '+' after the QuickBooks Search module
  2. 2Select 'Flow Control' from the category list
  3. 3Choose 'Router' from the flow control options
What you should see: A diamond-shaped router appears with two empty paths branching from it.
6

Router > Path 1 > QuickBooks Online > Create Customer

Configure 'Create Customer' path

Set up the first router path to create new QuickBooks customers when none are found. This handles new customers from Stripe.

  1. 1Click the '+' on the top router path
  2. 2Search and select 'QuickBooks Online > Create Customer'
  3. 3Click the filter icon between router and create module
  4. 4Set filter condition: {{2.QueryResponse.Customer}} 'Does not exist'
What you should see: Top path shows QuickBooks 'Create Customer' with a filter icon indicating the 'does not exist' condition.
Common mistake — The filter condition must check for 'Does not exist' — if you use 'Is empty', customers with blank fields will trigger incorrectly.
7

Create Customer > Field Mapping

Map new customer fields

Configure which Stripe customer data gets mapped to QuickBooks fields. This determines what information transfers over.

  1. 1In the Create Customer module, map 'Name' to {{1.data.object.name}}
  2. 2Map 'CompanyName' to {{1.data.object.name}} if it's a business
  3. 3Map 'PrimaryEmailAddr.Address' to {{1.data.object.email}}
  4. 4Map 'PrimaryPhone.FreeFormNumber' to {{1.data.object.phone}}
What you should see: All customer fields show Stripe data mappings with the correct dotted field paths.
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

Router > Path 2 > QuickBooks Online > Update Customer

Configure 'Update Customer' path

Set up the second router path for when a matching customer is found. This ensures existing records get updated with current Stripe data.

  1. 1Click the '+' on the bottom router path
  2. 2Search and select 'QuickBooks Online > Update Customer'
  3. 3Click the filter icon and set condition: {{2.QueryResponse.Customer}} 'Exists'
  4. 4Map 'Id' field to {{2.QueryResponse.Customer.1.Id}}
What you should see: Bottom path shows 'Update Customer' with an 'exists' filter and the customer ID properly mapped from the search results.
Common mistake — You must map the Id field from the search results — using Stripe's ID here will cause a 'Customer not found' error.
9

Update Customer > Field Mapping

Map update customer fields

Configure field mappings for the update path. This ensures existing customers get refreshed with current Stripe information.

  1. 1Map 'Name' to {{1.data.object.name}}
  2. 2Map 'PrimaryEmailAddr.Address' to {{1.data.object.email}}
  3. 3Map 'PrimaryPhone.FreeFormNumber' to {{1.data.object.phone}}
  4. 4Leave 'sparse' checkbox checked to only update mapped fields
What you should see: Update fields mirror the create mappings, with 'sparse' enabled to avoid overwriting unmapped fields.
Common mistake — Keep 'sparse' checked — unchecking it will null out any QuickBooks fields you don't explicitly map, wiping existing data.
10

Scenario > Run once

Test the scenario

Run a test to verify both paths work correctly. This validates your logic before going live with real customer data.

  1. 1Click 'Run once' at the bottom of the screen
  2. 2Create a test customer in Stripe to trigger the scenario
  3. 3Check the execution log to see which path executed
  4. 4Verify the customer appears correctly in QuickBooks
What you should see: The test run shows successful execution through either create or update path, with a green checkmark on all modules.
Make
▶ Run once
executed
QuickBooks
Stripe
Stripe
🔔 notification
received
11

Module > Error Handler

Configure error handling

Set up what happens when QuickBooks API errors occur. This prevents the scenario from breaking on rate limits or validation errors.

  1. 1Right-click each QuickBooks module and select 'Add error handler'
  2. 2Choose 'Ignore' for rate limit errors (429 status)
  3. 3Choose 'Break' for authentication errors (401 status)
  4. 4Set retry attempts to 3 with 30-second intervals
What you should see: Each QuickBooks module shows a small error handler icon with your configured retry and ignore settings.
12

Scenario > Scheduling > ON

Activate the scenario

Turn on the automation to start syncing customers in real-time. The scenario will now monitor Stripe for new customer events continuously.

  1. 1Click the 'ON/OFF' toggle in the bottom left
  2. 2Confirm activation in the popup dialog
  3. 3Set the scenario to run 'Immediately' for real-time sync
What you should see: The scenario shows 'ON' status with a green indicator and 'Immediately' scheduling enabled.
Common mistake — Don't set this to run every 15 minutes — Stripe webhooks are real-time, so 'Immediately' gives you instant customer sync.

Drop this into a Make custom function.

JavaScript — Custom Function{{if(1.data.object.name; 1.data.object.name; 1.data.object.email)}}
▸ Show code
{{if(1.data.object.name; 1.data.object.name; 1.data.object.email)}}

... expand to see full code

{{if(1.data.object.name; 1.data.object.name; 1.data.object.email)}}

Scaling Beyond 1000+ customers/month+ Records

If your volume exceeds 1000+ customers/month records, apply these adjustments.

1

Batch process during off-hours

QuickBooks API performs better at night. Consider queueing customers and processing in batches rather than real-time sync to avoid rate limits.

2

Add operation monitoring

Set up alerts when you hit 80% of your Make plan's operation limit. Customer sync failures are expensive to fix manually later.

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 Make for this workflow

Use Make for this if you want real-time customer sync without writing code. Make handles Stripe webhooks instantly — customers appear in QuickBooks within 30 seconds of Stripe creation. The visual router makes it dead simple to handle create-vs-update logic. Skip Make if you're syncing 5000+ customers daily — at that volume, a direct API integration is cheaper than Make's operation costs.

Cost

This workflow burns 4 operations per customer: Stripe trigger, QuickBooks search, router decision, then create or update. At 200 customers/month, that's 800 operations total. Make's Core plan ($10.59/month) includes 10,000 operations, so you're covered. Zapier would cost $19.99/month for the same volume since they charge per 'task'. N8n is free if you self-host, but then you're managing webhooks and uptime yourself.

Tradeoffs

Zapier's QuickBooks integration handles duplicate detection automatically — you don't need the search-then-route logic. N8n gives you more control over field transformations with JavaScript nodes, which helps if you need complex data formatting. But Make's visual flow makes troubleshooting way easier when things break. You can see exactly which path the router took and what data each module received.

QuickBooks limits API calls to 500/hour, so if you get a surge of Stripe customers, Make will start getting 429 rate limit errors. The error handler helps, but plan for delays during high-volume periods. Also, QuickBooks requires unique customer names — if two Stripe customers have identical names, the second one will fail. Most people miss this until they hit their first duplicate.

Ideas for what to build next

  • Add invoice creationExtend this workflow to automatically create QuickBooks invoices when Stripe processes successful payments for the customer.
  • Set up reverse syncBuild a companion scenario that updates Stripe customer metadata when customer details change in QuickBooks.
  • Create Slack notificationsAdd a Slack module to notify your finance team when new high-value customers get synced from Stripe.

Related guides

Was this guide helpful?
QuickBooks + Stripe overviewMake profile →