<!-- BusyBot node reference — https://busybot.net/tools/quickbooks/ -->

> Node: QuickBooks Online (`quickbooks`) · Action (binary) · v1
> Category: Finance · Credentials: QuickBooks OAuth2 (`quickBooksOAuth2`)
> Updated: 2026-08-16

# QuickBooks Online

> Manage QuickBooks Online financial data with PDF download support

## Overview

The QuickBooks Online tool provides CRUD operations against the QuickBooks Online Accounting API v3. Supports 10 resources: (1) Bill — create, delete, get, getAll, update. (2) Customer — create, get, getAll, update. (3) Employee — create, get, getAll, update. (4) Estimate — create, delete, get (with optional PDF download), getAll, send, update. (5) Invoice — create, delete, get (with optional PDF download), getAll, send, update, void. (6) Item — get, getAll (read-only). (7) Payment — create, delete, get (with optional PDF download), getAll, send, update, void. (8) Purchase — get, getAll (read-only). (9) Transaction — getReport (with filters and simplification). (10) Vendor — create, get, getAll, update. Binary operations: Invoice, Estimate, and Payment support PDF download via the /pdf endpoint, storing the PDF in the binary store. Uses OAuth2 Bearer token authentication with automatic token refresh.

**Category:** Finance  
**Tool Name:** `quickbooks`  
**Version:** 1

**Appearance:** Icon: `lucide-Receipt` | Color: `#2CA01C`

## Node Type

**Action (Binary)** — handles file/binary data operations

This node is not listed in the node panel — a workflow that already contains it still runs.

## Input / Output

| Direction | Port(s) |
|-----------|--------|
| Input | `Input` |
| Output | `Output`, `Error` |

## Credentials

This tool requires **QuickBooks OAuth2** credentials.
See the [Credentials Guide](https://busybot.net/credentials/quick-books-oauth2/) for setup instructions.

### Resources

| Resource | Value |
|----------|-------|
| Bill | `bill` |
| Customer | `customer` |
| Employee | `employee` |
| Estimate | `estimate` |
| Invoice | `invoice` |
| Item | `item` |
| Payment | `payment` |
| Purchase | `purchase` |
| Transaction | `transaction` |
| Vendor | `vendor` |

### Operations

Each resource has its own Operation list, and most resources reuse the same operation values (`create`, `get`, `getAll`, `update`). Pick the resource first, then the operation.

| Resource | Operation | Value | Description |
|----------|-----------|-------|-------------|
| Bill | Create | `create` | Create a bill |
| Bill | Delete | `delete` | Delete a bill |
| Bill | Get | `get` | Get a bill |
| Bill | Get Many | `getAll` | Get many bills |
| Bill | Update | `update` | Update a bill |
| Customer | Create | `create` | Create a customer |
| Customer | Get | `get` | Get a customer |
| Customer | Get Many | `getAll` | Get many customers |
| Customer | Update | `update` | Update a customer |
| Employee | Create | `create` | Create an employee |
| Employee | Get | `get` | Get an employee |
| Employee | Get Many | `getAll` | Get many employees |
| Employee | Update | `update` | Update an employee |
| Estimate | Create | `create` | Create an estimate |
| Estimate | Delete | `delete` | Delete an estimate |
| Estimate | Get | `get` | Get an estimate |
| Estimate | Get Many | `getAll` | Get many estimates |
| Estimate | Send | `send` | Send an estimate |
| Estimate | Update | `update` | Update an estimate |
| Invoice | Create | `create` | Create an invoice |
| Invoice | Delete | `delete` | Delete an invoice |
| Invoice | Get | `get` | Get an invoice |
| Invoice | Get Many | `getAll` | Get many invoices |
| Invoice | Send | `send` | Send an invoice |
| Invoice | Update | `update` | Update an invoice |
| Invoice | Void | `void` | Void an invoice |
| Item | Get | `get` | Get an item |
| Item | Get Many | `getAll` | Get many items |
| Payment | Create | `create` | Create a payment |
| Payment | Delete | `delete` | Delete a payment |
| Payment | Get | `get` | Get a payment |
| Payment | Get Many | `getAll` | Get many payments |
| Payment | Send | `send` | Send a payment |
| Payment | Update | `update` | Update a payment |
| Payment | Void | `void` | Void a payment |
| Purchase | Get | `get` | Get a purchase |
| Purchase | Get Many | `getAll` | Get many purchases |
| Transaction | Get Report | `getReport` | Get a transaction report |
| Vendor | Create | `create` | Create a vendor |
| Vendor | Get | `get` | Get a vendor |
| Vendor | Get Many | `getAll` | Get many vendors |
| Vendor | Update | `update` | Update a vendor |

### Parameters

All fields accept expressions, so IDs and amounts can come from the incoming item (`{{ $json.invoiceId }}`).

Watch the two "Customer ID" and two "Vendor ID" fields: on a create they name the entity being referenced (`CustomerRef`, `VendorRef`), while on a get or update they name the entity being addressed (`customerId`, `vendorId`). Both pairs are shown with their internal names below because a JSON configuration must use the right one.

Every update operation requires at least one field inside Update Fields; an empty collection fails the item with a message rather than sending an empty request.

#### Bill: Create

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Vendor ID (`VendorRef`) | `string` | Yes | — | The ID of the vendor who the bill is for. Obtain from vendor:getAll. |
| Line Items (`Line`) | `json` | No | `[]` | JSON array of line items. Each line: { "DetailType": "AccountBasedExpenseLineDetail"\|"ItemBasedExpenseLineDetail", "Amount": 100, "Description": "desc", "accountId": "1" (for account) or "itemId": "1" (for item) }. |
| Additional Fields | `collection` | No | `{}` | Optional bill properties. |
| — AP Account Ref (ID) | `string` | No | — | ID of the accounts payable account. |
| — Department Ref (ID) | `string` | No | — | ID of the department. |
| — Due Date | `string` | No | — | Due date (YYYY-MM-DD). |
| — Sales Term Ref (ID) | `string` | No | — | ID of the sales term. |
| — Global Tax Calculation | `options` | No | `TaxExcluded` | How tax is applied to the bill total. |
| | | | | Options: `TaxExcluded`, `TaxInclusive`, `NotApplicable` |

#### Bill: Get

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Bill ID | `string` | Yes | — | The ID of the bill to retrieve. |

#### Bill: Get Many

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Return All | `boolean` | No | `false` | Whether to return all results or only up to a given limit. |
| Limit | `number` | No | `50` | Max number of results to return. _(shown when Return All is `false`)_ |
| Filters | `collection` | No | `{}` | Narrow the result set. |
| — Query | `string` | No | — | Additional WHERE clause for the query. See QuickBooks data queries documentation. |

#### Bill: Update

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Bill ID | `string` | Yes | — | The ID of the bill to update. |
| Update Fields | `collection` | Yes | `{}` | Bill properties to change. Add at least one. |
| — AP Account Ref (ID) | `string` | No | — | ID of the accounts payable account. |
| — Department Ref (ID) | `string` | No | — | ID of the department. |
| — Due Date | `string` | No | — | Due date (YYYY-MM-DD). |
| — Sales Term Ref (ID) | `string` | No | — | ID of the sales term. |

#### Bill: Delete

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Bill ID | `string` | Yes | — | The ID of the bill to delete. |

#### Customer: Create

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Display Name (`displayName`) | `string` | Yes | — | The display name of the customer. |
| Additional Fields | `collection` | No | `{}` | Optional customer properties. |
| — Company Name | `string` | No | — | The customer's company name. |
| — Family Name | `string` | No | — | The customer's family name. |
| — Given Name | `string` | No | — | The customer's given name. |
| — Middle Name | `string` | No | — | The customer's middle name. |
| — Primary Email | `string` | No | — | Email address. |
| — Primary Phone | `string` | No | — | Phone number. |
| — Billing Address (JSON) | `json` | No | `{}` | JSON object: { "Line1": "...", "City": "...", "CountrySubDivisionCode": "...", "PostalCode": "..." }. |

#### Customer: Get

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Customer ID (`customerId`) | `string` | Yes | — | The ID of the customer to retrieve. |

#### Customer: Get Many

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Return All | `boolean` | No | `false` | Whether to return all results or only up to a given limit. |
| Limit | `number` | No | `50` | Max number of results to return. _(shown when Return All is `false`)_ |
| Filters | `collection` | No | `{}` | Narrow the result set. |
| — Query | `string` | No | — | Additional WHERE clause for the query. See QuickBooks data queries documentation. |

#### Customer: Update

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Customer ID (`customerId`) | `string` | Yes | — | The ID of the customer to update. |
| Update Fields | `collection` | Yes | `{}` | Customer properties to change. Add at least one. |
| — Company Name | `string` | No | — | The customer's company name. |
| — Display Name (`DisplayName`) | `string` | No | — | The display name of the customer. |
| — Family Name | `string` | No | — | The customer's family name. |
| — Given Name | `string` | No | — | The customer's given name. |
| — Middle Name | `string` | No | — | The customer's middle name. |
| — Primary Email | `string` | No | — | Email address. |
| — Primary Phone | `string` | No | — | Phone number. |
| — Billing Address (JSON) | `json` | No | `{}` | Billing address as a JSON object. |

#### Employee: Create

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Family Name | `string` | Yes | — | The employee's family name. |
| Given Name | `string` | Yes | — | The employee's given name. |
| Additional Fields | `collection` | No | `{}` | Optional employee properties. |
| — Primary Email | `string` | No | — | Email address. |
| — Primary Phone | `string` | No | — | Phone number. |
| — SSN | `string` | No | — | The employee's social security number. |
| — Birth Date | `string` | No | — | YYYY-MM-DD |
| — Billing Address (JSON) | `json` | No | `{}` | Address as a JSON object. |

#### Employee: Get

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Employee ID | `string` | Yes | — | The ID of the employee to retrieve. |

#### Employee: Get Many

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Return All | `boolean` | No | `false` | Whether to return all results or only up to a given limit. |
| Limit | `number` | No | `50` | Max number of results to return. _(shown when Return All is `false`)_ |
| Filters | `collection` | No | `{}` | Narrow the result set. |
| — Query | `string` | No | — | Additional WHERE clause for the query. See QuickBooks data queries documentation. |

#### Employee: Update

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Employee ID | `string` | Yes | — | The ID of the employee to update. |
| Update Fields | `collection` | Yes | `{}` | Employee properties to change. Add at least one. |
| — Family Name | `string` | No | — | The employee's family name. |
| — Given Name | `string` | No | — | The employee's given name. |
| — Primary Email | `string` | No | — | Email address. |
| — Primary Phone | `string` | No | — | Phone number. |
| — Billing Address (JSON) | `json` | No | `{}` | Address as a JSON object. |

#### Estimate: Create

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Customer ID (`CustomerRef`) | `string` | Yes | — | The ID of the customer the estimate is for. |
| Line Items (`Line`) | `json` | No | `[]` | JSON array of line items. Each line: { "DetailType": "SalesItemLineDetail", "Amount": 100, "Description": "desc", "itemId": "1", "TaxCodeRef": "TAX" }. |
| Additional Fields | `collection` | No | `{}` | Optional estimate properties. |
| — Bill Email | `string` | No | — | Email address the estimate is billed to. |
| — Customer Memo | `string` | No | — | Memo shown to the customer. |
| — Expiration Date | `string` | No | — | YYYY-MM-DD |
| — Total Tax | `number` | No | `0` | Total tax on the estimate. |
| — Billing Address (JSON) | `json` | No | `{}` | Billing address as a JSON object. |
| — Shipping Address (JSON) | `json` | No | `{}` | Shipping address as a JSON object. |

#### Estimate: Get

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Estimate ID | `string` | Yes | — | The ID of the estimate to retrieve. |
| Download | `boolean` | Yes | `false` | Whether to download the estimate as a PDF file. |
| Binary Property | `string` | Yes | `data` | Name of the output binary property to put the PDF file in. Names are case-sensitive — see the upstream node's Binary Data panel for the exact names to use. _(shown when Download is `true`)_ |
| File Name | `string` | Yes | — | Name of the downloaded PDF file. _(shown when Download is `true`)_ |

#### Estimate: Get Many

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Return All | `boolean` | No | `false` | Whether to return all results or only up to a given limit. |
| Limit | `number` | No | `50` | Max number of results to return. _(shown when Return All is `false`)_ |
| Filters | `collection` | No | `{}` | Narrow the result set. |
| — Query | `string` | No | — | Additional WHERE clause for the query. See QuickBooks data queries documentation. |

#### Estimate: Send

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Estimate ID | `string` | Yes | — | The ID of the estimate to send. |
| Email | `string` | Yes | — | Email address of the recipient. |

#### Estimate: Update

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Estimate ID | `string` | Yes | — | The ID of the estimate to update. |
| Update Fields | `collection` | Yes | `{}` | Estimate properties to change. Add at least one. |
| — Bill Email | `string` | No | — | Email address the estimate is billed to. |
| — Customer Memo | `string` | No | — | Memo shown to the customer. |
| — Expiration Date | `string` | No | — | YYYY-MM-DD |
| — Billing Address (JSON) | `json` | No | `{}` | Billing address as a JSON object. |
| — Shipping Address (JSON) | `json` | No | `{}` | Shipping address as a JSON object. |

#### Estimate: Delete

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Estimate ID | `string` | Yes | — | The ID of the estimate to delete. |

#### Invoice: Create

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Customer ID (`CustomerRef`) | `string` | Yes | — | The ID of the customer the invoice is for. |
| Line Items (`Line`) | `json` | No | `[]` | JSON array of line items. Each line: { "DetailType": "SalesItemLineDetail", "Amount": 100, "Description": "desc", "itemId": "1", "TaxCodeRef": "TAX", "Qty": 2 }. |
| Additional Fields | `collection` | No | `{}` | Optional invoice properties. |
| — Bill Email | `string` | No | — | Email address the invoice is billed to. |
| — Customer Memo | `string` | No | — | Memo shown to the customer. |
| — Due Date | `string` | No | — | YYYY-MM-DD |
| — Total Tax | `number` | No | `0` | Total tax on the invoice. |
| — Billing Address (JSON) | `json` | No | `{}` | Billing address as a JSON object. |
| — Shipping Address (JSON) | `json` | No | `{}` | Shipping address as a JSON object. |

#### Invoice: Get

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Invoice ID | `string` | Yes | — | The ID of the invoice to retrieve. |
| Download | `boolean` | Yes | `false` | Whether to download the invoice as a PDF file. |
| Binary Property | `string` | Yes | `data` | Name of the output binary property to put the PDF file in. Names are case-sensitive — see the upstream node's Binary Data panel for the exact names to use. _(shown when Download is `true`)_ |
| File Name | `string` | Yes | — | Name of the downloaded PDF file. _(shown when Download is `true`)_ |

#### Invoice: Get Many

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Return All | `boolean` | No | `false` | Whether to return all results or only up to a given limit. |
| Limit | `number` | No | `50` | Max number of results to return. _(shown when Return All is `false`)_ |
| Filters | `collection` | No | `{}` | Narrow the result set. |
| — Query | `string` | No | — | Additional WHERE clause for the query. See QuickBooks data queries documentation. |

#### Invoice: Send

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Invoice ID | `string` | Yes | — | The ID of the invoice to send. |
| Email | `string` | Yes | — | Email address of the recipient. |

#### Invoice: Update

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Invoice ID | `string` | Yes | — | The ID of the invoice to update. |
| Update Fields | `collection` | Yes | `{}` | Invoice properties to change. Add at least one. |
| — Bill Email | `string` | No | — | Email address the invoice is billed to. |
| — Customer Memo | `string` | No | — | Memo shown to the customer. |
| — Due Date | `string` | No | — | YYYY-MM-DD |
| — Billing Address (JSON) | `json` | No | `{}` | Billing address as a JSON object. |
| — Shipping Address (JSON) | `json` | No | `{}` | Shipping address as a JSON object. |

#### Invoice: Void

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Invoice ID | `string` | Yes | — | The ID of the invoice to void. |

#### Invoice: Delete

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Invoice ID | `string` | Yes | — | The ID of the invoice to delete. |

#### Item: Get

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Item ID | `string` | Yes | — | The ID of the item to retrieve. |

#### Item: Get Many

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Return All | `boolean` | No | `false` | Whether to return all results or only up to a given limit. |
| Limit | `number` | No | `50` | Max number of results to return. _(shown when Return All is `false`)_ |
| Filters | `collection` | No | `{}` | Narrow the result set. |
| — Query | `string` | No | — | Additional WHERE clause for the query. See QuickBooks data queries documentation. |

#### Payment: Create

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Customer ID (`CustomerRef`) | `string` | Yes | — | The ID of the customer the payment is from. |
| Total Amount | `number` | No | `0` | Total amount of the payment. |
| Additional Fields | `collection` | No | `{}` | Optional payment properties. |
| — Payment Method Ref (ID) | `string` | No | — | ID of the payment method. |
| — Deposit To Account Ref (ID) | `string` | No | — | ID of the account the payment is deposited to. |

#### Payment: Get

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Payment ID | `string` | Yes | — | The ID of the payment to retrieve. |
| Download | `boolean` | Yes | `false` | Whether to download the payment receipt as a PDF file. |
| Binary Property | `string` | Yes | `data` | Name of the output binary property to put the PDF file in. Names are case-sensitive — see the upstream node's Binary Data panel for the exact names to use. _(shown when Download is `true`)_ |
| File Name | `string` | Yes | — | Name of the downloaded PDF file. _(shown when Download is `true`)_ |

#### Payment: Get Many

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Return All | `boolean` | No | `false` | Whether to return all results or only up to a given limit. |
| Limit | `number` | No | `50` | Max number of results to return. _(shown when Return All is `false`)_ |
| Filters | `collection` | No | `{}` | Narrow the result set. |
| — Query | `string` | No | — | Additional WHERE clause for the query. See QuickBooks data queries documentation. |

#### Payment: Send

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Payment ID | `string` | Yes | — | The ID of the payment to send. |
| Email | `string` | Yes | — | Email address of the recipient. |

#### Payment: Update

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Payment ID | `string` | Yes | — | The ID of the payment to update. |
| Update Fields | `collection` | Yes | `{}` | Payment properties to change. Add at least one. |
| — Payment Method Ref (ID) | `string` | No | — | ID of the payment method. |
| — Deposit To Account Ref (ID) | `string` | No | — | ID of the account the payment is deposited to. |

#### Payment: Void

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Payment ID | `string` | Yes | — | The ID of the payment to void. |

#### Payment: Delete

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Payment ID | `string` | Yes | — | The ID of the payment to delete. |

#### Purchase: Get

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Purchase ID | `string` | Yes | — | The ID of the purchase to retrieve. |

#### Purchase: Get Many

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Return All | `boolean` | No | `false` | Whether to return all results or only up to a given limit. |
| Limit | `number` | No | `50` | Max number of results to return. _(shown when Return All is `false`)_ |
| Filters | `collection` | No | `{}` | Narrow the result set. |
| — Query | `string` | No | — | Additional WHERE clause for the query. See QuickBooks data queries documentation. |

#### Transaction: Get Report

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Simplify (`simple`) | `boolean` | No | `true` | Whether to return a simplified version of the report (flat objects) instead of the raw response. |
| Filters | `collection` | No | `{}` | Report scope, grouping and sorting. |
| — Accounts Payable Paid (`appaid`) | `options` | No | `All` | Restrict to paid or unpaid accounts payable. |
| | | | | Options: `All`, `Paid`, `Unpaid` |
| — Accounts Receivable Paid (`arpaid`) | `options` | No | `All` | Restrict to paid or unpaid accounts receivable. |
| | | | | Options: `All`, `Paid`, `Unpaid` |
| — Cleared Status (`cleared`) | `options` | No | `Reconciled` | Restrict to transactions in this cleared state. |
| | | | | Options: `Cleared`, `Uncleared`, `Reconciled`, `Deposited` |
| — Columns | `string` | No | — | Comma-separated list of columns to return. |
| — Customer IDs (`customer`) | `string` | No | — | Comma-separated customer IDs to filter by. |
| — Date Range (Predefined) (`date_macro`) | `options` | No | `This Month` | A named date range, used instead of Start Date and End Date. |
| | | | | Options: `Today`, `Yesterday`, `This Week`, `Last Week`, `This Week-to-date`, `Last Week-to-date`, `Next Week`, `Next 4 Weeks`, `This Month`, `Last Month`, `This Month-to-date`, `Last Month-to-date`, `Next Month`, `This Fiscal Quarter`, `Last Fiscal Quarter`, `This Fiscal Year`, `Last Fiscal Year`, `This Fiscal Year-to-date`, `Last Fiscal Year-to-date` |
| — Start Date (`start_date`) | `string` | No | — | Start date for custom range (YYYY-MM-DD). |
| — End Date (`end_date`) | `string` | No | — | End date for custom range (YYYY-MM-DD). |
| — Document Number (`docnum`) | `string` | No | — | Restrict to one document number. |
| — Group By (`group_by`) | `options` | No | `Account` | How report rows are grouped. |
| | | | | Options: `Account`, `Customer`, `Day`, `Department`, `Employee`, `Location`, `Month`, `Name`, `None`, `Payment Method`, `Product/Service`, `Quarter`, `Transaction Type`, `Vendor`, `Week`, `Year` |
| — Memo IDs (`memo`) | `string` | No | — | Comma-separated memo IDs. |
| — Payment Method (`payment_Method`) | `string` | No | — | Restrict to one payment method. |
| — Printed Status (`printed`) | `options` | No | `Printed` | Restrict to printed or to-be-printed transactions. |
| | | | | Options: `Printed`, `To_be_printed` |
| — Sort By (`sort_by`) | `string` | No | — | Column to sort results by. |
| — Sort Order (`sort_order`) | `options` | No | `Ascend` | Sort direction. |
| | | | | Options: `Ascend`, `Descend` |
| — Transaction Amount (`bothamount`) | `number` | No | `0` | Restrict to transactions of this amount. |
| — Transaction Type (`transaction_type`) | `string` | No | — | Transaction type filter (e.g. CreditCardCharge, Invoice, Bill). |
| — Vendor IDs (`vendor`) | `string` | No | — | Comma-separated vendor IDs. |

#### Vendor: Create

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Display Name (`displayName`) | `string` | Yes | — | The display name of the vendor. |
| Additional Fields | `collection` | No | `{}` | Optional vendor properties. |
| — Company Name | `string` | No | — | The vendor's company name. |
| — Family Name | `string` | No | — | The vendor's family name. |
| — Given Name | `string` | No | — | The vendor's given name. |
| — Primary Email | `string` | No | — | Email address. |
| — Primary Phone | `string` | No | — | Phone number. |
| — Billing Address (JSON) | `json` | No | `{}` | Address as a JSON object. |

#### Vendor: Get

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Vendor ID (`vendorId`) | `string` | Yes | — | The ID of the vendor to retrieve. |

#### Vendor: Get Many

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Return All | `boolean` | No | `false` | Whether to return all results or only up to a given limit. |
| Limit | `number` | No | `50` | Max number of results to return. _(shown when Return All is `false`)_ |
| Filters | `collection` | No | `{}` | Narrow the result set. |
| — Query | `string` | No | — | Additional WHERE clause for the query. See QuickBooks data queries documentation. |

#### Vendor: Update

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Vendor ID (`vendorId`) | `string` | Yes | — | The ID of the vendor to update. |
| Update Fields | `collection` | Yes | `{}` | Vendor properties to change. Add at least one. |
| — Company Name | `string` | No | — | The vendor's company name. |
| — Display Name (`DisplayName`) | `string` | No | — | The display name of the vendor. |
| — Family Name | `string` | No | — | The vendor's family name. |
| — Given Name | `string` | No | — | The vendor's given name. |
| — Primary Email | `string` | No | — | Email address. |
| — Primary Phone | `string` | No | — | Phone number. |
| — Billing Address (JSON) | `json` | No | `{}` | Address as a JSON object. |

#### All Operations

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| QuickBooks Account | `credential` | No | — | Connect your QuickBooks account via OAuth2. |
| Max Concurrency | `number` | No | `10` | Maximum number of items to process concurrently. |

## Output Data

Unlike most connectors, this node **replaces** the output item's JSON with the QuickBooks record — fields from the input item are not carried through. Read the input's own values upstream, or re-attach them with a Merge or Edit Fields node afterwards. Binary data on the input item is forwarded.

| Operations | Output |
|------------|--------|
| Every Get Many, and Transaction Get Report | **One output item per record**, each item's JSON replaced by that record. A result with no records produces a single item carrying the input JSON plus an empty `results` array. |
| Create, Get, Update, Send, Void and Delete on every resource | One output item carrying the QuickBooks entity, already unwrapped from its API envelope so its fields sit at the top level rather than under `Invoice` or `Customer`. |
| Invoice / Estimate / Payment Get with Download on | One output item carrying the download summary below, with the PDF attached as binary under the Binary Property name. Any binary already on the input item is kept alongside it. |

An invoice arrives like this:

```json
{
  "Id": "130",
  "SyncToken": "0",
  "DocNumber": "1070",
  "TxnDate": "2026-01-15",
  "CustomerRef": { "value": "24", "name": "Acme Corp" },
  "Line": [
    {
      "Id": "1",
      "LineNum": 1,
      "Amount": 150.00,
      "DetailType": "SalesItemLineDetail",
      "SalesItemLineDetail": { "ItemRef": { "value": "1", "name": "Services" } }
    }
  ],
  "TotalAmt": 150.00,
  "Balance": 150.00,
  "DueDate": "2026-02-14",
  "MetaData": { "CreateTime": "2026-01-15T09:12:04-08:00" }
}
```

A PDF download produces this JSON instead of the entity:

```json
{
  "invoiceId": "130",
  "downloaded": true,
  "fileSize": 43219,
  "fileName": "invoice.pdf"
}
```

The key is named after the resource — `invoiceId`, `estimateId` or `paymentId`. The attached file carries the `application/pdf` MIME type, so a downstream email or upload node can send it as-is. Leave File Name blank and the node names the file after the record, for example `invoice_130.pdf`.

**Delete and Void return the updated entity, not a bare confirmation.** Both come back as the record in its final state, so check the entity's own fields rather than looking for a `success` flag.

**Transaction: Get Report** with Simplify on returns one flat object per report row, keyed by the report's own column types. Turn Simplify off to get the raw report — a single item holding `Columns` and the nested `Rows` structure — when you need subtotals or group headers.

## Usage Examples

- Create a new invoice in QuickBooks
- Download an invoice as PDF
- Get all customers from QuickBooks
- Update a vendor record
- Void a payment
- Send an estimate to a customer by email
- Get a transaction report for this month

## Example Configuration

Create an invoice with a single service line:

```json
{
  "type": "quickbooks",
  "parameters": {
    "resource": "invoice",
    "operation": "create",
    "CustomerRef": "{{ $json.customerId }}",
    "Line": "[{\"DetailType\":\"SalesItemLineDetail\",\"Amount\":150,\"Description\":\"Consulting\",\"itemId\":\"1\",\"TaxCodeRef\":\"TAX\",\"Qty\":2}]",
    "additionalFields": {
      "BillEmail": "{{ $json.email }}",
      "CustomerMemo": "Thank you for your business",
      "DueDate": "2026-02-14"
    }
  }
}
```

Download that invoice as a PDF for a downstream email node:

```json
{
  "type": "quickbooks",
  "parameters": {
    "resource": "invoice",
    "operation": "get",
    "invoiceId": "{{ $json.Id }}",
    "download": true,
    "binaryPropertyName": "invoicePdf",
    "fileName": "invoice-{{ $json.DocNumber }}.pdf"
  }
}
```

Email the invoice from QuickBooks itself instead:

```json
{
  "type": "quickbooks",
  "parameters": {
    "resource": "invoice",
    "operation": "send",
    "invoiceId": "130",
    "email": "billing@example.com"
  }
}
```

Void an invoice without deleting it:

```json
{
  "type": "quickbooks",
  "parameters": {
    "resource": "invoice",
    "operation": "void",
    "invoiceId": "130"
  }
}
```

List customers changed since a date, one item each:

```json
{
  "type": "quickbooks",
  "parameters": {
    "resource": "customer",
    "operation": "getAll",
    "returnAll": false,
    "limit": 100,
    "filters": {
      "query": "WHERE Metadata.LastUpdatedTime > '2026-01-01'"
    }
  }
}
```

Create a customer:

```json
{
  "type": "quickbooks",
  "parameters": {
    "resource": "customer",
    "operation": "create",
    "displayName": "Acme Corp",
    "additionalFields": {
      "CompanyName": "Acme Corporation",
      "PrimaryEmailAddr": "ap@acme.example",
      "PrimaryPhone": "+14155551234",
      "BillAddr": "{\"Line1\":\"123 Main St\",\"City\":\"San Francisco\",\"CountrySubDivisionCode\":\"CA\",\"PostalCode\":\"94105\"}"
    }
  }
}
```

Update a vendor's contact details:

```json
{
  "type": "quickbooks",
  "parameters": {
    "resource": "vendor",
    "operation": "update",
    "vendorId": "56",
    "updateFields": {
      "PrimaryEmailAddr": "accounts@supplier.example",
      "PrimaryPhone": "+14155559876"
    }
  }
}
```

Record a bill against a vendor:

```json
{
  "type": "quickbooks",
  "parameters": {
    "resource": "bill",
    "operation": "create",
    "VendorRef": "56",
    "Line": "[{\"DetailType\":\"AccountBasedExpenseLineDetail\",\"Amount\":420,\"Description\":\"Office supplies\",\"accountId\":\"7\"}]",
    "additionalFields": {
      "DueDate": "2026-02-28",
      "GlobalTaxCalculation": "TaxExcluded"
    }
  }
}
```

Record a customer payment:

```json
{
  "type": "quickbooks",
  "parameters": {
    "resource": "payment",
    "operation": "create",
    "CustomerRef": "24",
    "TotalAmt": 150,
    "additionalFields": {
      "PaymentMethodRef": "3",
      "DepositToAccountRef": "35"
    }
  }
}
```

Send an estimate for approval:

```json
{
  "type": "quickbooks",
  "parameters": {
    "resource": "estimate",
    "operation": "send",
    "estimateId": "97",
    "email": "buyer@example.com"
  }
}
```

Pull a grouped transaction report for the month, one item per row:

```json
{
  "type": "quickbooks",
  "parameters": {
    "resource": "transaction",
    "operation": "getReport",
    "simple": true,
    "filters": {
      "date_macro": "This Month",
      "group_by": "Customer",
      "sort_order": "Descend",
      "arpaid": "Unpaid"
    }
  }
}
```

Report on a custom date range instead:

```json
{
  "type": "quickbooks",
  "parameters": {
    "resource": "transaction",
    "operation": "getReport",
    "simple": true,
    "filters": {
      "start_date": "2026-01-01",
      "end_date": "2026-03-31",
      "group_by": "Month",
      "columns": "tx_date,txn_type,name,subt_nat_amount"
    }
  }
}
```

### Error Handling

| Mode | Behavior |
|------|----------|
| **stop** | Halts workflow on first error |
| **continue** | Skips failed items, passes successful ones through |
| **errorPort** | Routes failed items to Error output port |

## Tips

Manage QuickBooks Online financial data — CRUD for bills, customers, invoices, estimates, payments, vendors, with PDF download support.