At a Glance — n8n QuickBooks Online Integration

  • QuickBooks Online only: Native n8n node uses OAuth2; QuickBooks Desktop uses a separate middleware API and is not directly supported
  • Node covers: Customer, Invoice, Payment, Bill, Product/Service Item, Estimate, Purchase Order — create, update, get, delete/void operations
  • OAuth2 setup: Create an Intuit Developer App → copy Client ID + Secret → connect in n8n (token refreshes automatically; no re-auth unless you revoke)
  • Most common workflow: Stripe payment → QBO Sales Receipt or Invoice payment — use Payment Intent ID as DocNumber for idempotency to prevent duplicate records
  • Sandbox available: Toggle Sandbox/Production in n8n credentials — test against Intuit sample data before touching real accounting records
  • Avoid deletes: Use Invoice → Void (not delete) to maintain the audit trail; QBO flags deleted records but you lose searchability

What the n8n QuickBooks Node Covers

n8n ships with a native QuickBooks Online node that works through OAuth2 — no API key setup, no manual token management. Once you connect your QBO account, you get access to the following resources:

The node handles QuickBooks Online only. QuickBooks Desktop uses a completely different API (the QuickBooks Desktop Connector middleware) and is not directly supported.

Connecting QuickBooks to n8n

QuickBooks uses OAuth2, which requires a QBO Developer App to generate the credentials. This is a one-time setup:

  1. Go to developer.intuit.com and sign in with your Intuit account
  2. Create a new app — select QuickBooks Online and Payments as the platform
  3. In the app's Keys & OAuth section, copy the Client ID and Client Secret
  4. Add your n8n OAuth callback URL as a redirect URI (n8n shows this URL in the credential form)
  5. In n8n: Credentials → New → QuickBooks OAuth2 API → enter Client ID and Secret → click Connect

After connecting, n8n stores and refreshes the token automatically. You do not need to re-authenticate unless you revoke access in QuickBooks.

Sandbox vs Production

Intuit provides a sandbox environment for testing. In n8n's QuickBooks credential, toggle Environment between Sandbox and Production. Build and test your workflows in sandbox first — sandbox has sample data including customers, invoices, and products that let you verify your field mappings without touching real accounting records.

Workflow: Stripe Payment → QuickBooks Invoice

This is the most common accounting automation we build — and the one that saves teams the most time. Without automation, every Stripe payment requires a manual QuickBooks entry. With n8n, it happens in seconds.

Workflow structure

  1. Stripe Trigger — listen for payment_intent.succeeded (or charge.succeeded for older Stripe integrations)
  2. Set node — extract amount, currency, customer, description, and metadata from the Stripe payload
  3. QuickBooks node (Customer → Get All) — search for existing QBO customer by email ({{ $json.customer_email }})
  4. IF node — does the customer exist in QBO?
  5. QuickBooks node (Customer → Create) — on false branch: create customer with name and email from Stripe
  6. QuickBooks node (Invoice → Create) — create invoice with customer ID, line item (service item ID + amount + description), due date
  7. QuickBooks node (Payment → Create) — apply payment to the invoice, marking it paid

For a detailed step-by-step build of this workflow, see Stripe to QuickBooks sync with n8n.

Getting the service item ID

QuickBooks invoices require a line item with a product/service ID — you cannot just pass a description string. Add a QuickBooks Item → Get All step early in your workflow to retrieve your service item IDs, then hard-code the correct ID in your Set node. Alternatively, store it as a static value in the workflow settings if you only bill for one service type.

Workflow: Form Submission → New Customer + Invoice

For service businesses that collect client details via a form (Typeform, Tally, Jotform, etc.) before billing, this workflow creates the QBO customer and sends the first invoice automatically:

  1. Webhook trigger — receive form submission payload
  2. QuickBooks (Customer → Create) — create customer with name, email, billing address from form fields
  3. QuickBooks (Invoice → Create) — create invoice with the new customer ID, service line item, and amount from the form
  4. QuickBooks (Invoice → Send) — email the invoice to the customer
  5. Slack node — notify your team that a new client and invoice were created

This eliminates the two manual steps that bookkeepers typically handle between a new client signing and their first invoice going out.

Workflow: Daily P&L Summary to Slack

QuickBooks has reporting built in, but pulling a daily P&L into Slack without logging into QBO is a quality-of-life improvement many finance teams appreciate.

  1. Schedule Trigger — 8 AM every weekday
  2. HTTP Request node — call the QuickBooks Reports API: GET /v3/company/{realmId}/reports/ProfitAndLoss?date_macro=This+Month with OAuth2 credential
  3. Code node — extract total income, total expenses, net income from the response JSON
  4. Slack node — post formatted message: "MTD: Income $X · Expenses $X · Net $X"

The Reports API is not covered by n8n's QuickBooks node, so use an HTTP Request node with the QuickBooks OAuth2 credential for this step.

Error Handling for Accounting Workflows

Accounting errors are high-stakes — a missed invoice or a duplicate payment record creates real problems. A few patterns reduce the risk:

Frequently asked questions

Does n8n have a native QuickBooks node? Yes. n8n includes a built-in QuickBooks Online node with support for customers, invoices, payments, products/services, bills, estimates, and purchase orders. Authentication uses OAuth2, which means you connect your QuickBooks Online account once and n8n handles token refresh automatically. The node does not support QuickBooks Desktop — that requires a different integration approach via the QuickBooks Desktop Connector or a local middleware.

How do you connect QuickBooks to n8n? In n8n, go to Credentials → New → QuickBooks OAuth2. You will need a QuickBooks app client ID and client secret — create a free app at developer.intuit.com. Set the redirect URI to your n8n OAuth callback URL (shown in the credential form). After saving, click Connect and authorize through the QuickBooks OAuth2 flow. n8n stores and refreshes the token automatically.

Can n8n sync Stripe payments to QuickBooks automatically? Yes. Use a Stripe Trigger node listening for the payment_intent.succeeded event. Extract the amount, currency, customer email, and description from the Stripe payload. In n8n, look up the QuickBooks customer by email (or create if not found), then create a QuickBooks Invoice or Sales Receipt with the Stripe payment data. This eliminates manual bookkeeping for every Stripe transaction. See our detailed walkthrough: stripe to QuickBooks sync with n8n.

What QuickBooks records can n8n create and update? The n8n QuickBooks Online node supports: Customers (create, update, get, get all), Invoices (create, delete, get, get all, send, void), Payments (create, delete, get, get all, void), Products/Services (create, update, get, get all), Bills (create, update, delete, get, get all), Estimates (create, delete, get, get all, send), and Purchase Orders (create, update, delete, get, get all). For operations not covered by the node, use the HTTP Request node with QuickBooks OAuth2 credentials to call the QuickBooks API directly.

How do you handle QuickBooks API rate limits in n8n? QuickBooks Online enforces rate limits — typically 500 requests per minute per app per realm. For batch workflows processing many records, add a Wait node (250–500ms) between QuickBooks node calls. Enable Retry on Fail on any HTTP Request nodes calling QuickBooks directly, with 3 tries and a 1-second wait. For large data migrations, process records in batches of 50–100 using n8n's Loop Over Items node to stay well within limits.

Can n8n send QuickBooks invoices automatically? Yes. The QuickBooks node includes a Send action on the Invoice resource. After creating an invoice, add a second QuickBooks node set to Invoice → Send, passing the invoice ID. QuickBooks will send the invoice to the customer email address stored on the customer record. You can also use the Estimate → Send action for quotes before a project begins.

Need This Built?

Entech Solutions builds production QuickBooks automation with n8n — from straightforward Stripe-to-QBO syncs to multi-source accounting pipelines involving NetSuite, Shopify, and HubSpot. See our n8n QuickBooks integration service page for scope and pricing information.