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:

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.