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

How to Sync Stripe Subscription Renewals to QuickBooks with Make

Auto-create recurring invoices in QuickBooks when Stripe subscriptions renew and track MRR in your accounting system.

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

Best for

SaaS businesses with multiple subscription tiers that need real-time MRR tracking in QuickBooks

Not ideal for

Simple businesses with under 50 customers who can manually create invoices monthly

Sync type

real-time

Use case type

sync

Real-World Example

💡

A 25-person B2B SaaS company uses this to automatically create QuickBooks invoices when their 300+ Stripe subscriptions renew each month. Before automation, their bookkeeper spent 6 hours monthly copying Stripe renewals into QuickBooks and often missed renewals that came in after month-end. Now MRR tracking happens in real-time and their monthly close takes 2 fewer days.

What Will This Cost?

Drag the slider to your expected monthly volume.

1 op per trigger eventEach time this workflow runs counts as one operation toward your monthly limit.
/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 webhook access enabled
QuickBooks Online account with API access permissions
Make account with webhook capabilities (Core plan or higher)
Admin access to both Stripe and QuickBooks for connection setup
Existing customers in QuickBooks or permission to auto-create customer records

Field Mapping

Map these fields between your apps.

FieldAPI Name
Required
Customer Emailcustomer.email
Invoice Amountamount_paid
Billing Periodlines.data[].period
Customer Namecustomer.name
Invoice Datecreated
2 optional fields▸ show
Subscription Planlines.data[].plan.nickname
Stripe Invoice IDid

Step-by-Step Setup

1

Dashboard > Create scenario > + > Stripe

Create new Make scenario

Start a fresh scenario in Make to connect Stripe subscription events to QuickBooks invoice creation. This will be your main workflow for tracking recurring revenue.

  1. 1Click 'Create a new scenario' from your Make dashboard
  2. 2Click the large '+' button in the center of the canvas
  3. 3Search for 'Stripe' in the app selector
  4. 4Select 'Stripe' from the results
What you should see: You should see the Stripe module added to your scenario canvas with configuration options on the right panel.
2

Stripe module > Watch Events > Event Types

Configure Stripe subscription renewal trigger

Set up the trigger to fire when a Stripe subscription invoice is paid successfully. This catches renewals but not failed payments or one-time charges.

  1. 1Select 'Watch Events' from the Stripe trigger options
  2. 2Connect your Stripe account by entering your webhook secret key
  3. 3In the 'Event Types' dropdown, select 'invoice.payment_succeeded'
  4. 4Set the webhook URL that Make provides to your Stripe dashboard
What you should see: The trigger shows 'Connected' status and displays the webhook URL you need to add in Stripe.
Common mistake — Don't select 'invoice.created' — that fires before payment and will create invoices for failed renewals.

Drop this into a Make custom function.

JavaScript — Custom Function{{formatDate(parseDate(created; "X"); "MM/DD/YYYY"; "America/New_York")}}
▸ Show code
{{formatDate(parseDate(created; "X"); "MM/DD/YYYY"; "America/New_York")}}

... expand to see full code

{{formatDate(parseDate(created; "X"); "MM/DD/YYYY"; "America/New_York")}}
Make
+
click +
search apps
QuickBooks
QU
QuickBooks
Configure Stripe subscriptio…
QuickBooks
QU
module added
3

Tools > Set variable > Add condition

Add subscription filter

Filter out one-time invoices and only process recurring subscription renewals. This prevents creating QuickBooks invoices for setup fees or add-on purchases.

  1. 1Click the '+' button after your Stripe trigger
  2. 2Select 'Tools' > 'Set variable' from the module list
  3. 3Add a filter condition where 'billing_reason' equals 'subscription_cycle'
  4. 4Name this filter 'Recurring Only' for easy identification
What you should see: A filter icon appears between Stripe and the next module, showing your subscription cycle condition.
Common mistake — Stripe sends different billing_reason values — 'subscription_create' is for first invoices, not renewals.

Drop this into a Make custom function.

JavaScript — Custom Function{{formatDate(parseDate(created; "X"); "MM/DD/YYYY"; "America/New_York")}}
▸ Show code
{{formatDate(parseDate(created; "X"); "MM/DD/YYYY"; "America/New_York")}}

... expand to see full code

{{formatDate(parseDate(created; "X"); "MM/DD/YYYY"; "America/New_York")}}
QuickBooks
QU
trigger
filter
Condition
matches criteria?
yes — passes through
no — skipped
Stripe
ST
notified
4

QuickBooks Online > Create Invoice > Create connection

Add QuickBooks connection

Connect to QuickBooks Online to create invoices for each successful subscription renewal. This requires your QuickBooks company login credentials.

  1. 1Click '+' after your filter to add the next module
  2. 2Search for and select 'QuickBooks Online'
  3. 3Choose 'Create an Invoice' from the action list
  4. 4Click 'Create a connection' and authorize Make to access your QuickBooks company
What you should see: QuickBooks module appears with 'Connected' status and shows your company name in the connection details.
5

QuickBooks Invoice > Customer > Map

Map customer information

Link the Stripe customer data to an existing QuickBooks customer record. This ensures invoices appear under the correct customer account.

  1. 1In the Customer field, select 'Map' from the dropdown
  2. 2Choose the Stripe customer email as the lookup field
  3. 3Map 'customer.name' from Stripe to 'DisplayName' in QuickBooks
  4. 4Set customer creation to 'Create if not exists'
What you should see: The customer mapping shows Stripe email → QuickBooks customer with auto-creation enabled.
Common mistake — If customer emails don't match exactly between systems, invoices will create duplicate customer records.
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

QuickBooks Invoice > Line Items > Add item

Configure invoice line items

Map subscription details to invoice line items including description, amount, and billing period. This creates readable invoices that match your Stripe charges.

  1. 1In the Line Items section, click 'Add item'
  2. 2Map 'lines.data[].description' from Stripe to 'Description'
  3. 3Set 'Amount' to 'lines.data[].amount' divided by 100 (converts cents)
  4. 4Map 'subscription.current_period_start' to create billing period descriptions
What you should see: Line item mapping shows subscription description, converted amount, and period dates from Stripe data.
Common mistake — Stripe amounts are in cents — forgetting to divide by 100 creates invoices 100x too large.
7

QuickBooks Invoice > TxnDate, DueDate > Map

Set invoice dates and terms

Configure invoice dating to match your billing cycle and set payment terms. This keeps your accounting dates aligned with actual billing periods.

  1. 1Set 'TxnDate' to Stripe's 'created' timestamp
  2. 2Map 'DueDate' to 'lines.data[].period.end' from the subscription
  3. 3Set 'PrivateNote' to include Stripe invoice ID for tracking
  4. 4Choose your default payment terms from the dropdown
What you should see: Invoice dates show the billing period start as invoice date and period end as due date.
8

QuickBooks Invoice > Memo, CustomerMemo

Add MRR tracking fields

Include custom fields or notes to track Monthly Recurring Revenue and subscription metrics in QuickBooks. This helps with financial reporting and analysis.

  1. 1In 'Memo' field, add template text like 'MRR: ${{subscription.plan.amount}}'
  2. 2Map subscription plan name to a custom field if available
  3. 3Add Stripe subscription ID to 'CustomerMemo' for reference
  4. 4Include billing frequency (monthly/annual) in the memo
What you should see: Invoice memo shows MRR amount, plan name, and Stripe subscription ID for easy tracking.
Common mistake — Custom fields in QuickBooks must be created first — they won't auto-generate from Make mappings.
9

Scenario controls > Run once

Test with sample data

Run the scenario with Stripe's test data to verify invoice creation works correctly. This catches mapping errors before processing real renewals.

  1. 1Click 'Run once' at the bottom of the scenario
  2. 2Trigger a test webhook from your Stripe dashboard
  3. 3Check that the invoice appears in QuickBooks with correct amounts
  4. 4Verify customer information and line item descriptions are accurate
What you should see: Test invoice appears in QuickBooks with Stripe customer name, correct amount, and billing period details.
Common mistake — Use Stripe's test mode data first — production webhooks will create real invoices in QuickBooks immediately.
Make
▶ Run once
executed
QuickBooks
Stripe
Stripe
🔔 notification
received
10

QuickBooks module > Right-click > Error handler

Configure error handling

Set up error handling for failed invoice creation and duplicate detection. This prevents the scenario from breaking when QuickBooks is unavailable or data conflicts occur.

  1. 1Right-click the QuickBooks module and select 'Add error handler'
  2. 2Choose 'Ignore' for duplicate customer errors
  3. 3Set 'Retry' with 3 attempts for temporary connection failures
  4. 4Add a 'Break' directive for invalid data errors
What you should see: Error handler routes appear around the QuickBooks module showing your retry and ignore conditions.
11

Stripe Dashboard > Developers > Webhooks > Add endpoint

Set webhook URL in Stripe

Copy the webhook URL from Make into your Stripe dashboard to enable real-time invoice processing. This completes the connection between systems.

  1. 1Copy the webhook URL from the Stripe trigger module
  2. 2Log into your Stripe dashboard and go to Developers > Webhooks
  3. 3Click 'Add endpoint' and paste the Make webhook URL
  4. 4Select 'invoice.payment_succeeded' as the event type
What you should see: Stripe webhook shows 'Active' status and lists 'invoice.payment_succeeded' as the monitored event.
Common mistake — Test the webhook in Stripe after adding — a failed test means Make won't receive real renewal events.
12

Scenario settings > Schedule > Immediately

Activate scenario scheduling

Turn on the scenario and set appropriate scheduling intervals. Since this uses webhooks, immediate processing is available but consider rate limits for high-volume accounts.

  1. 1Toggle the scenario 'ON' using the switch in the top right
  2. 2Set scheduling to 'Immediately' for real-time processing
  3. 3Review the execution history to confirm successful runs
  4. 4Monitor for 24 hours to catch any edge cases or errors
What you should see: Scenario shows 'Active' status with green indicator and successful webhook processing in the execution log.
Common mistake — QuickBooks API has a 500 requests/hour limit — batch processing may be needed for high-volume subscription businesses.

Scaling Beyond 400+ renewals/day+ Records

If your volume exceeds 400+ renewals/day records, apply these adjustments.

1

Batch process during off-hours

Switch from immediate webhook processing to scheduled batches every 2 hours. This prevents QuickBooks API rate limit errors and reduces Make operation costs by 30%.

2

Use iterator for bulk operations

Add Make's iterator module when processing multiple line items per invoice. This handles complex subscriptions with add-ons without hitting memory limits on large invoices.

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 need real-time invoice creation and have complex subscription billing with multiple plans or add-ons. Make's visual router system handles different subscription types better than Zapier's linear approach, and the built-in retry logic handles QuickBooks API timeouts gracefully. Skip Make if you only have simple monthly subscriptions under 100 customers — Zapier's direct Stripe-to-QuickBooks zap is faster to set up and costs less.

Cost

This workflow uses roughly 2-3 operations per renewal: webhook trigger, filter check, and invoice creation. At 500 renewals per month, that's 1,500 operations total. Make's Core plan at $9/month includes 10,000 operations, so you're well covered. Zapier charges $20/month for the same webhook volume on their Starter plan. N8N would be free if self-hosted but requires server maintenance. Make wins on cost and maintenance overhead here.

Tradeoffs

Zapier's Stripe trigger includes more subscription metadata without needing formatters, and their QuickBooks integration auto-matches customers more reliably than Make's mapping system. N8N offers better error handling granularity — you can retry specific failed steps instead of the whole workflow. But Make's filter and router modules let you handle different billing scenarios (annual vs monthly, trials, discounts) in one scenario instead of building separate workflows for each case.

QuickBooks API pagination kicks in at 100 records, so bulk historical imports need Make's iterator module to loop through pages. Stripe webhook retries stop after 72 hours — if Make is down longer than that, you'll miss renewals and need manual reconciliation. The biggest gotcha: QuickBooks timestamps are company timezone but Stripe uses UTC, so invoice dates can shift by a day if you don't convert timezones in Make's date formatter.

Ideas for what to build next

  • Add Slack notifications for large renewalsCreate a filter for renewals over $500 and send alerts to your finance team in Slack with customer details and MRR impact.
  • Sync customer updates from Stripe to QuickBooksBuild a second scenario that updates QuickBooks customer records when contact info changes in Stripe, keeping both systems synchronized.
  • Create monthly MRR summary reportsUse Make's scheduling to generate monthly QuickBooks reports that calculate total MRR, churn, and growth metrics from your invoice data.

Related guides

Was this guide helpful?
QuickBooks + Stripe overviewMake profile →