# QuickBooks Online (oci · ghcr.io/wyre-technology/qbo-mcp:v1.6.4)

MCP server for QuickBooks Online — accounts, customers, invoices, bills, and reports.

- Trust score: 41/100 (low)
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-08-22

## Components

- oci · `ghcr.io/wyre-technology/qbo-mcp:v1.6.4`: 41/100 (this document), [markdown](https://verifymcp.io/servers/wyre-technology-qbo-mcp/ghcr-io-wyre-technology-qbo-mcp-v1-6-4.md), [page](https://verifymcp.io/servers/wyre-technology-qbo-mcp/ghcr-io-wyre-technology-qbo-mcp-v1-6-4)

## Channel facts

- Registry: `oci`
- Package: `ghcr.io/wyre-technology/qbo-mcp:v1.6.4`
- Transport: `stdio`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-08-22.

- **Supply Chain Security**: 0/100
  - Malware scan not yet available for this package.
  - Known CVEs could not be checked: this artifact ships no SBOM, so there is no dependency list to read. Publishing one would let us assess it.
  - Install-script risk not yet assessed.
  - Dependency health could not be checked: this artifact ships no SBOM, so there is no dependency list to read. Publishing one would let us assess it.
- **Provenance & Transparency**: 45/100
  - Source repository is publicly reachable at the declared URL.
  - Provenance check failed: no build-provenance attestation is published.
  - Clear OSI-approved license (Apache-2.0).
  - Actively maintained (last published 0 days ago).
  - Disclosure check failed: no security disclosure policy was found in the source repository.
- **Schema Quality & AI Usability**: 85/100
  - 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).
  - AI-judged instruction clarity (excellent).
  - Context-footprint check failed: tool/resource definitions use about 15575 tokens (~116/item across 134 items; 133 tools + 1 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 0/100
  - Stability not yet verified: not enough scan history yet (needs a 30-day window).
- **Tool Coverage**: 100/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 100% of tool parameters carry a description.
- **Capabilities**: 100/100
  - Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.
  - Supports UI / widget rendering.

**Unverified: 2 categories.** Categories scored 0 because we could not verify them: a data source with nothing on this package, evidence we could not reach, or a check we could not run. We only credit what we can confirm.

## Install

### Claude

```bash
claude mcp add wyre-technology-qbo-mcp -- docker run --rm -i ghcr.io/wyre-technology/qbo-mcp:v1.6.4
```

### Codex

```bash
codex mcp add wyre-technology-qbo-mcp -- docker run --rm -i ghcr.io/wyre-technology/qbo-mcp:v1.6.4
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "wyre-technology-qbo-mcp": {
      "type": "local",
      "command": [
        "docker",
        "run",
        "--rm",
        "-i",
        "ghcr.io/wyre-technology/qbo-mcp:v1.6.4"
      ],
      "enabled": true
    }
  }
}
```

### Hermes

```yaml
mcp_servers:
  wyre-technology-qbo-mcp:
    command: "docker"
    args: ["run", "--rm", "-i", "ghcr.io/wyre-technology/qbo-mcp:v1.6.4"]
```

### Other

```json
{
  "mcpServers": {
    "wyre-technology-qbo-mcp": {
      "command": "docker",
      "args": [
        "run",
        "--rm",
        "-i",
        "ghcr.io/wyre-technology/qbo-mcp:v1.6.4"
      ]
    }
  }
}
```

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-08-21 (score 41)

First indexed and scored.

## MCP tools (133)

### `qbo_navigate` (~628 tokens)

Discover available QuickBooks Online tools by domain. Returns tool names and descriptions for the selected domain. All tools are callable at any time — this is a help/discovery aid, not a prerequisite.

Input parameters:

- `domain` (string, required): The domain to explore: - customers: Customer management - list, get, create, and search customers - invoices: Invoice management - list, get, create invoices and send them by email - payments: Paymen…

### `qbo_status` (~16 tokens)

Show credentials status and available domains

### `qbo_customers_list` (~66 tokens)

List Customer records in QuickBooks Online with pagination.

Input parameters:

- `maxResults` (number): Maximum number of results to return (default: 100, max: 1000)
- `startPosition` (number): Starting position for pagination (1-based, default: 1)

### `qbo_customers_get` (~32 tokens)

Get a specific Customer record by its ID.

Input parameters:

- `customerId` (string, required): The unique Customer ID

### `qbo_customers_create` (~149 tokens)

Create a new Customer record in QuickBooks Online.

Input parameters:

- `BillAddr` (object): Billing address object with Line1, City, CountrySubDivisionCode, PostalCode
- `CompanyName` (string): Company name
- `DisplayName` (string, required): Display name for the customer (required, must be unique)
- `FamilyName` (string): Last name of the customer
- `GivenName` (string): First name of the customer
- `PrimaryEmailAddr` (object): Primary email address object, e.g. {"Address": "user@example.com"}
- `PrimaryPhone` (object): Primary phone object, e.g. {"FreeFormNumber": "555-1234"}

### `qbo_customers_search` (~83 tokens)

Search Customer records by DisplayName (LIKE match).

Input parameters:

- `maxResults` (number): Maximum number of results to return (default: 100, max: 1000)
- `startPosition` (number): Starting position for pagination (1-based, default: 1)
- `term` (string, required): Search term matched against DisplayName with LIKE '%term%'

### `qbo_invoices_get` (~32 tokens)

Get a specific Invoice record by its ID.

Input parameters:

- `invoiceId` (string, required): The unique Invoice ID

### `qbo_invoices_create` (~177 tokens)

Create a new Invoice record in QuickBooks Online.

Input parameters:

- `BillEmail` (object): Email address to send the invoice to, e.g. {"Address": "customer@example.com"}
- `CustomerMemo` (object): Memo visible to customer, e.g. {"value": "Thank you for your business"}
- `CustomerRef` (object, required): Customer reference object, e.g. {"value": "123"} where value is the customer ID
- `DueDate` (string): Due date (YYYY-MM-DD)
- `Line` (array, required): Array of line items. Each line should have Amount, DetailType ("SalesItemLineDetail"), and SalesItemLineDetail with ItemRef.
- `PrivateNote` (string): Private note (not visible to customer)
- `TxnDate` (string): Transaction date (YYYY-MM-DD)

### `qbo_invoices_list` (~125 tokens)

List invoices in QuickBooks Online with pagination and optional filters for status and date range.

Input parameters:

- `endDate` (string): Filter invoices on or before this date (YYYY-MM-DD format)
- `maxResults` (number): Maximum number of results to return (default: 100, max: 1000)
- `startDate` (string): Filter invoices on or after this date (YYYY-MM-DD format)
- `startPosition` (number): Starting position for pagination (1-based, default: 1)
- `status` (string): Filter invoices by balance status

### `qbo_invoices_send` (~64 tokens)

Send an invoice by email. The invoice must already exist in QuickBooks Online.

Input parameters:

- `email` (string): Override email address to send to (optional, uses invoice BillEmail if not specified)
- `invoiceId` (string, required): The unique invoice ID to send

### `qbo_payments_list` (~116 tokens)

List Payment records in QuickBooks Online with pagination and optional TxnDate range.

Input parameters:

- `endDate` (string): Filter to records on or before this TxnDate (YYYY-MM-DD)
- `maxResults` (number): Maximum number of results to return (default: 100, max: 1000)
- `startDate` (string): Filter to records on or after this TxnDate (YYYY-MM-DD)
- `startPosition` (number): Starting position for pagination (1-based, default: 1)

### `qbo_payments_get` (~32 tokens)

Get a specific Payment record by its ID.

Input parameters:

- `paymentId` (string, required): The unique Payment ID

### `qbo_payments_create` (~142 tokens)

Create a new Payment record in QuickBooks Online.

Input parameters:

- `CustomerRef` (object, required): Customer reference object, e.g. {"value": "123"} where value is the customer ID
- `Line` (array): Array of LinkedTxn entries linking this payment to invoices, e.g. [{Amount: 100, LinkedTxn: [{TxnId: '5', TxnType: 'Invoice'}]}]
- `PaymentMethodRef` (object): Payment method reference object, e.g. {"value": "1"}
- `TotalAmt` (number, required): Total payment amount
- `TxnDate` (string): Transaction date (YYYY-MM-DD format)

### `qbo_vendors_list` (~66 tokens)

List Vendor records in QuickBooks Online with pagination.

Input parameters:

- `maxResults` (number): Maximum number of results to return (default: 100, max: 1000)
- `startPosition` (number): Starting position for pagination (1-based, default: 1)

### `qbo_vendors_get` (~32 tokens)

Get a specific Vendor record by its ID.

Input parameters:

- `vendorId` (string, required): The unique Vendor ID

### `qbo_vendors_create` (~188 tokens)

Create a new Vendor record in QuickBooks Online.

Input parameters:

- `BillAddr` (object): Billing address object with Line1, City, CountrySubDivisionCode, PostalCode
- `CompanyName` (string): Company name
- `DisplayName` (string, required): Display name for the vendor (required, must be unique)
- `FamilyName` (string): Last name
- `GivenName` (string): First name
- `PrimaryEmailAddr` (object): Primary email address object, e.g. {"Address": "vendor@example.com"}
- `PrimaryPhone` (object): Primary phone object, e.g. {"FreeFormNumber": "555-1234"}
- `TaxIdentifier` (string): Tax ID (e.g. EIN or SSN) used for 1099 reporting
- `Vendor1099` (boolean): Whether this vendor receives a 1099 at year end

### `qbo_vendors_update` (~241 tokens)

Sparse-update an existing Vendor record. Only provided fields are changed; Id and SyncToken are required.

Input parameters:

- `BillAddr` (object): Billing address object with Line1, City, CountrySubDivisionCode, PostalCode
- `CompanyName` (string): Company name
- `DisplayName` (string, required): Display name for the vendor (required, must be unique)
- `FamilyName` (string): Last name
- `GivenName` (string): First name
- `PrimaryEmailAddr` (object): Primary email address object, e.g. {"Address": "vendor@example.com"}
- `PrimaryPhone` (object): Primary phone object, e.g. {"FreeFormNumber": "555-1234"}
- `SyncToken` (string, required): Current SyncToken of the record (required by QBO for sparse updates; fetch the record first to obtain it)
- `TaxIdentifier` (string): Tax ID (e.g. EIN or SSN) used for 1099 reporting
- `Vendor1099` (boolean): Whether this vendor receives a 1099 at year end
- `vendorId` (string, required): The Vendor ID to update

### `qbo_vendors_search` (~83 tokens)

Search Vendor records by DisplayName (LIKE match).

Input parameters:

- `maxResults` (number): Maximum number of results to return (default: 100, max: 1000)
- `startPosition` (number): Starting position for pagination (1-based, default: 1)
- `term` (string, required): Search term matched against DisplayName with LIKE '%term%'

### `qbo_items_list` (~65 tokens)

List Item records in QuickBooks Online with pagination.

Input parameters:

- `maxResults` (number): Maximum number of results to return (default: 100, max: 1000)
- `startPosition` (number): Starting position for pagination (1-based, default: 1)

### `qbo_items_get` (~31 tokens)

Get a specific Item record by its ID.

Input parameters:

- `itemId` (string, required): The unique Item ID

### `qbo_items_create` (~245 tokens)

Create a new Item record in QuickBooks Online.

Input parameters:

- `AssetAccountRef` (object): Asset account reference, required for Inventory items, e.g. {"value": "81"}
- `Description` (string): Sales description
- `ExpenseAccountRef` (object): Expense or COGS account reference, e.g. {"value": "80"} (required for Inventory and NonInventory items)
- `IncomeAccountRef` (object): Income account reference, e.g. {"value": "79"} (required for Inventory and Service items)
- `InvStartDate` (string): Inventory start date (YYYY-MM-DD, Inventory items only)
- `Name` (string, required): Item name (required, must be unique)
- `PurchaseCost` (number): Default purchase cost
- `PurchaseDesc` (string): Purchase-side description
- `QtyOnHand` (number): Initial on-hand quantity (Inventory items only)
- `Taxable` (boolean): Whether the item is taxable on sales
- `Type` (string): Item type: Inventory, NonInventory, or Service. Required on create unless QBO infers it.
- `UnitPrice` (number): Default sales price

### `qbo_items_update` (~298 tokens)

Sparse-update an existing Item record. Only provided fields are changed; Id and SyncToken are required.

Input parameters:

- `AssetAccountRef` (object): Asset account reference, required for Inventory items, e.g. {"value": "81"}
- `Description` (string): Sales description
- `ExpenseAccountRef` (object): Expense or COGS account reference, e.g. {"value": "80"} (required for Inventory and NonInventory items)
- `IncomeAccountRef` (object): Income account reference, e.g. {"value": "79"} (required for Inventory and Service items)
- `InvStartDate` (string): Inventory start date (YYYY-MM-DD, Inventory items only)
- `Name` (string, required): Item name (required, must be unique)
- `PurchaseCost` (number): Default purchase cost
- `PurchaseDesc` (string): Purchase-side description
- `QtyOnHand` (number): Initial on-hand quantity (Inventory items only)
- `SyncToken` (string, required): Current SyncToken of the record (required by QBO for sparse updates; fetch the record first to obtain it)
- `Taxable` (boolean): Whether the item is taxable on sales
- `Type` (string): Item type: Inventory, NonInventory, or Service. Required on create unless QBO infers it.
- `UnitPrice` (number): Default sales price
- `itemId` (string, required): The Item ID to update

### `qbo_items_search` (~80 tokens)

Search Item records by Name (LIKE match).

Input parameters:

- `maxResults` (number): Maximum number of results to return (default: 100, max: 1000)
- `startPosition` (number): Starting position for pagination (1-based, default: 1)
- `term` (string, required): Search term matched against Name with LIKE '%term%'

### `qbo_accounts_list` (~65 tokens)

List Account records in QuickBooks Online with pagination.

Input parameters:

- `maxResults` (number): Maximum number of results to return (default: 100, max: 1000)
- `startPosition` (number): Starting position for pagination (1-based, default: 1)

### `qbo_accounts_get` (~31 tokens)

Get a specific Account record by its ID.

Input parameters:

- `accountId` (string, required): The unique Account ID

### `qbo_accounts_create` (~195 tokens)

Create a new Account record in QuickBooks Online.

Input parameters:

- `AccountSubType` (string): Specific sub-type within the AccountType, e.g. Checking, SalesOfProductIncome
- `AccountType` (string): High-level account type, e.g. Bank, Accounts Receivable, Income, Expense, Equity, Other Current Asset (required on create)
- `AcctNum` (string): User-defined account number (if chart-of-accounts numbering is enabled)
- `Active` (boolean): Whether the account is active (inactive accounts are hidden)
- `CurrencyRef` (object): Currency reference for multi-currency companies, e.g. {"value": "USD"}
- `Description` (string): Free-form description
- `Name` (string, required): Account name (required, must be unique within parent)
- `ParentRef` (object): Parent account reference for sub-accounts, e.g. {"value": "42"}

### `qbo_accounts_update` (~248 tokens)

Sparse-update an existing Account record. Only provided fields are changed; Id and SyncToken are required.

Input parameters:

- `AccountSubType` (string): Specific sub-type within the AccountType, e.g. Checking, SalesOfProductIncome
- `AccountType` (string): High-level account type, e.g. Bank, Accounts Receivable, Income, Expense, Equity, Other Current Asset (required on create)
- `AcctNum` (string): User-defined account number (if chart-of-accounts numbering is enabled)
- `Active` (boolean): Whether the account is active (inactive accounts are hidden)
- `CurrencyRef` (object): Currency reference for multi-currency companies, e.g. {"value": "USD"}
- `Description` (string): Free-form description
- `Name` (string, required): Account name (required, must be unique within parent)
- `ParentRef` (object): Parent account reference for sub-accounts, e.g. {"value": "42"}
- `SyncToken` (string, required): Current SyncToken of the record (required by QBO for sparse updates; fetch the record first to obtain it)
- `accountId` (string, required): The Account ID to update

### `qbo_accounts_search` (~80 tokens)

Search Account records by Name (LIKE match).

Input parameters:

- `maxResults` (number): Maximum number of results to return (default: 100, max: 1000)
- `startPosition` (number): Starting position for pagination (1-based, default: 1)
- `term` (string, required): Search term matched against Name with LIKE '%term%'

### `qbo_journal_entries_list` (~118 tokens)

List JournalEntry records in QuickBooks Online with pagination and optional TxnDate range.

Input parameters:

- `endDate` (string): Filter to records on or before this TxnDate (YYYY-MM-DD)
- `maxResults` (number): Maximum number of results to return (default: 100, max: 1000)
- `startDate` (string): Filter to records on or after this TxnDate (YYYY-MM-DD)
- `startPosition` (number): Starting position for pagination (1-based, default: 1)

### `qbo_journal_entries_get` (~36 tokens)

Get a specific JournalEntry record by its ID.

Input parameters:

- `journalEntryId` (string, required): The unique JournalEntry ID

### `qbo_journal_entries_create` (~159 tokens)

Create a new JournalEntry record in QuickBooks Online.

Input parameters:

- `Adjustment` (boolean): Whether this is an adjusting journal entry
- `DocNumber` (string): Reference number for the journal entry
- `Line` (array, required): Array of journal entry lines. Each line: {Amount, DetailType: "JournalEntryLineDetail", JournalEntryLineDetail: {PostingType: "Debit"|"Credit", AccountRef: {value: "id"}, Entity?: {EntityRef: {value,…
- `PrivateNote` (string): Private memo (not visible on reports)
- `TxnDate` (string): Transaction date (YYYY-MM-DD); defaults to today if omitted

### `qbo_journal_entries_update` (~214 tokens)

Sparse-update an existing JournalEntry record. Only provided fields are changed; Id and SyncToken are required.

Input parameters:

- `Adjustment` (boolean): Whether this is an adjusting journal entry
- `DocNumber` (string): Reference number for the journal entry
- `Line` (array, required): Array of journal entry lines. Each line: {Amount, DetailType: "JournalEntryLineDetail", JournalEntryLineDetail: {PostingType: "Debit"|"Credit", AccountRef: {value: "id"}, Entity?: {EntityRef: {value,…
- `PrivateNote` (string): Private memo (not visible on reports)
- `SyncToken` (string, required): Current SyncToken of the record (required by QBO for sparse updates; fetch the record first to obtain it)
- `TxnDate` (string): Transaction date (YYYY-MM-DD); defaults to today if omitted
- `journalEntryId` (string, required): The JournalEntry ID to update

### `qbo_bills_list` (~116 tokens)

List Bill records in QuickBooks Online with pagination and optional TxnDate range.

Input parameters:

- `endDate` (string): Filter to records on or before this TxnDate (YYYY-MM-DD)
- `maxResults` (number): Maximum number of results to return (default: 100, max: 1000)
- `startDate` (string): Filter to records on or after this TxnDate (YYYY-MM-DD)
- `startPosition` (number): Starting position for pagination (1-based, default: 1)

### `qbo_bills_get` (~32 tokens)

Get a specific Bill record by its ID.

Input parameters:

- `billId` (string, required): The unique Bill ID

### `qbo_bills_create` (~199 tokens)

Create a new Bill record in QuickBooks Online.

Input parameters:

- `APAccountRef` (object): Accounts Payable account reference, e.g. {"value": "33"}
- `DocNumber` (string): Reference number / bill number from the vendor
- `DueDate` (string): Due date (YYYY-MM-DD)
- `Line` (array, required): Array of bill lines. Each line: {Amount, DetailType: "AccountBasedExpenseLineDetail" | "ItemBasedExpenseLineDetail", AccountBasedExpenseLineDetail?: {AccountRef: {value}}, ItemBasedExpenseLineDetail?…
- `PrivateNote` (string): Private note (not visible to vendor)
- `TxnDate` (string): Bill date (YYYY-MM-DD); defaults to today if omitted
- `VendorRef` (object, required): Vendor reference, e.g. {"value": "56"} (required)

### `qbo_bills_update` (~252 tokens)

Sparse-update an existing Bill record. Only provided fields are changed; Id and SyncToken are required.

Input parameters:

- `APAccountRef` (object): Accounts Payable account reference, e.g. {"value": "33"}
- `DocNumber` (string): Reference number / bill number from the vendor
- `DueDate` (string): Due date (YYYY-MM-DD)
- `Line` (array, required): Array of bill lines. Each line: {Amount, DetailType: "AccountBasedExpenseLineDetail" | "ItemBasedExpenseLineDetail", AccountBasedExpenseLineDetail?: {AccountRef: {value}}, ItemBasedExpenseLineDetail?…
- `PrivateNote` (string): Private note (not visible to vendor)
- `SyncToken` (string, required): Current SyncToken of the record (required by QBO for sparse updates; fetch the record first to obtain it)
- `TxnDate` (string): Bill date (YYYY-MM-DD); defaults to today if omitted
- `VendorRef` (object, required): Vendor reference, e.g. {"value": "56"} (required)
- `billId` (string, required): The Bill ID to update

### `qbo_bills_search` (~83 tokens)

Search Bill records by DocNumber (LIKE match).

Input parameters:

- `maxResults` (number): Maximum number of results to return (default: 100, max: 1000)
- `startPosition` (number): Starting position for pagination (1-based, default: 1)
- `term` (string, required): Search term matched against DocNumber with LIKE '%term%'

### `qbo_bill_payments_list` (~118 tokens)

List BillPayment records in QuickBooks Online with pagination and optional TxnDate range.

Input parameters:

- `endDate` (string): Filter to records on or before this TxnDate (YYYY-MM-DD)
- `maxResults` (number): Maximum number of results to return (default: 100, max: 1000)
- `startDate` (string): Filter to records on or after this TxnDate (YYYY-MM-DD)
- `startPosition` (number): Starting position for pagination (1-based, default: 1)

### `qbo_bill_payments_get` (~36 tokens)

Get a specific BillPayment record by its ID.

Input parameters:

- `billPaymentId` (string, required): The unique BillPayment ID

### `qbo_bill_payments_create` (~229 tokens)

Create a new BillPayment record in QuickBooks Online.

Input parameters:

- `CheckPayment` (object): Required when PayType is "Check". Shape: {BankAccountRef: {value}, PrintStatus: "NeedToPrint"|"PrintComplete"}
- `CreditCardPayment` (object): Required when PayType is "CreditCard". Shape: {CCAccountRef: {value}}
- `DocNumber` (string): Reference number (e.g. check number)
- `Line` (array, required): Array of LinkedTxn entries: [{Amount, LinkedTxn: [{TxnId: "billId", TxnType: "Bill"}]}].
- `PayType` (string, required): Payment method: "Check" or "CreditCard" (required)
- `PrivateNote` (string): Private note
- `TotalAmt` (number, required): Total payment amount across all linked bills (required)
- `TxnDate` (string): Payment date (YYYY-MM-DD); defaults to today if omitted
- `VendorRef` (object, required): Vendor reference, e.g. {"value": "56"} (required)

### `qbo_bill_payments_update` (~284 tokens)

Sparse-update an existing BillPayment record. Only provided fields are changed; Id and SyncToken are required.

Input parameters:

- `CheckPayment` (object): Required when PayType is "Check". Shape: {BankAccountRef: {value}, PrintStatus: "NeedToPrint"|"PrintComplete"}
- `CreditCardPayment` (object): Required when PayType is "CreditCard". Shape: {CCAccountRef: {value}}
- `DocNumber` (string): Reference number (e.g. check number)
- `Line` (array, required): Array of LinkedTxn entries: [{Amount, LinkedTxn: [{TxnId: "billId", TxnType: "Bill"}]}].
- `PayType` (string, required): Payment method: "Check" or "CreditCard" (required)
- `PrivateNote` (string): Private note
- `SyncToken` (string, required): Current SyncToken of the record (required by QBO for sparse updates; fetch the record first to obtain it)
- `TotalAmt` (number, required): Total payment amount across all linked bills (required)
- `TxnDate` (string): Payment date (YYYY-MM-DD); defaults to today if omitted
- `VendorRef` (object, required): Vendor reference, e.g. {"value": "56"} (required)
- `billPaymentId` (string, required): The BillPayment ID to update

### `qbo_vendor_credits_list` (~118 tokens)

List VendorCredit records in QuickBooks Online with pagination and optional TxnDate range.

Input parameters:

- `endDate` (string): Filter to records on or before this TxnDate (YYYY-MM-DD)
- `maxResults` (number): Maximum number of results to return (default: 100, max: 1000)
- `startDate` (string): Filter to records on or after this TxnDate (YYYY-MM-DD)
- `startPosition` (number): Starting position for pagination (1-based, default: 1)

### `qbo_vendor_credits_get` (~36 tokens)

Get a specific VendorCredit record by its ID.

Input parameters:

- `vendorCreditId` (string, required): The unique VendorCredit ID

### `qbo_vendor_credits_create` (~152 tokens)

Create a new VendorCredit record in QuickBooks Online.

Input parameters:

- `APAccountRef` (object): Accounts Payable account reference, e.g. {"value": "33"}
- `DocNumber` (string): Reference number from the vendor
- `Line` (array, required): Array of credit lines, same shape as Bill.Line: {Amount, DetailType: "AccountBasedExpenseLineDetail" | "ItemBasedExpenseLineDetail", ...}.
- `PrivateNote` (string): Private note
- `TxnDate` (string): Credit date (YYYY-MM-DD); defaults to today if omitted
- `VendorRef` (object, required): Vendor reference, e.g. {"value": "56"} (required)

### `qbo_vendor_credits_update` (~207 tokens)

Sparse-update an existing VendorCredit record. Only provided fields are changed; Id and SyncToken are required.

Input parameters:

- `APAccountRef` (object): Accounts Payable account reference, e.g. {"value": "33"}
- `DocNumber` (string): Reference number from the vendor
- `Line` (array, required): Array of credit lines, same shape as Bill.Line: {Amount, DetailType: "AccountBasedExpenseLineDetail" | "ItemBasedExpenseLineDetail", ...}.
- `PrivateNote` (string): Private note
- `SyncToken` (string, required): Current SyncToken of the record (required by QBO for sparse updates; fetch the record first to obtain it)
- `TxnDate` (string): Credit date (YYYY-MM-DD); defaults to today if omitted
- `VendorRef` (object, required): Vendor reference, e.g. {"value": "56"} (required)
- `vendorCreditId` (string, required): The VendorCredit ID to update

### `qbo_purchases_list` (~116 tokens)

List Purchase records in QuickBooks Online with pagination and optional TxnDate range.

Input parameters:

- `endDate` (string): Filter to records on or before this TxnDate (YYYY-MM-DD)
- `maxResults` (number): Maximum number of results to return (default: 100, max: 1000)
- `startDate` (string): Filter to records on or after this TxnDate (YYYY-MM-DD)
- `startPosition` (number): Starting position for pagination (1-based, default: 1)

### `qbo_purchases_get` (~32 tokens)

Get a specific Purchase record by its ID.

Input parameters:

- `purchaseId` (string, required): The unique Purchase ID

### `qbo_purchases_create` (~181 tokens)

Create a new Purchase record in QuickBooks Online.

Input parameters:

- `AccountRef` (object, required): Bank, credit card, or cash account the purchase was paid from, e.g. {"value": "35"}
- `DocNumber` (string): Reference number
- `EntityRef` (object): Optional payee reference, e.g. {"value": "56", "type": "Vendor"} or with type "Customer"/"Employee"
- `Line` (array, required): Expense lines, same shape as Bill.Line: {Amount, DetailType: "AccountBasedExpenseLineDetail" | "ItemBasedExpenseLineDetail", ...}.
- `PaymentType` (string, required): Payment method: "Cash", "Check", or "CreditCard"
- `PrivateNote` (string): Private note
- `TxnDate` (string): Purchase date (YYYY-MM-DD)

### `qbo_purchases_update` (~234 tokens)

Sparse-update an existing Purchase record. Only provided fields are changed; Id and SyncToken are required.

Input parameters:

- `AccountRef` (object, required): Bank, credit card, or cash account the purchase was paid from, e.g. {"value": "35"}
- `DocNumber` (string): Reference number
- `EntityRef` (object): Optional payee reference, e.g. {"value": "56", "type": "Vendor"} or with type "Customer"/"Employee"
- `Line` (array, required): Expense lines, same shape as Bill.Line: {Amount, DetailType: "AccountBasedExpenseLineDetail" | "ItemBasedExpenseLineDetail", ...}.
- `PaymentType` (string, required): Payment method: "Cash", "Check", or "CreditCard"
- `PrivateNote` (string): Private note
- `SyncToken` (string, required): Current SyncToken of the record (required by QBO for sparse updates; fetch the record first to obtain it)
- `TxnDate` (string): Purchase date (YYYY-MM-DD)
- `purchaseId` (string, required): The Purchase ID to update

### `qbo_purchase_orders_list` (~117 tokens)

List PurchaseOrder records in QuickBooks Online with pagination and optional TxnDate range.

Input parameters:

- `endDate` (string): Filter to records on or before this TxnDate (YYYY-MM-DD)
- `maxResults` (number): Maximum number of results to return (default: 100, max: 1000)
- `startDate` (string): Filter to records on or after this TxnDate (YYYY-MM-DD)
- `startPosition` (number): Starting position for pagination (1-based, default: 1)

### `qbo_purchase_orders_get` (~35 tokens)

Get a specific PurchaseOrder record by its ID.

Input parameters:

- `purchaseOrderId` (string, required): The unique PurchaseOrder ID

### `qbo_purchase_orders_create` (~186 tokens)

Create a new PurchaseOrder record in QuickBooks Online.

Input parameters:

- `DocNumber` (string): PO number
- `DueDate` (string): Expected delivery date
- `Line` (array, required): PO lines, same shape as Bill.Line: {Amount, DetailType, AccountBasedExpenseLineDetail | ItemBasedExpenseLineDetail}.
- `Memo` (string): Memo printed on the PO
- `POStatus` (string): Status: "Open" or "Closed"
- `PrivateNote` (string): Private internal note
- `ShipAddr` (object): Ship-to address (Line1, City, CountrySubDivisionCode, PostalCode)
- `TxnDate` (string): PO date (YYYY-MM-DD)
- `VendorAddr` (object): Vendor address override
- `VendorRef` (object, required): Vendor receiving the PO, e.g. {"value": "56"}

### `qbo_purchase_orders_update` (~241 tokens)

Sparse-update an existing PurchaseOrder record. Only provided fields are changed; Id and SyncToken are required.

Input parameters:

- `DocNumber` (string): PO number
- `DueDate` (string): Expected delivery date
- `Line` (array, required): PO lines, same shape as Bill.Line: {Amount, DetailType, AccountBasedExpenseLineDetail | ItemBasedExpenseLineDetail}.
- `Memo` (string): Memo printed on the PO
- `POStatus` (string): Status: "Open" or "Closed"
- `PrivateNote` (string): Private internal note
- `ShipAddr` (object): Ship-to address (Line1, City, CountrySubDivisionCode, PostalCode)
- `SyncToken` (string, required): Current SyncToken of the record (required by QBO for sparse updates; fetch the record first to obtain it)
- `TxnDate` (string): PO date (YYYY-MM-DD)
- `VendorAddr` (object): Vendor address override
- `VendorRef` (object, required): Vendor receiving the PO, e.g. {"value": "56"}
- `purchaseOrderId` (string, required): The PurchaseOrder ID to update

### `qbo_estimates_list` (~116 tokens)

List Estimate records in QuickBooks Online with pagination and optional TxnDate range.

Input parameters:

- `endDate` (string): Filter to records on or before this TxnDate (YYYY-MM-DD)
- `maxResults` (number): Maximum number of results to return (default: 100, max: 1000)
- `startDate` (string): Filter to records on or after this TxnDate (YYYY-MM-DD)
- `startPosition` (number): Starting position for pagination (1-based, default: 1)

### `qbo_estimates_get` (~32 tokens)

Get a specific Estimate record by its ID.

Input parameters:

- `estimateId` (string, required): The unique Estimate ID

### `qbo_estimates_create` (~216 tokens)

Create a new Estimate record in QuickBooks Online.

Input parameters:

- `AcceptedBy` (string): Name of the customer contact who accepted
- `AcceptedDate` (string): Acceptance date
- `BillEmail` (object): Email address, e.g. {"Address": "customer@example.com"}
- `CustomerMemo` (object): Memo visible to customer, e.g. {"value": "Thank you"}
- `CustomerRef` (object, required): Customer being quoted, e.g. {"value": "123"}
- `DocNumber` (string): Estimate number
- `ExpirationDate` (string): Expiration date
- `Line` (array, required): Quote lines: {Amount, DetailType: "SalesItemLineDetail", SalesItemLineDetail: {ItemRef, Qty, UnitPrice}}.
- `PrivateNote` (string): Private internal note
- `TxnDate` (string): Estimate date (YYYY-MM-DD)
- `TxnStatus` (string): Status: "Pending", "Accepted", "Rejected", or "Closed"

### `qbo_estimates_update` (~269 tokens)

Sparse-update an existing Estimate record. Only provided fields are changed; Id and SyncToken are required.

Input parameters:

- `AcceptedBy` (string): Name of the customer contact who accepted
- `AcceptedDate` (string): Acceptance date
- `BillEmail` (object): Email address, e.g. {"Address": "customer@example.com"}
- `CustomerMemo` (object): Memo visible to customer, e.g. {"value": "Thank you"}
- `CustomerRef` (object, required): Customer being quoted, e.g. {"value": "123"}
- `DocNumber` (string): Estimate number
- `ExpirationDate` (string): Expiration date
- `Line` (array, required): Quote lines: {Amount, DetailType: "SalesItemLineDetail", SalesItemLineDetail: {ItemRef, Qty, UnitPrice}}.
- `PrivateNote` (string): Private internal note
- `SyncToken` (string, required): Current SyncToken of the record (required by QBO for sparse updates; fetch the record first to obtain it)
- `TxnDate` (string): Estimate date (YYYY-MM-DD)
- `TxnStatus` (string): Status: "Pending", "Accepted", "Rejected", or "Closed"
- `estimateId` (string, required): The Estimate ID to update

### `qbo_sales_receipts_list` (~118 tokens)

List SalesReceipt records in QuickBooks Online with pagination and optional TxnDate range.

Input parameters:

- `endDate` (string): Filter to records on or before this TxnDate (YYYY-MM-DD)
- `maxResults` (number): Maximum number of results to return (default: 100, max: 1000)
- `startDate` (string): Filter to records on or after this TxnDate (YYYY-MM-DD)
- `startPosition` (number): Starting position for pagination (1-based, default: 1)

### `qbo_sales_receipts_get` (~36 tokens)

Get a specific SalesReceipt record by its ID.

Input parameters:

- `salesReceiptId` (string, required): The unique SalesReceipt ID

### `qbo_sales_receipts_create` (~208 tokens)

Create a new SalesReceipt record in QuickBooks Online.

Input parameters:

- `BillEmail` (object): Customer email, e.g. {"Address": "customer@example.com"}
- `CustomerMemo` (object): Memo visible to customer, e.g. {"value": "Thank you"}
- `CustomerRef` (object, required): Customer reference, e.g. {"value": "123"}
- `DepositToAccountRef` (object): Account where the payment is deposited, e.g. {"value": "35"}. Required unless using Undeposited Funds default.
- `DocNumber` (string): Receipt number
- `Line` (array, required): Sale lines: {Amount, DetailType: "SalesItemLineDetail", SalesItemLineDetail: {ItemRef}}.
- `PaymentMethodRef` (object): Payment method, e.g. {"value": "1"}
- `PrivateNote` (string): Private internal note
- `TxnDate` (string): Sale date (YYYY-MM-DD)

### `qbo_sales_receipts_update` (~263 tokens)

Sparse-update an existing SalesReceipt record. Only provided fields are changed; Id and SyncToken are required.

Input parameters:

- `BillEmail` (object): Customer email, e.g. {"Address": "customer@example.com"}
- `CustomerMemo` (object): Memo visible to customer, e.g. {"value": "Thank you"}
- `CustomerRef` (object, required): Customer reference, e.g. {"value": "123"}
- `DepositToAccountRef` (object): Account where the payment is deposited, e.g. {"value": "35"}. Required unless using Undeposited Funds default.
- `DocNumber` (string): Receipt number
- `Line` (array, required): Sale lines: {Amount, DetailType: "SalesItemLineDetail", SalesItemLineDetail: {ItemRef}}.
- `PaymentMethodRef` (object): Payment method, e.g. {"value": "1"}
- `PrivateNote` (string): Private internal note
- `SyncToken` (string, required): Current SyncToken of the record (required by QBO for sparse updates; fetch the record first to obtain it)
- `TxnDate` (string): Sale date (YYYY-MM-DD)
- `salesReceiptId` (string, required): The SalesReceipt ID to update

### `qbo_credit_memos_list` (~118 tokens)

List CreditMemo records in QuickBooks Online with pagination and optional TxnDate range.

Input parameters:

- `endDate` (string): Filter to records on or before this TxnDate (YYYY-MM-DD)
- `maxResults` (number): Maximum number of results to return (default: 100, max: 1000)
- `startDate` (string): Filter to records on or after this TxnDate (YYYY-MM-DD)
- `startPosition` (number): Starting position for pagination (1-based, default: 1)

### `qbo_credit_memos_get` (~36 tokens)

Get a specific CreditMemo record by its ID.

Input parameters:

- `creditMemoId` (string, required): The unique CreditMemo ID

### `qbo_credit_memos_create` (~162 tokens)

Create a new CreditMemo record in QuickBooks Online.

Input parameters:

- `BillEmail` (object): Customer email, e.g. {"Address": "customer@example.com"}
- `CustomerMemo` (object): Memo visible to customer, e.g. {"value": "Refund for damaged goods"}
- `CustomerRef` (object, required): Customer receiving the credit, e.g. {"value": "123"}
- `DocNumber` (string): Credit memo number
- `Line` (array, required): Credit lines, same shape as Invoice.Line: {Amount, DetailType: "SalesItemLineDetail", SalesItemLineDetail: {ItemRef}}.
- `PrivateNote` (string): Private note
- `TxnDate` (string): Credit date (YYYY-MM-DD)

### `qbo_credit_memos_update` (~217 tokens)

Sparse-update an existing CreditMemo record. Only provided fields are changed; Id and SyncToken are required.

Input parameters:

- `BillEmail` (object): Customer email, e.g. {"Address": "customer@example.com"}
- `CustomerMemo` (object): Memo visible to customer, e.g. {"value": "Refund for damaged goods"}
- `CustomerRef` (object, required): Customer receiving the credit, e.g. {"value": "123"}
- `DocNumber` (string): Credit memo number
- `Line` (array, required): Credit lines, same shape as Invoice.Line: {Amount, DetailType: "SalesItemLineDetail", SalesItemLineDetail: {ItemRef}}.
- `PrivateNote` (string): Private note
- `SyncToken` (string, required): Current SyncToken of the record (required by QBO for sparse updates; fetch the record first to obtain it)
- `TxnDate` (string): Credit date (YYYY-MM-DD)
- `creditMemoId` (string, required): The CreditMemo ID to update

### `qbo_refund_receipts_list` (~119 tokens)

List RefundReceipt records in QuickBooks Online with pagination and optional TxnDate range.

Input parameters:

- `endDate` (string): Filter to records on or before this TxnDate (YYYY-MM-DD)
- `maxResults` (number): Maximum number of results to return (default: 100, max: 1000)
- `startDate` (string): Filter to records on or after this TxnDate (YYYY-MM-DD)
- `startPosition` (number): Starting position for pagination (1-based, default: 1)

### `qbo_refund_receipts_get` (~37 tokens)

Get a specific RefundReceipt record by its ID.

Input parameters:

- `refundReceiptId` (string, required): The unique RefundReceipt ID

### `qbo_refund_receipts_create` (~181 tokens)

Create a new RefundReceipt record in QuickBooks Online.

Input parameters:

- `CustomerMemo` (object): Memo visible to customer
- `CustomerRef` (object, required): Customer receiving the refund, e.g. {"value": "123"}
- `DepositToAccountRef` (object, required): Account the refund is drawn from, e.g. {"value": "35"} (required)
- `DocNumber` (string): Refund number
- `Line` (array, required): Refund lines, same shape as Invoice.Line: {Amount, DetailType: "SalesItemLineDetail", SalesItemLineDetail: {ItemRef}}.
- `PaymentMethodRef` (object): Payment method used to issue refund, e.g. {"value": "1"}
- `PrivateNote` (string): Private note
- `TxnDate` (string): Refund date (YYYY-MM-DD)

### `qbo_refund_receipts_update` (~236 tokens)

Sparse-update an existing RefundReceipt record. Only provided fields are changed; Id and SyncToken are required.

Input parameters:

- `CustomerMemo` (object): Memo visible to customer
- `CustomerRef` (object, required): Customer receiving the refund, e.g. {"value": "123"}
- `DepositToAccountRef` (object, required): Account the refund is drawn from, e.g. {"value": "35"} (required)
- `DocNumber` (string): Refund number
- `Line` (array, required): Refund lines, same shape as Invoice.Line: {Amount, DetailType: "SalesItemLineDetail", SalesItemLineDetail: {ItemRef}}.
- `PaymentMethodRef` (object): Payment method used to issue refund, e.g. {"value": "1"}
- `PrivateNote` (string): Private note
- `SyncToken` (string, required): Current SyncToken of the record (required by QBO for sparse updates; fetch the record first to obtain it)
- `TxnDate` (string): Refund date (YYYY-MM-DD)
- `refundReceiptId` (string, required): The RefundReceipt ID to update

### `qbo_deposits_list` (~117 tokens)

List Deposit records in QuickBooks Online with pagination and optional TxnDate range.

Input parameters:

- `endDate` (string): Filter to records on or before this TxnDate (YYYY-MM-DD)
- `maxResults` (number): Maximum number of results to return (default: 100, max: 1000)
- `startDate` (string): Filter to records on or after this TxnDate (YYYY-MM-DD)
- `startPosition` (number): Starting position for pagination (1-based, default: 1)

### `qbo_deposits_get` (~33 tokens)

Get a specific Deposit record by its ID.

Input parameters:

- `depositId` (string, required): The unique Deposit ID

### `qbo_deposits_create` (~165 tokens)

Create a new Deposit record in QuickBooks Online.

Input parameters:

- `CashBack` (object): Optional cash-back amount: {Amount, AccountRef: {value}, Memo?}
- `DepositToAccountRef` (object, required): Bank account receiving the deposit, e.g. {"value": "35"}
- `DocNumber` (string): Deposit reference number
- `Line` (array, required): Deposit lines. Each line is either {Amount, DetailType: "DepositLineDetail", DepositLineDetail: {AccountRef, Entity?, PaymentMethodRef?}} OR {Amount, LinkedTxn: [{TxnId, TxnType}]} for linked transac…
- `PrivateNote` (string): Private note
- `TxnDate` (string): Deposit date (YYYY-MM-DD)

### `qbo_deposits_update` (~218 tokens)

Sparse-update an existing Deposit record. Only provided fields are changed; Id and SyncToken are required.

Input parameters:

- `CashBack` (object): Optional cash-back amount: {Amount, AccountRef: {value}, Memo?}
- `DepositToAccountRef` (object, required): Bank account receiving the deposit, e.g. {"value": "35"}
- `DocNumber` (string): Deposit reference number
- `Line` (array, required): Deposit lines. Each line is either {Amount, DetailType: "DepositLineDetail", DepositLineDetail: {AccountRef, Entity?, PaymentMethodRef?}} OR {Amount, LinkedTxn: [{TxnId, TxnType}]} for linked transac…
- `PrivateNote` (string): Private note
- `SyncToken` (string, required): Current SyncToken of the record (required by QBO for sparse updates; fetch the record first to obtain it)
- `TxnDate` (string): Deposit date (YYYY-MM-DD)
- `depositId` (string, required): The Deposit ID to update

### `qbo_transfers_list` (~116 tokens)

List Transfer records in QuickBooks Online with pagination and optional TxnDate range.

Input parameters:

- `endDate` (string): Filter to records on or before this TxnDate (YYYY-MM-DD)
- `maxResults` (number): Maximum number of results to return (default: 100, max: 1000)
- `startDate` (string): Filter to records on or after this TxnDate (YYYY-MM-DD)
- `startPosition` (number): Starting position for pagination (1-based, default: 1)

### `qbo_transfers_get` (~32 tokens)

Get a specific Transfer record by its ID.

Input parameters:

- `transferId` (string, required): The unique Transfer ID

### `qbo_transfers_create` (~94 tokens)

Create a new Transfer record in QuickBooks Online.

Input parameters:

- `Amount` (number, required): Amount transferred
- `FromAccountRef` (object, required): Source account, e.g. {"value": "35"}
- `PrivateNote` (string): Memo
- `ToAccountRef` (object, required): Destination account, e.g. {"value": "37"}
- `TxnDate` (string): Transfer date (YYYY-MM-DD)

### `qbo_transfers_update` (~147 tokens)

Sparse-update an existing Transfer record. Only provided fields are changed; Id and SyncToken are required.

Input parameters:

- `Amount` (number, required): Amount transferred
- `FromAccountRef` (object, required): Source account, e.g. {"value": "35"}
- `PrivateNote` (string): Memo
- `SyncToken` (string, required): Current SyncToken of the record (required by QBO for sparse updates; fetch the record first to obtain it)
- `ToAccountRef` (object, required): Destination account, e.g. {"value": "37"}
- `TxnDate` (string): Transfer date (YYYY-MM-DD)
- `transferId` (string, required): The Transfer ID to update

### `qbo_time_activities_list` (~118 tokens)

List TimeActivity records in QuickBooks Online with pagination and optional TxnDate range.

Input parameters:

- `endDate` (string): Filter to records on or before this TxnDate (YYYY-MM-DD)
- `maxResults` (number): Maximum number of results to return (default: 100, max: 1000)
- `startDate` (string): Filter to records on or after this TxnDate (YYYY-MM-DD)
- `startPosition` (number): Starting position for pagination (1-based, default: 1)

### `qbo_time_activities_get` (~36 tokens)

Get a specific TimeActivity record by its ID.

Input parameters:

- `timeActivityId` (string, required): The unique TimeActivity ID

### `qbo_time_activities_create` (~275 tokens)

Create a new TimeActivity record in QuickBooks Online.

Input parameters:

- `BillableStatus` (string): Billable status: "Billable", "NotBillable", or "HasBeenBilled"
- `CustomerRef` (object): Customer the time is billed to (optional)
- `Description` (string): Activity description
- `EmployeeRef` (object): Employee reference when NameOf is "Employee", e.g. {"value": "42"}
- `EndTime` (string): End time (ISO 8601), alternative to Hours+Minutes
- `HourlyRate` (number): Hourly billing rate
- `Hours` (number): Duration hours portion
- `ItemRef` (object): Service item the time is logged against, e.g. {"value": "7"}
- `Minutes` (number): Duration minutes portion
- `NameOf` (string, required): Whose time this is: "Employee" or "Vendor"
- `StartTime` (string): Start time (ISO 8601), alternative to Hours+Minutes
- `Taxable` (boolean): Whether the time is taxable when billed
- `TxnDate` (string, required): Activity date (YYYY-MM-DD)
- `VendorRef` (object): Vendor reference when NameOf is "Vendor", e.g. {"value": "56"}

### `qbo_time_activities_update` (~330 tokens)

Sparse-update an existing TimeActivity record. Only provided fields are changed; Id and SyncToken are required.

Input parameters:

- `BillableStatus` (string): Billable status: "Billable", "NotBillable", or "HasBeenBilled"
- `CustomerRef` (object): Customer the time is billed to (optional)
- `Description` (string): Activity description
- `EmployeeRef` (object): Employee reference when NameOf is "Employee", e.g. {"value": "42"}
- `EndTime` (string): End time (ISO 8601), alternative to Hours+Minutes
- `HourlyRate` (number): Hourly billing rate
- `Hours` (number): Duration hours portion
- `ItemRef` (object): Service item the time is logged against, e.g. {"value": "7"}
- `Minutes` (number): Duration minutes portion
- `NameOf` (string, required): Whose time this is: "Employee" or "Vendor"
- `StartTime` (string): Start time (ISO 8601), alternative to Hours+Minutes
- `SyncToken` (string, required): Current SyncToken of the record (required by QBO for sparse updates; fetch the record first to obtain it)
- `Taxable` (boolean): Whether the time is taxable when billed
- `TxnDate` (string, required): Activity date (YYYY-MM-DD)
- `VendorRef` (object): Vendor reference when NameOf is "Vendor", e.g. {"value": "56"}
- `timeActivityId` (string, required): The TimeActivity ID to update

### `qbo_classes_list` (~65 tokens)

List Class records in QuickBooks Online with pagination.

Input parameters:

- `maxResults` (number): Maximum number of results to return (default: 100, max: 1000)
- `startPosition` (number): Starting position for pagination (1-based, default: 1)

### `qbo_classes_get` (~31 tokens)

Get a specific Class record by its ID.

Input parameters:

- `classId` (string, required): The unique Class ID

### `qbo_classes_create` (~72 tokens)

Create a new Class record in QuickBooks Online.

Input parameters:

- `Active` (boolean): Whether the class is active
- `Name` (string, required): Class name (required, must be unique within parent)
- `ParentRef` (object): Parent class for sub-classes, e.g. {"value": "3"}

### `qbo_classes_update` (~125 tokens)

Sparse-update an existing Class record. Only provided fields are changed; Id and SyncToken are required.

Input parameters:

- `Active` (boolean): Whether the class is active
- `Name` (string, required): Class name (required, must be unique within parent)
- `ParentRef` (object): Parent class for sub-classes, e.g. {"value": "3"}
- `SyncToken` (string, required): Current SyncToken of the record (required by QBO for sparse updates; fetch the record first to obtain it)
- `classId` (string, required): The Class ID to update

### `qbo_classes_search` (~80 tokens)

Search Class records by Name (LIKE match).

Input parameters:

- `maxResults` (number): Maximum number of results to return (default: 100, max: 1000)
- `startPosition` (number): Starting position for pagination (1-based, default: 1)
- `term` (string, required): Search term matched against Name with LIKE '%term%'

### `qbo_departments_list` (~66 tokens)

List Department records in QuickBooks Online with pagination.

Input parameters:

- `maxResults` (number): Maximum number of results to return (default: 100, max: 1000)
- `startPosition` (number): Starting position for pagination (1-based, default: 1)

### `qbo_departments_get` (~32 tokens)

Get a specific Department record by its ID.

Input parameters:

- `departmentId` (string, required): The unique Department ID

### `qbo_departments_create` (~65 tokens)

Create a new Department record in QuickBooks Online.

Input parameters:

- `Active` (boolean): Whether the department is active
- `Name` (string, required): Department name (required, must be unique within parent)
- `ParentRef` (object): Parent department for sub-departments

### `qbo_departments_update` (~118 tokens)

Sparse-update an existing Department record. Only provided fields are changed; Id and SyncToken are required.

Input parameters:

- `Active` (boolean): Whether the department is active
- `Name` (string, required): Department name (required, must be unique within parent)
- `ParentRef` (object): Parent department for sub-departments
- `SyncToken` (string, required): Current SyncToken of the record (required by QBO for sparse updates; fetch the record first to obtain it)
- `departmentId` (string, required): The Department ID to update

### `qbo_departments_search` (~81 tokens)

Search Department records by Name (LIKE match).

Input parameters:

- `maxResults` (number): Maximum number of results to return (default: 100, max: 1000)
- `startPosition` (number): Starting position for pagination (1-based, default: 1)
- `term` (string, required): Search term matched against Name with LIKE '%term%'

### `qbo_terms_list` (~65 tokens)

List Term records in QuickBooks Online with pagination.

Input parameters:

- `maxResults` (number): Maximum number of results to return (default: 100, max: 1000)
- `startPosition` (number): Starting position for pagination (1-based, default: 1)

### `qbo_terms_get` (~31 tokens)

Get a specific Term record by its ID.

Input parameters:

- `termId` (string, required): The unique Term ID

### `qbo_terms_create` (~103 tokens)

Create a new Term record in QuickBooks Online.

Input parameters:

- `Active` (boolean): Whether the term is active
- `DiscountDays` (number): Days within which the discount applies
- `DiscountPercent` (number): Early-payment discount percent (for 2/10 Net 30 style terms)
- `DueDays` (number): Number of days from invoice date to due date
- `Name` (string, required): Term name, e.g. "Net 30"

### `qbo_terms_update` (~156 tokens)

Sparse-update an existing Term record. Only provided fields are changed; Id and SyncToken are required.

Input parameters:

- `Active` (boolean): Whether the term is active
- `DiscountDays` (number): Days within which the discount applies
- `DiscountPercent` (number): Early-payment discount percent (for 2/10 Net 30 style terms)
- `DueDays` (number): Number of days from invoice date to due date
- `Name` (string, required): Term name, e.g. "Net 30"
- `SyncToken` (string, required): Current SyncToken of the record (required by QBO for sparse updates; fetch the record first to obtain it)
- `termId` (string, required): The Term ID to update

### `qbo_terms_search` (~80 tokens)

Search Term records by Name (LIKE match).

Input parameters:

- `maxResults` (number): Maximum number of results to return (default: 100, max: 1000)
- `startPosition` (number): Starting position for pagination (1-based, default: 1)
- `term` (string, required): Search term matched against Name with LIKE '%term%'

### `qbo_payment_methods_list` (~67 tokens)

List PaymentMethod records in QuickBooks Online with pagination.

Input parameters:

- `maxResults` (number): Maximum number of results to return (default: 100, max: 1000)
- `startPosition` (number): Starting position for pagination (1-based, default: 1)

### `qbo_payment_methods_get` (~35 tokens)

Get a specific PaymentMethod record by its ID.

Input parameters:

- `paymentMethodId` (string, required): The unique PaymentMethod ID

### `qbo_payment_methods_create` (~79 tokens)

Create a new PaymentMethod record in QuickBooks Online.

Input parameters:

- `Active` (boolean): Whether the method is active
- `Name` (string, required): Payment method name, e.g. "Visa" or "Check"
- `Type` (string): Card type for credit-card methods: "CREDIT_CARD" or "NON_CREDIT_CARD"

### `qbo_payment_methods_update` (~134 tokens)

Sparse-update an existing PaymentMethod record. Only provided fields are changed; Id and SyncToken are required.

Input parameters:

- `Active` (boolean): Whether the method is active
- `Name` (string, required): Payment method name, e.g. "Visa" or "Check"
- `SyncToken` (string, required): Current SyncToken of the record (required by QBO for sparse updates; fetch the record first to obtain it)
- `Type` (string): Card type for credit-card methods: "CREDIT_CARD" or "NON_CREDIT_CARD"
- `paymentMethodId` (string, required): The PaymentMethod ID to update

### `qbo_payment_methods_search` (~82 tokens)

Search PaymentMethod records by Name (LIKE match).

Input parameters:

- `maxResults` (number): Maximum number of results to return (default: 100, max: 1000)
- `startPosition` (number): Starting position for pagination (1-based, default: 1)
- `term` (string, required): Search term matched against Name with LIKE '%term%'

### `qbo_tax_codes_list` (~67 tokens)

List TaxCode records in QuickBooks Online with pagination.

Input parameters:

- `maxResults` (number): Maximum number of results to return (default: 100, max: 1000)
- `startPosition` (number): Starting position for pagination (1-based, default: 1)

### `qbo_tax_codes_get` (~35 tokens)

Get a specific TaxCode record by its ID.

Input parameters:

- `taxCodeId` (string, required): The unique TaxCode ID

### `qbo_tax_codes_search` (~82 tokens)

Search TaxCode records by Name (LIKE match).

Input parameters:

- `maxResults` (number): Maximum number of results to return (default: 100, max: 1000)
- `startPosition` (number): Starting position for pagination (1-based, default: 1)
- `term` (string, required): Search term matched against Name with LIKE '%term%'

### `qbo_tax_rates_list` (~67 tokens)

List TaxRate records in QuickBooks Online with pagination.

Input parameters:

- `maxResults` (number): Maximum number of results to return (default: 100, max: 1000)
- `startPosition` (number): Starting position for pagination (1-based, default: 1)

### `qbo_tax_rates_get` (~35 tokens)

Get a specific TaxRate record by its ID.

Input parameters:

- `taxRateId` (string, required): The unique TaxRate ID

### `qbo_tax_rates_search` (~82 tokens)

Search TaxRate records by Name (LIKE match).

Input parameters:

- `maxResults` (number): Maximum number of results to return (default: 100, max: 1000)
- `startPosition` (number): Starting position for pagination (1-based, default: 1)
- `term` (string, required): Search term matched against Name with LIKE '%term%'

### `qbo_employees_list` (~66 tokens)

List Employee records in QuickBooks Online with pagination.

Input parameters:

- `maxResults` (number): Maximum number of results to return (default: 100, max: 1000)
- `startPosition` (number): Starting position for pagination (1-based, default: 1)

### `qbo_employees_get` (~32 tokens)

Get a specific Employee record by its ID.

Input parameters:

- `employeeId` (string, required): The unique Employee ID

### `qbo_employees_create` (~220 tokens)

Create a new Employee record in QuickBooks Online.

Input parameters:

- `Active` (boolean): Whether the employee is active
- `BillableTime` (boolean): Whether the employee's time is billable to customers
- `BirthDate` (string): Birth date (YYYY-MM-DD)
- `DisplayName` (string, required): Display name (required, must be unique)
- `EmployeeNumber` (string): Internal employee number
- `FamilyName` (string): Last name
- `GivenName` (string): First name
- `HiredDate` (string): Hire date (YYYY-MM-DD)
- `MiddleName` (string): Middle name
- `PrimaryAddr` (object): Home address (Line1, City, CountrySubDivisionCode, PostalCode)
- `PrimaryEmailAddr` (object): Email, e.g. {"Address": "employee@example.com"}
- `PrimaryPhone` (object): Phone, e.g. {"FreeFormNumber": "555-1234"}
- `ReleasedDate` (string): Termination date (YYYY-MM-DD)

### `qbo_employees_update` (~273 tokens)

Sparse-update an existing Employee record. Only provided fields are changed; Id and SyncToken are required.

Input parameters:

- `Active` (boolean): Whether the employee is active
- `BillableTime` (boolean): Whether the employee's time is billable to customers
- `BirthDate` (string): Birth date (YYYY-MM-DD)
- `DisplayName` (string, required): Display name (required, must be unique)
- `EmployeeNumber` (string): Internal employee number
- `FamilyName` (string): Last name
- `GivenName` (string): First name
- `HiredDate` (string): Hire date (YYYY-MM-DD)
- `MiddleName` (string): Middle name
- `PrimaryAddr` (object): Home address (Line1, City, CountrySubDivisionCode, PostalCode)
- `PrimaryEmailAddr` (object): Email, e.g. {"Address": "employee@example.com"}
- `PrimaryPhone` (object): Phone, e.g. {"FreeFormNumber": "555-1234"}
- `ReleasedDate` (string): Termination date (YYYY-MM-DD)
- `SyncToken` (string, required): Current SyncToken of the record (required by QBO for sparse updates; fetch the record first to obtain it)
- `employeeId` (string, required): The Employee ID to update

### `qbo_employees_search` (~83 tokens)

Search Employee records by DisplayName (LIKE match).

Input parameters:

- `maxResults` (number): Maximum number of results to return (default: 100, max: 1000)
- `startPosition` (number): Starting position for pagination (1-based, default: 1)
- `term` (string, required): Search term matched against DisplayName with LIKE '%term%'

### `qbo_company_info_list` (~67 tokens)

List CompanyInfo records in QuickBooks Online with pagination.

Input parameters:

- `maxResults` (number): Maximum number of results to return (default: 100, max: 1000)
- `startPosition` (number): Starting position for pagination (1-based, default: 1)

### `qbo_company_info_get` (~35 tokens)

Get a specific CompanyInfo record by its ID.

Input parameters:

- `companyInfoId` (string, required): The unique CompanyInfo ID

### `qbo_attachables_list` (~67 tokens)

List Attachable records in QuickBooks Online with pagination.

Input parameters:

- `maxResults` (number): Maximum number of results to return (default: 100, max: 1000)
- `startPosition` (number): Starting position for pagination (1-based, default: 1)

### `qbo_attachables_get` (~35 tokens)

Get a specific Attachable record by its ID.

Input parameters:

- `attachableId` (string, required): The unique Attachable ID

### `qbo_attachables_create` (~124 tokens)

Create a new Attachable record in QuickBooks Online.

Input parameters:

- `AttachableRef` (array): Array of references attaching this to one or more transactions: [{EntityRef: {value, type}, IncludeOnSend: boolean}].
- `Category` (string): User-defined category
- `ContentType` (string): MIME type, e.g. "application/pdf"
- `FileAccessUri` (string): URI for accessing the file
- `FileName` (string): Original filename
- `Note` (string): Free-form text note (instead of a file)

### `qbo_attachables_update` (~179 tokens)

Sparse-update an existing Attachable record. Only provided fields are changed; Id and SyncToken are required.

Input parameters:

- `AttachableRef` (array): Array of references attaching this to one or more transactions: [{EntityRef: {value, type}, IncludeOnSend: boolean}].
- `Category` (string): User-defined category
- `ContentType` (string): MIME type, e.g. "application/pdf"
- `FileAccessUri` (string): URI for accessing the file
- `FileName` (string): Original filename
- `Note` (string): Free-form text note (instead of a file)
- `SyncToken` (string, required): Current SyncToken of the record (required by QBO for sparse updates; fetch the record first to obtain it)
- `attachableId` (string, required): The Attachable ID to update

### `qbo_attachables_upload` (~246 tokens)

Upload a file to QuickBooks Online and (optionally) attach it to a transaction. Returns the created Attachable record. File bytes must be provided base64-encoded; QBO's max attachment size is 100 MB per file.

Input parameters:

- `attachToId` (string): Optional QBO entity ID to attach this file to
- `attachToType` (string): Optional QBO entity type to attach this file to, e.g. "Invoice", "Bill", "Customer"
- `base64Data` (string, required): Base64-encoded file content
- `category` (string): Optional user-defined category, e.g. "Receipt", "Contract"
- `contentType` (string, required): MIME type of the file, e.g. "application/pdf" or "image/png"
- `fileName` (string, required): Original filename including extension, e.g. "invoice-1234.pdf"
- `includeOnSend` (boolean): Optional. When true and attached to a sendable entity (Invoice, Estimate), include this file when the entity is sent by email. Defaults to false.
- `note` (string): Optional free-form note stored on the Attachable

### `qbo_expenses_list_purchases` (~116 tokens)

List purchases (expenses/checks/credit card charges) in QuickBooks Online with pagination.

Input parameters:

- `endDate` (string): Filter purchases on or before this date (YYYY-MM-DD format)
- `maxResults` (number): Maximum number of results to return (default: 100, max: 1000)
- `startDate` (string): Filter purchases on or after this date (YYYY-MM-DD format)
- `startPosition` (number): Starting position for pagination (1-based, default: 1)

### `qbo_expenses_list_bills` (~111 tokens)

List bills (accounts payable) in QuickBooks Online with pagination.

Input parameters:

- `endDate` (string): Filter bills on or before this date (YYYY-MM-DD format)
- `maxResults` (number): Maximum number of results to return (default: 100, max: 1000)
- `startDate` (string): Filter bills on or after this date (YYYY-MM-DD format)
- `startPosition` (number): Starting position for pagination (1-based, default: 1)

### `qbo_expenses_get_purchase` (~46 tokens)

Get detailed information about a specific purchase by its ID. Returns full purchase details including line items and vendor info.

Input parameters:

- `purchaseId` (string, required): The unique purchase ID

### `qbo_expenses_get_bill` (~46 tokens)

Get detailed information about a specific bill by its ID. Returns full bill details including line items and vendor info.

Input parameters:

- `billId` (string, required): The unique bill ID

### `qbo_reports_profit_and_loss` (~91 tokens)

Get a Profit and Loss (Income Statement) report for a given date range. Shows revenue, expenses, and net income.

Input parameters:

- `accounting_method` (string): Accounting method (default: Accrual)
- `end_date` (string, required): End date for the report period (YYYY-MM-DD format)
- `start_date` (string, required): Start date for the report period (YYYY-MM-DD format)

### `qbo_reports_balance_sheet` (~85 tokens)

Get a Balance Sheet report as of a given date range. Shows assets, liabilities, and equity.

Input parameters:

- `accounting_method` (string): Accounting method (default: Accrual)
- `end_date` (string, required): End date for the report period (YYYY-MM-DD format)
- `start_date` (string, required): Start date for the report period (YYYY-MM-DD format)

### `qbo_reports_aged_receivables` (~58 tokens)

Get an Aged Receivables (A/R Aging Summary) report. Shows outstanding customer balances grouped by age.

Input parameters:

- `report_date` (string): Report as-of date (YYYY-MM-DD format, default: today)

### `qbo_reports_aged_payables` (~56 tokens)

Get an Aged Payables (A/P Aging Summary) report. Shows outstanding vendor balances grouped by age.

Input parameters:

- `report_date` (string): Report as-of date (YYYY-MM-DD format, default: today)

### `qbo_reports_customer_sales` (~68 tokens)

Get a Customer Sales report for a given date range. Shows sales totals broken down by customer.

Input parameters:

- `end_date` (string, required): End date for the report period (YYYY-MM-DD format)
- `start_date` (string, required): Start date for the report period (YYYY-MM-DD format)

### `qbo_reports_cash_flow` (~66 tokens)

Get a Cash Flow Statement for a given date range. Shows cash inflows and outflows from operating, investing, and financing activities.

Input parameters:

- `end_date` (string, required): End date (YYYY-MM-DD)
- `start_date` (string, required): Start date (YYYY-MM-DD)

### `qbo_reports_trial_balance` (~81 tokens)

Get a Trial Balance report as of a given date. Lists all accounts with their debit/credit balances to verify the books balance.

Input parameters:

- `accounting_method` (string): Accounting method (default: Accrual)
- `end_date` (string, required): End date (YYYY-MM-DD)
- `start_date` (string, required): Start date (YYYY-MM-DD)

### `qbo_reports_general_ledger` (~75 tokens)

Get a General Ledger report for a given date range. Shows every posted transaction grouped by account.

Input parameters:

- `accounting_method` (string): Accounting method (default: Accrual)
- `end_date` (string, required): End date (YYYY-MM-DD)
- `start_date` (string, required): Start date (YYYY-MM-DD)

### `qbo_reports_customer_balance` (~51 tokens)

Get a Customer Balance report as of a given date. Lists the outstanding balance owed by each customer.

Input parameters:

- `report_date` (string): Report as-of date (YYYY-MM-DD, default: today)

### `qbo_reports_vendor_expenses` (~59 tokens)

Get a Vendor Expenses report for a given date range. Shows expense totals broken down by vendor.

Input parameters:

- `end_date` (string, required): End date (YYYY-MM-DD)
- `start_date` (string, required): Start date (YYYY-MM-DD)

## Diagnostics

Captured diagnostic sections: Provenance. The full working is on the page: https://verifymcp.io/servers/wyre-technology-qbo-mcp/ghcr-io-wyre-technology-qbo-mcp-v1-6-4#diagnostics

## Score history

- 2026-08-22: 41
- 2026-08-21: 41

## Links

- Repository: https://github.com/wyre-technology/qbo-mcp
- Changelog RSS feed: https://verifymcp.io/servers/wyre-technology-qbo-mcp/ghcr-io-wyre-technology-qbo-mcp-v1-6-4.xml
- Changelog JSON feed: https://verifymcp.io/servers/wyre-technology-qbo-mcp/ghcr-io-wyre-technology-qbo-mcp-v1-6-4.json
- HTML version of this page: https://verifymcp.io/servers/wyre-technology-qbo-mcp/ghcr-io-wyre-technology-qbo-mcp-v1-6-4
