Connecting QuickBooks Online to n8n: automate invoices, estimates and customers for your bookkeeping
Published 27 August 2026 · 5 min read
QuickBooks Online remains one of the most widely installed accounting packages worldwide, including among some French-speaking freelancers and small businesses that work with English-speaking clients or subsidiaries. n8n ships a native node — but as with Xero or Sage Business Cloud, it only covers part of the API. This guide walks through creating the app on the Intuit developer portal, the Sandbox/Production split, what the native node actually does, its multi-company quirk (very different from Xero), and how to extend automation with HTTP Request for everything else.
Creating the app on the Intuit developer portal
QuickBooks only authenticates via OAuth2, with no static-token alternative. Create the app on developer.intuit.com, under My Apps:
- Create a QuickBooks Online app, specifying the scopes you need (
com.intuit.quickbooks.accountingcovers the accounting essentials). - Under the Keys & OAuth tab, grab the Client ID and Client Secret — Intuit generates two separate pairs: one for the Sandbox environment, one for Production.
- Add the redirect URL generated by n8n (shown when you create the credential) to the app's list of authorized Redirect URIs.
In n8n, create a QuickBooks OAuth2 API credential, paste in the Client ID and Client Secret for the environment you're targeting, then start the authorization flow: QuickBooks shows a login screen where the user explicitly picks which company to authorize.
Sandbox first, Production later
This is the point where QuickBooks differs most from the other accounting APIs already covered on this blog: Intuit strictly separates the two environments.
- Sandbox: available immediately after creating the app, with a prefilled test company (fictitious customers, invoices and products already in place). Development keys only work in this environment — ideal for building and testing the n8n workflow without touching real accounting data.
- Production: requires submitting the app for an Intuit review, via a questionnaire about what the app does and how it handles data. Approval typically takes a few days, after which Intuit issues production keys, distinct from the Sandbox ones.
Don't try to connect a real company before completing this step: the Sandbox credential and the Production credential are two separate objects in n8n, not to be confused when you flip a workflow over to live data.
The realm ID: one company per connection, no multi-tenancy
Xero lets a single OAuth2 token reach several organizations through a tenant-id header chosen on each call. QuickBooks works differently: each OAuth2 authorization is tied to a single company, identified by a realmId fixed at connection time and returned in the redirect URL after consent.
The direct consequence for an accounting firm managing several client files: there's no one-size-fits-all credential. Every QuickBooks company you want to automate needs its own n8n credential, with its own OAuth2 authorization — closer, in spirit, to the approach described in our guide on hosting n8n for a multi-client agency than to Xero's tenant model. That's not necessarily a drawback: it strictly isolates each client's data from the others, with no risk of a poorly scoped credential exposing one company's books to a workflow meant for another.
What the native node actually does
n8n's QuickBooks node exposes five main resources, with Create, Update, Get and Get Many operations for each:
| Resource | Typical use case |
|---|---|
| Customer | Sync your customers (CRM, order form) into QuickBooks without re-typing |
| Invoice | Generate a customer invoice when an order or subscription closes |
| Estimate | Automatically create a quote from an inbound request, before converting it to an invoice |
| Bill | Record a vendor bill received by email, after extracting the data |
| Employee | Keep an employee record in sync from an HR tool, ahead of payroll |
A common chain: a Stripe webhook or an e-commerce order triggers a workflow that checks (Get Many on Customer) whether the customer already exists in QuickBooks, creates it if not, then generates the matching invoice — the same idempotent upsert pattern detailed in our guide to connecting Attio to n8n. On the purchasing side, a vendor bill received as an email attachment can be extracted with AI and then created as a Bill in QuickBooks, with human validation if the amount crosses a threshold.
Going further with HTTP Request
For anything outside these five resources — recorded payments (Payment), vendors as a dedicated record (Vendor), accounting reports (Profit & Loss, Balance Sheet), or complex queries via the SQL-like /query endpoint — the HTTP Request node takes over, reusing the OAuth2 credential you already created rather than duplicating authentication:
- Base URL:
https://quickbooks.api.intuit.com/v3/company/{realmId}/...(replace{realmId}with the connected company's identifier, and swap insandbox-quickbooks.api.intuit.comin the test environment). - Authentication: Generic Credential Type → OAuth2, pointing to the QuickBooks credential you already created.
- Useful header:
Accept: application/json. - The
/queryendpoint accepts a SQL-like syntax (SELECT * FROM Payment WHERE TxnDate >= '2026-08-01'), handy for filtering by date without re-downloading the entire history on every run — the same incremental-window principle described in our guide to keeping an index up to date without reprocessing everything.
Pacing calls without hitting the limit
QuickBooks enforces a limit of 500 requests per minute per company (realm ID), with a maximum of 10 concurrent requests per app. Batch calls through the Batch endpoint are capped lower — 120 requests per minute per realm since late October 2025 in Production. On a batch run (syncing hundreds of customers, importing a month of invoices), hitting the limit produces the same 429 error covered in our guide to API rate limits: a small delay between calls, via a Wait node, prevents the error instead of fixing it after the fact.
Why automating is worth it, even for a small business
Accounting automation is often seen as something only large companies with a dedicated IT department can pull off. A 2026 study published in the journal Information (MDPI), with Carlos D. Paternina-Arboleda among its authors, proposes exactly the opposite: a "lightweight" RPA framework built for SMEs whose financial processes still largely run on spreadsheets, in contrast to the heavier RPA deployments documented in large organizations (see on Google Scholar). That finding maps directly onto using a tool like n8n with QuickBooks: you don't need a dedicated IT team to eliminate re-typing between a CRM, an order form and your books — a webhook, a QuickBooks node and, beyond that, a handful of HTTP Request calls cover most of the customer-invoice and vendor-bill flow.
Going further
Connecting QuickBooks to n8n eliminates double entry between your sales tools and your bookkeeping, with strict per-company isolation that suits an agency or firm managing several client files well. The Compliance & Audit Pack (€149) builds on the same logging principles for anyone who needs to document every invoice issued or received in an audit trail; the Inbox AI Pack (€79) sorts and prioritizes incoming vendor bills received by email before they're created in QuickBooks. The Complete FlowKit Bundle (€269) combines all three packs for end-to-end automation, from the inbox to the books.
FAQ
Frequently asked questions
Is n8n's native QuickBooks node enough to automate everything?
No. The native node covers five resources — Bill, Customer, Employee, Estimate, Invoice — with create, update and retrieve operations. For recorded payments, vendors as a dedicated resource, or accounting reports (Profit & Loss, SQL-like queries via the /query endpoint), you need the HTTP Request node, reusing the same OAuth2 credential.
Should you start in Sandbox or Production on QuickBooks?
Always start in Sandbox. The app created on the Intuit developer portal ships with development keys that only work in the test environment, along with a prefilled fictitious company. Moving to Production requires submitting the app for an Intuit review (a questionnaire about the data it handles), which takes a few days, before you receive the final keys.
Can a single QuickBooks connection cover several client companies, like for an accounting firm?
No, unlike Xero. Each QuickBooks OAuth2 authorization is tied to a single company (a single realm ID), chosen by the user at connection time. A firm managing several client files needs a separate n8n credential for each connected QuickBooks company.
What QuickBooks API rate limit should you know about?
500 requests per minute per company (realm ID), with a maximum of 10 concurrent requests per app. Batch calls through the Batch endpoint are capped lower — 120 requests per minute per realm since late October 2025. Beyond that, the API returns a 429 error.
Bundle FlowKit Complet
€269