- Home
- Resources
- Integrations
- QuickBooks Online
QuickBooks Online n8n integrationAutomate QuickBooks Online with n8n.
Your books already hold the bills, the customers and the quotes, so let a workflow do the typing. The QuickBooks Online n8n integration exposes 42 operations across 10 resources, from creating a bill to emailing an estimate. No trigger node ships with it, so a Schedule Trigger or a Webhook starts the run.
Verified Trustpilot reviews · AI, automation & growth agency
What does the QuickBooks Online n8n integration actually do?
The QuickBooks node talks to the QuickBooks Online API from inside an n8n workflow. It signs in once with an OAuth2 credential, an authorization handshake you set up in the Credentials menu, then reads and writes accounting records on demand: bills, customers, employees, estimates, invoices, items, payments, purchases, vendors and reports. Ten resources, 42 operations, and every field you fill in the node can come from the step before it.
Three shapes of automation come up again and again. The first is billing on autopilot: a paid order arrives from Stripe, the workflow looks up the customer by ID, and an estimate or an invoice is created without anyone opening the browser. The second is reporting: a nightly Schedule Trigger lists bills and estimates, and the items land in Google Sheets where the finance team already works. The third is record keeping in both directions, useful when part of the accounting lives in a second system such as Xero and the two need to agree on who the customer is.
A word on what the node will not do. There is no QuickBooks trigger in n8n, so nothing pushes events into a workflow on its own. You start with a Schedule Trigger at a fixed interval, with an n8n Webhook, which is a URL another service calls, or with the trigger of another tool entirely. The Get Many operations carry a Query filter, and a condition on the last updated time is the usual way to pick up only what changed since the previous run.
Coverage is uneven by design, and that is worth knowing before you build. Bills and estimates can be created, read, listed, updated and deleted. Customers and employees can be created, read, listed and updated, but not deleted. Items, purchases and transaction reports are read only. When an endpoint of the QuickBooks Online API has no matching operation in the node, the HTTP Request node calls it directly and reuses the same credential through predefined authentication, so you never handle the token yourself.
Field values rarely get typed by hand. An expression such as {{ $json.Id }} pulls the value from the item that came out of the previous node, and any field marked required stops the execution when it resolves to nothing. If you want the reasoning behind that behavior explained end to end, the n8n training covers expressions and error handling on real workflows.
How do you connect QuickBooks Online to n8n?
- 01
Create an Intuit developer app
Authentication runs on OAuth2, and that is the only method the credential supports. Sign up for an Intuit developer account and create an app there. While you are in the app settings, pick the scopes that match what the workflow will touch, since the token you get back carries exactly those permissions and nothing more. An app that only reads reports does not need the same scopes as one that creates and voids invoices.
- 02
Paste the redirect URL back into Intuit
Open a new QuickBooks credential in n8n and copy the OAuth Redirect URL it shows you. In the Intuit app, under Development > Keys & OAuth, add that value as a Redirect URI. This is the address Intuit sends the browser back to once you approve access, and a mismatch of a single character is enough for the handshake to fail with an error instead of a connected account.
- 03
Fill in the credential and pick an environment
From the same Development > Keys & OAuth screen, copy the Client ID and the Client Secret into n8n. Then set Environment to Production or Sandbox depending on which company file the credential should reach. Save, connect, and the credential is now available in the dropdown of every QuickBooks node in every workflow on that instance.
Every QuickBooks operation the n8n node exposes
The QuickBooks Online node exposes 42 operations across 10 resources. For each one: the node as you configure it in n8n, the required fields, and our field notes.
| Resource | Create | Get | Get Many | Update | Delete | Get Report | Send | Void |
|---|---|---|---|---|---|---|---|---|
| Bill | ✓ | ✓ | ✓ | ✓ | ✓ | |||
| Customer | ✓ | ✓ | ✓ | ✓ | ||||
| Employee | ✓ | ✓ | ✓ | ✓ | ||||
| Estimate | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ||
| Invoice | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | |
| Item | ✓ | ✓ | ||||||
| Payment | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | |
| Purchase | ✓ | ✓ | ||||||
| Transaction | ✓ | |||||||
| Vendor | ✓ | ✓ | ✓ | ✓ |
Operations index
Bill
5 operationsCreate a bill
bill.createWhat you see in n8n
Notes & use cases
A vendor bill lands in QuickBooks with its line items attached, and the money sits on the accounts payable side of the books.
Key parameters
- For Vendor Name or ID: the vendor the bill belongs to, picked from the dropdown or set with an expression such as
{{ $json.VendorRef }}. - Line: one entry per charge, with Amount, Description and a Detail Type of either Account-Based Expense Line Detail or Item-Based Expense Line Detail.
- Additional Fields: where Due Date, Transaction Date and Total Amount live.
Delete a bill
bill.deleteWhat you see in n8n
Notes & use cases
Removing a bill takes one value and gives no second chance, so this operation usually sits behind a condition rather than at the front of a workflow.
Key parameters
- Bill ID: the identifier of the bill to delete, not the vendor name and not the document number. It comes from a Get Many step or from whatever created the bill, typically as
{{ $json.Id }}.
Get a bill
bill.getWhat you see in n8n
Notes & use cases
One bill comes back in full, with its lines, its balance and its dates, so the workflow can decide what to do with it.
Key parameters
- Bill ID: the identifier of the bill to retrieve. Store it when the bill is created and the lookup later costs nothing.
Get many bills
bill.getAllWhat you see in n8n
Notes & use cases
Bills come back as a list of items, one per bill, which every node after this one processes in turn.
Key parameters
- Return All: on, n8n walks the API pages until every bill is in hand. Off, Limit caps how many come back.
- Query: a condition that narrows the selection before anything leaves QuickBooks, for example
WHERE Metadata.LastUpdatedTime > '2021-01-01'.
Update a bill
bill.updateWhat you see in n8n
Notes & use cases
Editing an existing bill means naming it and then naming what changes. Only the fields you add are sent, the rest of the record stays as it is.
Key parameters
- Bill ID: the bill being modified.
- Update Fields: the collection holding Due Date, Transaction Date, Sales Term and the Accounts Payable Account the bill is credited to.
Customer
4 operationsCreate a customer
customer.createWhat you see in n8n
Notes & use cases
New customer records start with a single mandatory value and grow from there. QuickBooks returns the created record, so the identifier is available to the next node right away.
Key parameters
- Display Name: the name the customer appears under, and the only required field.
- Additional Fields: fourteen optional values including Company Name, Primary Email Address, Primary Phone, Billing Address, Taxable and Preferred Delivery Method, which accepts Print, Email or None.
Get a customer
customer.getWhat you see in n8n
Notes & use cases
When a workflow already knows which customer it is dealing with, this pulls the current record: balance, contact details, whether the account is still active.
Key parameters
- Customer ID: the QuickBooks identifier, not the display name. A Get Many step is the usual way to turn a name into an ID first.
Get many customers
customer.getAllWhat you see in n8n
Notes & use cases
The whole customer book, or a slice of it, arrives as items you can loop over, compare or export.
Key parameters
- Return All: enable it for a complete export, leave it off and Limit decides the ceiling.
- Query: the filter condition, handy when only recently modified customers matter.
Update a customer
customer.updateWhat you see in n8n
Notes & use cases
Keeping customer data current is a two part instruction: which record, and which values replace what is there.
Key parameters
- Customer ID: the record to modify.
- Update Fields: fourteen values are available, among them Primary Email Address, Billing Address, Company Name, Taxable and Active, which is how a customer gets switched off without being removed.
Employee
4 operationsCreate an employee
employee.createWhat you see in n8n
Notes & use cases
Employees are added without any mandatory field, which means an empty node would create an empty record. Fill in the name fields at minimum.
Key parameters
- Given Name and Family Name: the first and last name of the employee.
- Additional Fields: seven further values, including Display Name, Primary Phone, Print-On-Check Name, Social Security Number and Billable Time.
Get an employee
employee.getWhat you see in n8n
Notes & use cases
Reading a single employee record returns what QuickBooks holds on that person, including whether they are still flagged as active.
Key parameters
- Employee ID: the identifier of the employee to retrieve, usually carried over from an earlier list step.
Get many employees
employee.getAllWhat you see in n8n
Notes & use cases
Every employee on file comes back as items, which is the starting point for anything that has to run per person.
Key parameters
- Return All: turn it on to get the full roster rather than the first page.
- Limit: the ceiling when Return All stays off.
- Query: narrows the list, for instance to records modified since a given date.
Update an employee
employee.updateWhat you see in n8n
Notes & use cases
Changes to an employee record go through the same pattern as customers: an identifier, then the fields being rewritten.
Key parameters
- Employee ID: whose record is being edited.
- Update Fields: seven values, notably Active, Billable Time, Primary Phone and Billing Address.
Estimate
6 operationsCreate an estimate
estimate.createWhat you see in n8n
Notes & use cases
Quotes take shape here. The estimate is written against a customer, priced through its lines, and returned with an identifier you can send or update later.
Key parameters
- For Customer Name or ID: who the quote is for, from the list or from an expression.
- Line: each row carries Amount, Description, an Item Name or ID and a Detail Type of Sales Item Line Detail.
- Billing Email and Customer Memo: the address the quote goes to, and the note the customer reads on it.
Delete an estimate
estimate.deleteWhat you see in n8n
Notes & use cases
Dropping an estimate is final, so it belongs at the end of a branch that has already decided the quote is dead.
Key parameters
- Estimate ID: the identifier of the estimate to delete. Take it from the list step that found the stale quotes in the first place.
Get an estimate
estimate.getWhat you see in n8n
Notes & use cases
This one has a second job: it reads the estimate and can hand back the document itself as a file.
Key parameters
- Estimate ID: which estimate to retrieve.
- Download: on, the estimate comes back as a PDF file.
- Put Output File in Field: the name of the binary field the file is placed in.
- File Name: how the file is named,
data.pdfby default.
Get many estimates
estimate.getAllWhat you see in n8n
Notes & use cases
Open quotes rarely sit in one place. This lists them from the books so a workflow can sort, count or chase them.
Key parameters
- Return All: switch it on when the point is a complete picture of the pipeline.
- Limit: how many estimates come back otherwise.
- Query: the selection condition, for example everything updated after a chosen date.
Send an estimate
estimate.sendWhat you see in n8n
Notes & use cases
QuickBooks does the emailing itself. The node hands over an estimate and an address, and the document goes out from the accounting side.
Key parameters
- Estimate ID: the estimate to send.
- Email: the recipient address, in the form
name@email.com, often taken from the customer record fetched a step earlier.
Update an estimate
estimate.updateWhat you see in n8n
Notes & use cases
Revised quotes stay on the same record instead of piling up as duplicates. Name the estimate, then list what changes.
Key parameters
- Estimate ID: the quote being revised.
- Update Fields: ten values, including Billing Email, Customer Memo, Document Number, Transaction Date, Email Status and Print Status.
Invoice
7 operationsCreate an invoice
invoice.createWhat you see in n8n
Notes & use cases
Posting a new invoice into QuickBooks starts here, and the node returns the created record so the next step can reuse its ID.
Key parameters
- For Customer Name or ID: the customer the invoice is billed to, picked from the dropdown or set with an expression, which is how n8n reads a value from the previous item, for example
{{ $json.customerId }}. - Line: the billed lines, where Amount, Description, Quantity and Item Name or ID spell out what is charged; Detail Type offers a single value,
SalesItemLineDetail. - Due Date and Customer Memo: the payment deadline and the message the customer sees on the document.
Delete an invoice
invoice.deleteWhat you see in n8n
Notes & use cases
Deletion is final on the QuickBooks side, so this node belongs behind a condition or a manual approval rather than in the middle of a fast loop.
Key parameters
- Invoice ID: the identifier of the invoice to delete, a required string. The node wants the ID, not the document number shown on the invoice, so it usually comes from a previous Get Many step through an expression such as
{{ $json.Id }}.
Get an invoice
invoice.getWhat you see in n8n
Notes & use cases
One invoice, read by its identifier, with an option that few people notice: the same operation also hands you the PDF.
Key parameters
- Invoice ID: the identifier of the invoice to retrieve.
- Download: switched on, the invoice comes back as a PDF file instead of plain fields.
- Put Output File in Field: the name of the binary field that carries the file to the next node.
- File Name: the name the downloaded file takes,
data.pdfby default.
Get many invoices
invoice.getAllWhat you see in n8n
Notes & use cases
Lists of invoices come out of this operation, which is the one most reporting workflows start with.
Key parameters
- Return All: enabled, n8n walks every page of the QuickBooks API and returns all invoices; disabled, Limit caps how many come back.
- Limit: the maximum number of invoices returned when Return All stays off, handy while testing.
- Query: a filter condition in the QuickBooks query syntax, for instance
WHERE Metadata.LastUpdatedTime > '2021-01-01', so a scheduled run only picks up what changed.
Send an invoice
invoice.sendWhat you see in n8n
Notes & use cases
Delivery is handled by QuickBooks itself: the node names the invoice and the address, and the document goes out.
Key parameters
- Invoice ID: the identifier of the invoice to send.
- Email: the recipient address, in the
name@email.comform. It overrides nothing on your side, so pull it from the record you already hold, for example the billing contact stored with the deal.
Update an invoice
invoice.updateWhat you see in n8n
Notes & use cases
Corrections go through Update, which touches only the fields you list and leaves the rest of the invoice untouched.
Key parameters
- Invoice ID: the identifier of the invoice to update, required.
- Update Fields: the collection of values to change, ten fields in total. Due Date pushes a deadline, Billing Email fixes a wrong address, Document Number aligns the reference with another system.
- Email Status and Print Status: flags such as
NeedToSendorNeedToPrintthat mark what still has to happen to the document.
Void an invoice
invoice.voidWhat you see in n8n
Notes & use cases
Void sits beside Delete in the Invoice resource, and the node asks for nothing more than the identifier.
Key parameters
- Invoice ID: the identifier of the invoice to void. Pick it from the item flowing in rather than hardcoding it, since a voided document is not something you want to aim at the wrong row.
Item
2 operationsGet an item
item.getWhat you see in n8n
Notes & use cases
Products and services live in the Item resource, and this operation reads one of them by identifier. The node only reads items: creating or editing a product goes through the HTTP Request node instead.
Key parameters
- Item ID: the identifier of the item to retrieve, required.
Get many items
item.getAllWhat you see in n8n
Notes & use cases
The whole catalog of products and services comes back here, which is what you want when a workflow has to map an external SKU onto a QuickBooks item.
Key parameters
- Return All: on, every item is fetched page by page; off, Limit decides how many arrive.
- Limit: the ceiling on the number of items returned.
- Query: a condition in QuickBooks query syntax for selecting items, useful to narrow a long catalog.
Payment
7 operationsCreate a payment
payment.createWhat you see in n8n
Notes & use cases
Money received gets recorded with this operation, which books a payment against a customer.
Key parameters
- For Customer Name or ID: the customer the payment belongs to, chosen in the list or resolved with an expression when it comes from an earlier node.
- Total Amount: the amount of the transaction.
- Transaction Date: the date the payment happened, worth setting explicitly when the workflow runs a day after the fact.
Delete a payment
payment.deleteWhat you see in n8n
Notes & use cases
A payment booked twice is the classic reason to reach for this operation, and it needs one value.
Key parameters
- Payment ID: the identifier of the payment to delete, required. Get Many is the usual way to find it, filtered on the transaction you suspect, because the node matches on the identifier and never on the amount.
Get a payment
payment.getWhat you see in n8n
Notes & use cases
Reading a single payment gives the workflow the detail behind an amount, and the operation can hand over a PDF as well.
Key parameters
- Payment ID: the identifier of the payment to retrieve.
- Download: turned on, the node downloads the document as a PDF file.
- Put Output File in Field: the binary field that carries that file onward.
- File Name: the name given to the downloaded file, such as
data.pdf.
Get many payments
payment.getAllWhat you see in n8n
Notes & use cases
Reconciliation work starts with a list, and this is the operation that produces it.
Key parameters
- Return All: enabled, the node keeps paging until every payment is in; disabled, it stops at Limit.
- Limit: the maximum number of payments returned.
- Query: the selection condition, for example a filter on
Metadata.LastUpdatedTimeso a scheduled run only reads the payments booked since the last pass.
Send a payment
payment.sendWhat you see in n8n
Notes & use cases
Customers who want a written trace of what they paid are the audience for this one: QuickBooks emails the payment record to the address you pass.
Key parameters
- Payment ID: the identifier of the payment to send.
- Email: the recipient address, written as
name@email.com.
Update a payment
payment.updateWhat you see in n8n
Notes & use cases
The Payment resource keeps its update surface narrow: one identifier, one collection, and a single field inside it.
Key parameters
- Payment ID: the identifier of the payment to update, required.
- Update Fields: the required collection holding the change; leave it empty and there is nothing to apply.
- Transaction Date: the date the transaction occurred, the value this operation lets you rewrite.
Void a payment
payment.voidWhat you see in n8n
Notes & use cases
Alongside Delete, the node exposes Void for payments, and it takes a single value to run.
Key parameters
- Payment ID: the identifier of the payment to void. Feed it from the item coming in, typically the record a check-failure notification pointed at.
Purchase
2 operationsGet a purchase
purchase.getWhat you see in n8n
Notes & use cases
Purchases are read-only in this node, so the two operations available are about looking, not writing. This one returns a single purchase.
Key parameters
- Purchase ID: the identifier of the purchase to retrieve, required.
Get many purchases
purchase.getAllWhat you see in n8n
Notes & use cases
Spend reviews need the whole set rather than one row, which is what this operation returns.
Key parameters
- Return All: on, every purchase is retrieved across pages; off, the run stops at Limit.
- Limit: how many purchases at most come back.
- Query: the condition for selecting purchases, in the query syntax QuickBooks documents, so a monthly job can target a single period.
Transaction
1 operationGet a report
transaction.getReportWhat you see in n8n
Notes & use cases
The Transaction resource carries one operation, and it is the analytical one: a transaction report built from the filters you set, without required fields to fill in first.
Key parameters
- Simplify: returns a trimmed version of the response instead of the raw report structure, easier to map into a sheet.
- Filters: the shaping controls, 27 of them. Date Range (Predefined) takes values such as
Last Month, Transaction Type narrows toInvoiceorBill, Group By aggregates by Customer or Month, Columns picks the columns returned.
Vendor
4 operationsCreate a vendor
vendor.createWhat you see in n8n
Notes & use cases
New suppliers enter the books through this operation, which needs one value and accepts eleven more.
Key parameters
- Display Name: the name the vendor is created under, required and the only mandatory field.
- Company Name, Primary Email Address, Primary Phone: the contact details worth filling from the start, because a vendor without an email blocks every later notification.
- Vendor 1099: marks the vendor as an independent contractor, the one given a 1099-MISC form at year end.
Get a vendor
vendor.getWhat you see in n8n
Notes & use cases
Fetching one supplier record is the check that saves a workflow from writing to the wrong account later on.
Key parameters
- Vendor ID: the identifier of the vendor to retrieve, required. Company names repeat and change; the identifier does not, which is why the node asks for it.
Get many vendors
vendor.getAllWhat you see in n8n
Notes & use cases
Supplier lists come out here, whether for an audit, a data migration or a lookup table.
Key parameters
- Return All: enabled, n8n pages through the API until the full vendor list is in hand; disabled, it returns up to Limit.
- Limit: the maximum number of vendors returned.
- Query: the selection condition for vendors, which is how you keep a large book down to the accounts that matter.
Update a vendor
vendor.updateWhat you see in n8n
Notes & use cases
Bank references, addresses and contact people move around; this operation writes the change back without touching anything else.
Key parameters
- Vendor ID: the identifier of the vendor to update, required.
- Update Fields: the required collection of changes, eleven fields wide, covering Primary Email Address, Billing Address, Account Number and Print-On-Check Name.
- Active: whether the record stays enabled for use in QuickBooks, the clean way to retire a supplier you no longer work with.
Need help automating QuickBooks Online with n8n?
A person reads every message.


