

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-timeUse case type
syncReal-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.
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 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.
Field Mapping
Map these fields between your apps.
| Field | API Name | |
|---|---|---|
| Required | ||
| Customer Email | customer.email | |
| Invoice Amount | amount_paid | |
| Billing Period | lines.data[].period | |
| Customer Name | customer.name | |
| Invoice Date | created | |
2 optional fields▸ show
| Subscription Plan | lines.data[].plan.nickname |
| Stripe Invoice ID | id |
Step-by-Step Setup
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.
- 1Click 'Create a new scenario' from your Make dashboard
- 2Click the large '+' button in the center of the canvas
- 3Search for 'Stripe' in the app selector
- 4Select 'Stripe' from the results
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.
- 1Select 'Watch Events' from the Stripe trigger options
- 2Connect your Stripe account by entering your webhook secret key
- 3In the 'Event Types' dropdown, select 'invoice.payment_succeeded'
- 4Set the webhook URL that Make provides to your Stripe dashboard
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")}}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.
- 1Click the '+' button after your Stripe trigger
- 2Select 'Tools' > 'Set variable' from the module list
- 3Add a filter condition where 'billing_reason' equals 'subscription_cycle'
- 4Name this filter 'Recurring Only' for easy identification
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 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.
- 1Click '+' after your filter to add the next module
- 2Search for and select 'QuickBooks Online'
- 3Choose 'Create an Invoice' from the action list
- 4Click 'Create a connection' and authorize Make to access your QuickBooks company
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.
- 1In the Customer field, select 'Map' from the dropdown
- 2Choose the Stripe customer email as the lookup field
- 3Map 'customer.name' from Stripe to 'DisplayName' in QuickBooks
- 4Set customer creation to 'Create if not exists'
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.
- 1In the Line Items section, click 'Add item'
- 2Map 'lines.data[].description' from Stripe to 'Description'
- 3Set 'Amount' to 'lines.data[].amount' divided by 100 (converts cents)
- 4Map 'subscription.current_period_start' to create billing period descriptions
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.
- 1Set 'TxnDate' to Stripe's 'created' timestamp
- 2Map 'DueDate' to 'lines.data[].period.end' from the subscription
- 3Set 'PrivateNote' to include Stripe invoice ID for tracking
- 4Choose your default payment terms from the dropdown
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.
- 1In 'Memo' field, add template text like 'MRR: ${{subscription.plan.amount}}'
- 2Map subscription plan name to a custom field if available
- 3Add Stripe subscription ID to 'CustomerMemo' for reference
- 4Include billing frequency (monthly/annual) in the memo
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.
- 1Click 'Run once' at the bottom of the scenario
- 2Trigger a test webhook from your Stripe dashboard
- 3Check that the invoice appears in QuickBooks with correct amounts
- 4Verify customer information and line item descriptions are accurate
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.
- 1Right-click the QuickBooks module and select 'Add error handler'
- 2Choose 'Ignore' for duplicate customer errors
- 3Set 'Retry' with 3 attempts for temporary connection failures
- 4Add a 'Break' directive for invalid data errors
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.
- 1Copy the webhook URL from the Stripe trigger module
- 2Log into your Stripe dashboard and go to Developers > Webhooks
- 3Click 'Add endpoint' and paste the Make webhook URL
- 4Select 'invoice.payment_succeeded' as the event type
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.
- 1Toggle the scenario 'ON' using the switch in the top right
- 2Set scheduling to 'Immediately' for real-time processing
- 3Review the execution history to confirm successful runs
- 4Monitor for 24 hours to catch any edge cases or errors
Scaling Beyond 400+ renewals/day+ Records
If your volume exceeds 400+ renewals/day records, apply these adjustments.
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%.
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
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.
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.
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 renewals — Create 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 QuickBooks — Build a second scenario that updates QuickBooks customer records when contact info changes in Stripe, keeping both systems synchronized.
- →Create monthly MRR summary reports — Use Make's scheduling to generate monthly QuickBooks reports that calculate total MRR, churn, and growth metrics from your invoice data.
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