Intermediate~20 min setupFinance & FinanceVerified April 2026
QuickBooks logo
Stripe logo

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-time

Use case type

sync

Real-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.

/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 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.

Active Stripe account with payment processing enabled
QuickBooks Online subscription with API access (Simple Start or higher)
N8n Cloud account or self-hosted N8n instance with internet access
Admin access to both Stripe Dashboard and QuickBooks company file
Basic understanding of JSON data structure for field mapping

Field Mapping

Map these fields between your apps.

FieldAPI Name
Required
Customer ReferenceCustomerRef
Invoice AmountLine.Amount
Payment DescriptionLine.Description
Transaction DateTxnDate
4 optional fields▸ show
Document NumberDocNumber
Payment MethodPaymentMethodRef
Customer MemoCustomerMemo
Billing AddressBillAddr

Step-by-Step Setup

1

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.

  1. 1Click the "+" button in your N8n dashboard
  2. 2Select "Create New Workflow"
  3. 3Name it "Stripe-to-QuickBooks-Invoices"
  4. 4Click "Create" to open the workflow editor
What you should see: Empty workflow canvas with the "Add first node" placeholder visible in the center.
2

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.

  1. 1Click "Add first node"
  2. 2Search for and select "Webhook"
  3. 3Leave HTTP Method as "POST"
  4. 4Set Authentication to "None"
  5. 5Copy the webhook URL from the test panel
What you should see: Webhook node shows a unique URL ending in /webhook/[random-string]. The URL is automatically copied to your clipboard.
Common mistake — Don't change the HTTP method to GET — Stripe only sends POST requests
n8n
+
click +
search apps
QuickBooks
QU
QuickBooks
Add Stripe Webhook Trigger
QuickBooks
QU
module added
3

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.

  1. 1Open your Stripe Dashboard in a new tab
  2. 2Go to Developers > Webhooks
  3. 3Click "Add endpoint"
  4. 4Paste the N8n webhook URL
  5. 5Select only "payment_intent.succeeded" from the events list
  6. 6Click "Add endpoint"
What you should see: Stripe shows your new webhook endpoint with status "Enabled" and 1 event type selected.
Common mistake — Selecting "All events" will trigger on refunds and failures too — stick to payment_intent.succeeded only
4

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.

  1. 1In Stripe Dashboard, click your webhook endpoint
  2. 2Click "Send test webhook"
  3. 3Choose "payment_intent.succeeded" event
  4. 4Click "Send test webhook"
  5. 5Return to N8n and click "Listen for test event"
What you should see: N8n displays JSON data containing payment_intent object with amount, currency, customer details, and payment_method information.
Common mistake — If no data appears, check that your webhook URL in Stripe exactly matches N8n's URL including the /webhook/ path
n8n
▶ Run once
executed
QuickBooks
Stripe
Stripe
🔔 notification
received
5

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.

  1. 1Click the "+" button after the webhook node
  2. 2Search for "QuickBooks"
  3. 3Select "QuickBooks Online"
  4. 4Choose "Create" operation
  5. 5Select "Invoice" resource
What you should see: QuickBooks node appears with empty credential dropdown and "Invoice" selected as the resource type.
6

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.

  1. 1Click "Create New Credential" in the QuickBooks node
  2. 2Name it "QB-Production"
  3. 3Click "Connect my account"
  4. 4Log into QuickBooks when prompted
  5. 5Select your company file
  6. 6Click "Authorize"
What you should see: Green "Connected" status appears next to your credential name. The QuickBooks node shows available invoice fields.
Common mistake — Make sure you authorize the correct QuickBooks company — you can't change this later without re-authenticating
7

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.

  1. 1Click the "Customer" field dropdown
  2. 2Select "Add Expression"
  3. 3Enter: {{$json.data.object.customer}}
  4. 4Set "Line1" to {{$json.data.object.billing_details.address.line1}}
  5. 5Map "CustomerMemo" to {{$json.data.object.description}}
What you should see: Customer fields show Stripe expression syntax. The expression preview displays sample customer data from your test webhook.
Common mistake — Stripe customer field might be null for guest checkouts — add a fallback expression like {{$json.data.object.customer || 'Guest Customer'}}
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

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.

  1. 1Scroll to "Line Items" section
  2. 2Click "Add Item"
  3. 3Set "Amount" to {{$json.data.object.amount / 100}}
  4. 4Map "Description" to {{$json.data.object.description}}
  5. 5Set "DetailType" to "SalesItemLineDetail"
What you should see: Line item shows the Stripe amount converted from cents to dollars, with payment description as the line item description.
Common mistake — Stripe amounts are in cents — always divide by 100 or your invoices will be 100x too large
9

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.

  1. 1Find "PaymentMethodRef" field
  2. 2Add expression: {{$json.data.object.payment_method_types[0]}}
  3. 3Set "DueDate" to current date using {{$now}}
  4. 4Map "TxnDate" to {{$json.data.object.created * 1000}}
  5. 5Set "DocNumber" to {{$json.data.object.id}}
What you should see: Payment fields populated with Stripe payment method (card, bank_transfer, etc.) and transaction timestamp converted to QuickBooks date format.
Common mistake — Stripe timestamps are Unix seconds but QuickBooks expects milliseconds — multiply created timestamp by 1000
10

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.

  1. 1Click the QuickBooks node settings gear
  2. 2Select "Continue on Fail"
  3. 3Add an HTTP Request node after QuickBooks
  4. 4Connect it to the "On Error" output
  5. 5Configure it to POST error details to your logging endpoint
What you should see: QuickBooks node shows both success and error output connections. Error path is ready to handle API failures gracefully.
Common mistake — Without error handling, one failed invoice creation will stop processing for all subsequent payments
11

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.

  1. 1Click "Execute Workflow" button
  2. 2Check that webhook receives test data
  3. 3Verify QuickBooks node executes successfully
  4. 4Log into QuickBooks to confirm invoice was created
  5. 5Check that invoice amount and customer details are correct
What you should see: Green checkmarks on both nodes. New invoice appears in QuickBooks with correct amount, customer info, and payment method from Stripe.
Common mistake — Test invoices count against your QuickBooks API rate limit — don't run dozens of tests in a row
12

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.

  1. 1Click the workflow "Active" toggle in the top right
  2. 2Confirm the toggle shows "Active" status
  3. 3Test with a small real payment in Stripe
  4. 4Monitor the workflow executions tab for incoming events
  5. 5Check QuickBooks for the new invoice
What you should see: Workflow toggle shows "Active" with green indicator. Real Stripe payments now trigger automatic invoice creation in QuickBooks.
Common mistake — Start with a small test payment — if your field mapping is wrong, you'll create incorrect invoices for real customers

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.

1

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.

2

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.

3

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

VerdictWhy n8n for this workflow

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.

Cost

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.

Tradeoffs

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 automationBuild a parallel workflow that creates new QuickBooks customers when Stripe customer.created events fire, preventing invoice creation failures.
  • Set up payment reconciliation trackingCreate a follow-up workflow that marks invoices as paid in QuickBooks when Stripe payments settle, automating your accounts receivable process.
  • Build refund handling workflowAdd a separate workflow for payment_intent.canceled events that creates credit memos or adjusts existing invoices when Stripe processes refunds.

Related guides

Was this guide helpful?
QuickBooks + Stripe overviewn8n profile →