

How to Auto-Create QuickBooks Invoices from Stripe Payments with N8n
Automatically generate QuickBooks invoices with customer details whenever a Stripe payment succeeds.
Steps and UI details are based on platform versions at time of writing — check each platform for the latest interface.
Best for
Businesses needing custom invoice logic or data transformations between Stripe payments and QuickBooks.
Not ideal for
Teams wanting simple plug-and-play setup without technical configuration or custom field mapping.
Sync type
real-timeUse case type
syncReal-World Example
A SaaS startup processing 150 payments monthly uses this to create QuickBooks invoices immediately when Stripe charges succeed. Before automation, their bookkeeper manually entered payment data twice weekly, often missing payments for 3-4 days. Now invoices appear in QuickBooks within 30 seconds of payment completion, keeping revenue tracking current for investor reports.
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 n8n
Copy the pre-built n8n blueprint and paste it straight into n8n. 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 Reference | CustomerRef | |
| Invoice Amount | Line.Amount | |
| Payment Description | Line.Description | |
| Transaction Date | TxnDate | |
4 optional fields▸ show
| Document Number | DocNumber |
| Payment Method | PaymentMethodRef |
| Customer Memo | CustomerMemo |
| Billing Address | BillAddr |
Step-by-Step Setup
Dashboard > + > Create New Workflow
Create New N8n Workflow
Start fresh with a blank workflow. N8n's webhook-based architecture handles Stripe events immediately instead of polling every 15 minutes like other platforms.
- 1Click the "+" button in your N8n dashboard
- 2Select "Create New Workflow"
- 3Name it "Stripe-to-QuickBooks-Invoices"
- 4Click "Create" to open the workflow editor
Workflow Editor > Add Node > Webhook
Add Stripe Webhook Trigger
Configure N8n to receive payment success events from Stripe. This webhook URL needs to be registered in your Stripe dashboard later.
- 1Click "Add first node"
- 2Search for and select "Webhook"
- 3Leave HTTP Method as "POST"
- 4Set Authentication to "None"
- 5Copy the webhook URL from the test panel
Stripe Dashboard > Developers > Webhooks > Add endpoint
Register Webhook in Stripe
Tell Stripe to send payment events to your N8n workflow. Only select the payment_intent.succeeded event to avoid unnecessary triggers.
- 1Open your Stripe Dashboard in a new tab
- 2Go to Developers > Webhooks
- 3Click "Add endpoint"
- 4Paste the N8n webhook URL
- 5Select only "payment_intent.succeeded" from the events list
- 6Click "Add endpoint"
N8n Workflow > Webhook Node > Listen for test event
Test Stripe Connection
Generate a test payment event to verify N8n receives the webhook data correctly. This populates the workflow with real Stripe data structure.
- 1In Stripe Dashboard, click your webhook endpoint
- 2Click "Send test webhook"
- 3Choose "payment_intent.succeeded" event
- 4Click "Send test webhook"
- 5Return to N8n and click "Listen for test event"
Workflow Editor > + > QuickBooks Online > Create > Invoice
Add QuickBooks Node
Connect to QuickBooks Online to create invoices. N8n uses OAuth2 authentication which requires a one-time authorization flow.
- 1Click the "+" button after the webhook node
- 2Search for "QuickBooks"
- 3Select "QuickBooks Online"
- 4Choose "Create" operation
- 5Select "Invoice" resource
QuickBooks Node > Credentials > Create New
Authenticate QuickBooks
Complete OAuth2 flow to authorize N8n access to your QuickBooks company file. This happens once and stores the connection for future use.
- 1Click "Create New Credential" in the QuickBooks node
- 2Name it "QB-Production"
- 3Click "Connect my account"
- 4Log into QuickBooks when prompted
- 5Select your company file
- 6Click "Authorize"
QuickBooks Node > Customer Fields
Map Customer Information
Extract customer details from Stripe payment data to populate QuickBooks invoice fields. N8n's expression editor handles the JSON path mapping.
- 1Click the "Customer" field dropdown
- 2Select "Add Expression"
- 3Enter: {{$json.data.object.customer}}
- 4Set "Line1" to {{$json.data.object.billing_details.address.line1}}
- 5Map "CustomerMemo" to {{$json.data.object.description}}
QuickBooks Node > Line Items > Add Item
Configure Invoice Line Items
Set up the invoice amount and description using Stripe payment data. QuickBooks requires at least one line item with amount and description.
- 1Scroll to "Line Items" section
- 2Click "Add Item"
- 3Set "Amount" to {{$json.data.object.amount / 100}}
- 4Map "Description" to {{$json.data.object.description}}
- 5Set "DetailType" to "SalesItemLineDetail"
QuickBooks Node > Payment Details
Set Payment Method Mapping
Record how the customer paid by mapping Stripe payment method to QuickBooks payment terms. This helps with accounting reconciliation.
- 1Find "PaymentMethodRef" field
- 2Add expression: {{$json.data.object.payment_method_types[0]}}
- 3Set "DueDate" to current date using {{$now}}
- 4Map "TxnDate" to {{$json.data.object.created * 1000}}
- 5Set "DocNumber" to {{$json.data.object.id}}
QuickBooks Node > Settings > Continue on Fail
Add Error Handling
Configure what happens when QuickBooks API fails or returns errors. N8n's error handling prevents the workflow from breaking on API issues.
- 1Click the QuickBooks node settings gear
- 2Select "Continue on Fail"
- 3Add an HTTP Request node after QuickBooks
- 4Connect it to the "On Error" output
- 5Configure it to POST error details to your logging endpoint
Workflow Editor > Execute Workflow
Test Complete Workflow
Run the full workflow with real test data to verify invoice creation works end-to-end. This catches field mapping errors before going live.
- 1Click "Execute Workflow" button
- 2Check that webhook receives test data
- 3Verify QuickBooks node executes successfully
- 4Log into QuickBooks to confirm invoice was created
- 5Check that invoice amount and customer details are correct
Workflow Editor > Active Toggle
Activate Production Webhook
Enable the workflow to run automatically on live Stripe payments. N8n workflows are inactive by default to prevent accidental triggers.
- 1Click the workflow "Active" toggle in the top right
- 2Confirm the toggle shows "Active" status
- 3Test with a small real payment in Stripe
- 4Monitor the workflow executions tab for incoming events
- 5Check QuickBooks for the new invoice
Drop this into an n8n Code node.
JavaScript — Code Node// Convert Stripe metadata to QuickBooks custom fields▸ Show code
// Convert Stripe metadata to QuickBooks custom fields
const metadata = $json.data.object.metadata;
const customFields = Object.keys(metadata).map(key => ({... expand to see full code
// Convert Stripe metadata to QuickBooks custom fields
const metadata = $json.data.object.metadata;
const customFields = Object.keys(metadata).map(key => ({
DefinitionId: key,
StringValue: metadata[key],
Type: 'StringType'
}));
return { customFields };Scaling Beyond 400+ payments/day+ Records
If your volume exceeds 400+ payments/day records, apply these adjustments.
Implement batch processing
Group multiple payments into single QuickBooks API calls using N8n's batch node. QuickBooks allows up to 30 invoice creations per batch request, reducing API calls and avoiding rate limits.
Add execution delays
Insert 2-3 second delays between QuickBooks API calls when processing payment backlogs. Use N8n's Wait node to prevent hitting the 500 requests/hour rate limit during high-volume periods.
Set up monitoring alerts
Configure N8n webhook notifications to Slack or email when invoice creation fails or QuickBooks API returns errors. High-volume workflows need active monitoring to catch issues before they affect cash flow reporting.
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 N8n for this if you need custom data transformations between Stripe and QuickBooks or want to avoid monthly subscription fees. N8n's code nodes let you handle complex payment scenarios like split billing or custom invoice numbering that templated platforms can't manage. The webhook-based triggers are faster than Zapier's 15-minute polling. Skip N8n if you want plug-and-play setup — Make's QuickBooks connector has better field auto-mapping for standard invoice workflows.
This workflow uses 1 execution per payment. At 200 payments monthly, that's 200 executions total. N8n Cloud's Starter plan ($20/month) includes 5,000 executions, so you're well covered. Zapier would need the Professional plan ($49/month) for reliable webhooks and QuickBooks access. Make's Core plan ($10/month) handles the same volume but limits you to 10,000 operations. N8n saves you $29/month compared to Zapier.
Make has cleaner QuickBooks field mapping with dropdown menus for customer selection and automatic tax calculation setup. Zapier's Stripe integration includes more payment event options like subscription renewals and dispute notifications. But N8n's JavaScript code nodes handle Stripe's complex nested JSON better than either platform's built-in data transformation. You can parse payment metadata, calculate custom fees, or format invoice descriptions with actual code instead of limited formula functions.
QuickBooks API rate limits hit at 500 requests per hour — if you process high payment volume, add delays between invoice creation calls. Stripe webhook signatures aren't validated in basic N8n webhook nodes, so payment data could theoretically be spoofed. Customer matching fails when Stripe customer emails don't exist in QuickBooks, requiring either customer auto-creation or fallback to guest invoices. N8n's expression syntax for date conversion between Stripe Unix timestamps and QuickBooks date format trips up most first-time users.
Ideas for what to build next
- →Add customer creation automation — Build a parallel workflow that creates new QuickBooks customers when Stripe customer.created events fire, preventing invoice creation failures.
- →Set up payment reconciliation tracking — Create a follow-up workflow that marks invoices as paid in QuickBooks when Stripe payments settle, automating your accounts receivable process.
- →Build refund handling workflow — Add a separate workflow for payment_intent.canceled events that creates credit memos or adjusts existing invoices when Stripe processes refunds.
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