> ## Documentation Index
> Fetch the complete documentation index at: https://docs.toolshed.philo.ventures/llms.txt
> Use this file to discover all available pages before exploring further.

# QuickBooks Plugin

> QuickBooks Online accounting — customers, invoices, bills, payments, vendors, accounts, and reports.

**Plugin ID:** `quickbooks` | **Auth:** OAuth2 | **Scopes:** `com.intuit.quickbooks.accounting`

<Note>
  All list tools use QuickBooks' SQL-like query syntax. Pass an optional `where` clause to filter results (e.g. `"DisplayName LIKE '%Acme%'"`). Every tool requires a `realmId` (company ID) parameter.
</Note>

## Tools

### quickbooks.customers.list

**Name:** List Customers

Query customers in QuickBooks Online.

**Input:**

| Parameter | Type      | Required | Default | Description                 |
| --------- | --------- | -------- | ------- | --------------------------- |
| `realmId` | `string`  | Yes      | --      | QuickBooks company/realm ID |
| `where`   | `string`  | No       | --      | Optional WHERE clause       |
| `limit`   | `integer` | No       | `100`   | Max results                 |
| `offset`  | `integer` | No       | `1`     | Start position              |

**Output:**

```json theme={null}
{
  "customers": [
    { "Id": "1", "DisplayName": "Acme Corp", "PrimaryEmailAddr": "billing@acme.com", "Balance": 1500.00 }
  ]
}
```

***

### quickbooks.customers.get

**Name:** Get Customer

Get a single QuickBooks customer by ID.

**Input:**

| Parameter    | Type     | Required | Description                 |
| ------------ | -------- | -------- | --------------------------- |
| `realmId`    | `string` | Yes      | QuickBooks company/realm ID |
| `customerId` | `string` | Yes      | Customer ID                 |

**Output:**

```json theme={null}
{ "customer": { "Id": "1", "DisplayName": "Acme Corp", "Balance": 1500.00, "..." : "..." } }
```

***

### quickbooks.invoices.list

**Name:** List Invoices

Query invoices in QuickBooks Online.

**Input:**

| Parameter | Type      | Required | Default | Description                 |
| --------- | --------- | -------- | ------- | --------------------------- |
| `realmId` | `string`  | Yes      | --      | QuickBooks company/realm ID |
| `where`   | `string`  | No       | --      | Optional WHERE clause       |
| `limit`   | `integer` | No       | `100`   | Max results                 |
| `offset`  | `integer` | No       | `1`     | Start position              |

**Output:**

```json theme={null}
{
  "invoices": [
    { "Id": "101", "DocNumber": "INV-001", "CustomerRef": { "value": "1", "name": "Acme Corp" }, "TotalAmt": 5000.00, "Balance": 5000.00, "DueDate": "2026-05-01", "TxnDate": "2026-04-01" }
  ]
}
```

***

### quickbooks.invoices.get

**Name:** Get Invoice

Get a single QuickBooks invoice by ID.

**Input:**

| Parameter   | Type     | Required | Description                 |
| ----------- | -------- | -------- | --------------------------- |
| `realmId`   | `string` | Yes      | QuickBooks company/realm ID |
| `invoiceId` | `string` | Yes      | Invoice ID                  |

**Output:**

```json theme={null}
{ "invoice": { "Id": "101", "DocNumber": "INV-001", "TotalAmt": 5000.00, "..." : "..." } }
```

***

### quickbooks.bills.list

**Name:** List Bills

Query bills (accounts payable) in QuickBooks Online.

**Input:**

| Parameter | Type      | Required | Default | Description                 |
| --------- | --------- | -------- | ------- | --------------------------- |
| `realmId` | `string`  | Yes      | --      | QuickBooks company/realm ID |
| `where`   | `string`  | No       | --      | Optional WHERE clause       |
| `limit`   | `integer` | No       | `100`   | Max results                 |
| `offset`  | `integer` | No       | `1`     | Start position              |

**Output:**

```json theme={null}
{
  "bills": [
    { "Id": "201", "VendorRef": { "value": "5", "name": "AWS" }, "TotalAmt": 3200.00, "Balance": 3200.00, "DueDate": "2026-05-15", "TxnDate": "2026-04-15" }
  ]
}
```

***

### quickbooks.bills.get

**Name:** Get Bill

Get a single QuickBooks bill by ID.

**Input:**

| Parameter | Type     | Required | Description                 |
| --------- | -------- | -------- | --------------------------- |
| `realmId` | `string` | Yes      | QuickBooks company/realm ID |
| `billId`  | `string` | Yes      | Bill ID                     |

**Output:**

```json theme={null}
{ "bill": { "Id": "201", "TotalAmt": 3200.00, "..." : "..." } }
```

***

### quickbooks.payments.list

**Name:** List Payments

Query payments in QuickBooks Online.

**Input:**

| Parameter | Type      | Required | Default | Description                 |
| --------- | --------- | -------- | ------- | --------------------------- |
| `realmId` | `string`  | Yes      | --      | QuickBooks company/realm ID |
| `where`   | `string`  | No       | --      | Optional WHERE clause       |
| `limit`   | `integer` | No       | `100`   | Max results                 |
| `offset`  | `integer` | No       | `1`     | Start position              |

**Output:**

```json theme={null}
{
  "payments": [
    { "Id": "301", "CustomerRef": { "value": "1", "name": "Acme Corp" }, "TotalAmt": 2500.00, "TxnDate": "2026-04-10" }
  ]
}
```

***

### quickbooks.accounts.list

**Name:** List Accounts

List chart of accounts in QuickBooks Online.

**Input:**

| Parameter     | Type      | Required | Default | Description                                         |
| ------------- | --------- | -------- | ------- | --------------------------------------------------- |
| `realmId`     | `string`  | Yes      | --      | QuickBooks company/realm ID                         |
| `accountType` | `string`  | No       | --      | Filter by account type (e.g. `"Bank"`, `"Expense"`) |
| `limit`       | `integer` | No       | `100`   | Max results                                         |
| `offset`      | `integer` | No       | `1`     | Start position                                      |

**Output:**

```json theme={null}
{
  "accounts": [
    { "Id": "1", "Name": "Checking", "AccountType": "Bank", "AccountSubType": "Checking", "CurrentBalance": 50000.00, "Active": true }
  ]
}
```

***

### quickbooks.vendors.list

**Name:** List Vendors

Query vendors in QuickBooks Online.

**Input:**

| Parameter | Type      | Required | Default | Description                 |
| --------- | --------- | -------- | ------- | --------------------------- |
| `realmId` | `string`  | Yes      | --      | QuickBooks company/realm ID |
| `where`   | `string`  | No       | --      | Optional WHERE clause       |
| `limit`   | `integer` | No       | `100`   | Max results                 |
| `offset`  | `integer` | No       | `1`     | Start position              |

**Output:**

```json theme={null}
{
  "vendors": [
    { "Id": "5", "DisplayName": "AWS", "PrimaryEmailAddr": "billing@aws.com", "Balance": 0 }
  ]
}
```

***

### quickbooks.reports.profit\_and\_loss

**Name:** Profit and Loss Report

Run a Profit and Loss (income statement) report.

**Input:**

| Parameter           | Type     | Required | Default     | Description                 |
| ------------------- | -------- | -------- | ----------- | --------------------------- |
| `realmId`           | `string` | Yes      | --          | QuickBooks company/realm ID |
| `start_date`        | `string` | No       | --          | Start date (YYYY-MM-DD)     |
| `end_date`          | `string` | No       | --          | End date (YYYY-MM-DD)       |
| `accounting_method` | `string` | No       | `"Accrual"` | `"Cash"` or `"Accrual"`     |

**Output:**

```json theme={null}
{ "report": { "Header": {}, "Rows": {}, "Columns": {} } }
```

***

### quickbooks.reports.balance\_sheet

**Name:** Balance Sheet Report

Run a Balance Sheet report.

**Input:**

| Parameter           | Type     | Required | Default     | Description                    |
| ------------------- | -------- | -------- | ----------- | ------------------------------ |
| `realmId`           | `string` | Yes      | --          | QuickBooks company/realm ID    |
| `date`              | `string` | No       | --          | Report as-of date (YYYY-MM-DD) |
| `accounting_method` | `string` | No       | `"Accrual"` | `"Cash"` or `"Accrual"`        |

**Output:**

```json theme={null}
{ "report": { "Header": {}, "Rows": {}, "Columns": {} } }
```

***

### quickbooks.invoices.create

**Name:** Create Invoice | **Destructive:** Yes

Create a new invoice in QuickBooks Online. Requires user approval.

**Input:**

| Parameter     | Type     | Required | Description                 |
| ------------- | -------- | -------- | --------------------------- |
| `realmId`     | `string` | Yes      | QuickBooks company/realm ID |
| `CustomerRef` | `object` | Yes      | `{ "value": "customerId" }` |
| `Line`        | `array`  | Yes      | Invoice line items          |
| `DueDate`     | `string` | No       | Due date (YYYY-MM-DD)       |

**Output:**

```json theme={null}
{ "Id": "102", "DocNumber": "INV-002", "TotalAmt": 7500.00 }
```

***

### quickbooks.customers.create

**Name:** Create Customer | **Destructive:** Yes

Create a new customer. Requires user approval.

**Input:**

| Parameter          | Type     | Required | Description                            |
| ------------------ | -------- | -------- | -------------------------------------- |
| `realmId`          | `string` | Yes      | QuickBooks company/realm ID            |
| `DisplayName`      | `string` | Yes      | Customer display name (must be unique) |
| `PrimaryEmailAddr` | `object` | No       | `{ "Address": "email" }`               |
| `PrimaryPhone`     | `object` | No       | `{ "FreeFormNumber": "phone" }`        |
| `CompanyName`      | `string` | No       | Company name                           |

**Output:**

```json theme={null}
{ "Id": "2", "DisplayName": "New Corp" }
```

***

### quickbooks.bills.create

**Name:** Create Bill | **Destructive:** Yes

Create a new bill (accounts payable). Requires user approval.

**Input:**

| Parameter   | Type     | Required | Description                 |
| ----------- | -------- | -------- | --------------------------- |
| `realmId`   | `string` | Yes      | QuickBooks company/realm ID |
| `VendorRef` | `object` | Yes      | `{ "value": "vendorId" }`   |
| `Line`      | `array`  | Yes      | Bill line items             |
| `DueDate`   | `string` | No       | Due date (YYYY-MM-DD)       |

**Output:**

```json theme={null}
{ "Id": "202", "TotalAmt": 1200.00 }
```

***

### quickbooks.payments.create

**Name:** Record Payment | **Destructive:** Yes

Record a payment against an invoice. Requires user approval.

**Input:**

| Parameter     | Type     | Required | Description                 |
| ------------- | -------- | -------- | --------------------------- |
| `realmId`     | `string` | Yes      | QuickBooks company/realm ID |
| `CustomerRef` | `object` | Yes      | `{ "value": "customerId" }` |
| `TotalAmt`    | `number` | Yes      | Payment amount              |
| `TxnDate`     | `string` | No       | Payment date (YYYY-MM-DD)   |

**Output:**

```json theme={null}
{ "Id": "302", "TotalAmt": 2500.00 }
```
