> **Building with AI coding agents?** If you're using an AI coding agent, install the official Scalekit plugin. It gives your agent full awareness of the Scalekit API — reducing hallucinations and enabling faster, more accurate code generation.
>
> - **Claude Code**: `/plugin marketplace add scalekit-inc/claude-code-authstack` then `/plugin install <auth-type>@scalekit-auth-stack`
> - **GitHub Copilot CLI**: `copilot plugin marketplace add scalekit-inc/github-copilot-authstack` then `copilot plugin install <auth-type>@scalekit-auth-stack`
> - **Codex**: run the bash installer, restart, then open Plugin Directory and enable `<auth-type>`
> - **Skills CLI** (Windsurf, Cline, 40+ agents): `npx skills add scalekit-inc/skills --list` then `--skill <skill-name>`
>
> `<auth-type>` / `<skill-name>`: `agentkit`, `full-stack-auth`, `mcp-auth`, `modular-sso`, `modular-scim` — [Full setup guide](https://docs.scalekit.com/dev-kit/build-with-ai/)

---

# QuickBooks

Connect your agent to QuickBooks Online to manage customers, invoices, bills, payments, and financial reports using OAuth 2.0.

**Authentication:** OAuth 2.0
**Categories:** Accounting, Finance
## What you can do

Connect this agent connector to let your agent:

- **Manage customers and vendors** — create, update, list, and retrieve customer and vendor records
- **Create and manage invoices** — create invoices, update line items, void or delete, and send by email
- **Track bills and payments** — create bills from vendors, record bill payments with check or credit card
- **Handle estimates and purchase orders** — create, update, and delete estimates; manage purchase orders
- **Record journal entries, deposits, and transfers** — post journal entries, create deposits, and transfer funds between accounts
- **Manage items and products** — create service and inventory items with pricing and account assignments
- **Access financial reports** — retrieve Profit & Loss, Balance Sheet, Cash Flow, Trial Balance, General Ledger, Aged Payables, and Aged Receivables reports
- **Manage classes and departments** — organize transactions with classes and departments
- **Work with tax codes** — list and retrieve tax codes for accurate tax application

## Authentication

This connector uses **OAuth 2.0**. Scalekit acts as the OAuth client: it redirects your user to QuickBooks, obtains an access token, and automatically refreshes it before it expires. Your agent code never handles tokens directly — you only pass a `connectionName` and a user `identifier`.

You supply your Intuit **QuickBooks app** credentials (Client ID + Secret) once per environment in the Scalekit dashboard.

Before calling this connector from your code, create the QuickBooks connection in **AgentKit** > **Connections** and copy the exact **Connection name** from that connection into your code. The value in code must match the dashboard exactly.

## Set up the connector

Register your Scalekit environment with the QuickBooks connector so Scalekit handles the authentication flow and token lifecycle for you. The connection name you create will be used to identify and invoke the connection programmatically. Then complete the configuration in your application as follows:

1. ## Create a QuickBooks app

    - Sign in to the [Intuit Developer Portal](https://developer.intuit.com) and go to **Dashboard** → **+ Create an app** → select **QuickBooks Online and Payments**.

    - Under **Keys & credentials**, select the **Production** tab, then copy the **Client ID** and **Client Secret**. Use the **Development** tab credentials only for testing against the QuickBooks sandbox.

    > Image: Screenshot

2. ## Set up auth redirects

    - In [Scalekit dashboard](https://app.scalekit.com), go to **AgentKit** > **Connections** > **Create Connection**. Find **QuickBooks** and click **Create**. Copy the redirect URI. It looks like `https:///sso/v1/oauth//callback`.

    > Image: Screenshot

    - Back in the Intuit Developer Portal, go to your app's **Keys & credentials** settings and add the Scalekit redirect URI under **Redirect URIs**.

3. ## Add credentials in Scalekit

    - In [Scalekit dashboard](https://app.scalekit.com), go to **AgentKit** > **Connections** and open the connection you created.

    - Enter your credentials:
      - **Client ID** (from your QuickBooks app)
      - **Client Secret** (from your QuickBooks app)
      - **Permissions** (OAuth scope strings): `com.intuit.quickbooks.accounting offline_access`

    - Click **Save**.

    > Image: Screenshot

## Code examples

Connect a user's QuickBooks Online account and make API calls on their behalf — Scalekit handles OAuth and token management automatically. QuickBooks uses a `realm_id` (company ID) to scope all requests; Scalekit resolves this automatically from the connected account's OAuth token.

## Proxy API calls

Make authenticated requests to any QuickBooks Online API endpoint through the Scalekit proxy.

  ### Node.js

```typescript

const connectionName = 'quickbooks'; // your connection name from Scalekit dashboard
const identifier = 'user_123';       // your unique user identifier

// Get credentials from app.scalekit.com → Developers → Settings → API Credentials
const scalekit = new ScalekitClient(
  process.env.SCALEKIT_ENV_URL,
  process.env.SCALEKIT_CLIENT_ID,
  process.env.SCALEKIT_CLIENT_SECRET
);
const actions = scalekit.actions;

// Authenticate the user (first time only)
const { link } = await actions.getAuthorizationLink({
  connectionName,
  identifier,
});
console.log('Authorize QuickBooks:', link);
process.stdout.write('Press Enter after authorizing...');
await new Promise(r => process.stdin.once('data', r));

// Make a request through the Scalekit proxy
// realm_id is resolved automatically from the connected account
const result = await actions.request({
  connectionName,
  identifier,
  path: '/v3/company/{{realm_id}}/query?query=SELECT * FROM Customer MAXRESULTS 10 STARTPOSITION 1',
  method: 'GET',
});
console.log(result);
```

  ### Python

```python

from dotenv import load_dotenv
load_dotenv()

connection_name = "quickbooks"  # your connection name from Scalekit dashboard
identifier = "user_123"         # your unique user identifier

# Get credentials from app.scalekit.com → Developers → Settings → API Credentials
scalekit_client = scalekit.client.ScalekitClient(
    client_id=os.getenv("SCALEKIT_CLIENT_ID"),
    client_secret=os.getenv("SCALEKIT_CLIENT_SECRET"),
    env_url=os.getenv("SCALEKIT_ENV_URL"),
)
actions = scalekit_client.actions

# Authenticate the user (first time only)
link_response = actions.get_authorization_link(
    connection_name=connection_name,
    identifier=identifier
)
print("Authorize QuickBooks:", link_response.link)
input("Press Enter after authorizing...")

# Make a request through the Scalekit proxy
# realm_id is resolved automatically from the connected account
result = actions.request(
    connection_name=connection_name,
    identifier=identifier,
    path="/v3/company/{{realm_id}}/query?query=SELECT * FROM Customer MAXRESULTS 10 STARTPOSITION 1",
    method="GET"
)
print(result)
```

## Execute tools

Use `executeTool` (Node.js) or `execute_tool` (Python) to call any QuickBooks tool by name with typed parameters.

### List customers

  ### Node.js

```typescript
const customers = await actions.executeTool({
  connectionName,
  identifier,
  toolName: 'quickbooks_customers_list',
  parameters: {
    max_results: 10,
    start_position: 1,
  },
});
console.log('Customers:', customers);
```

  ### Python

```python
customers = actions.execute_tool(
    connection_name=connection_name,
    identifier=identifier,
    tool_name="quickbooks_customers_list",
    parameters={
        "max_results": 10,
        "start_position": 1,
    },
)
print("Customers:", customers)
```

### Create an invoice

  ### Node.js

```typescript
const invoice = await actions.executeTool({
  connectionName,
  identifier,
  toolName: 'quickbooks_invoice_create',
  parameters: {
    CustomerRef: JSON.stringify({ value: '1' }),
    Line: JSON.stringify([
      {
        Amount: 150.00,
        DetailType: 'SalesItemLineDetail',
        SalesItemLineDetail: {
          ItemRef: { value: '1', name: 'Services' },
          Qty: 1,
          UnitPrice: 150.00,
        },
      },
    ]),
    DueDate: '2025-06-30',
    DocNumber: 'INV-001',
  },
});
console.log('Created invoice ID:', invoice.Invoice?.Id);
```

  ### Python

```python

invoice = actions.execute_tool(
    connection_name=connection_name,
    identifier=identifier,
    tool_name="quickbooks_invoice_create",
    parameters={
        "CustomerRef": json.dumps({"value": "1"}),
        "Line": json.dumps([
            {
                "Amount": 150.00,
                "DetailType": "SalesItemLineDetail",
                "SalesItemLineDetail": {
                    "ItemRef": {"value": "1", "name": "Services"},
                    "Qty": 1,
                    "UnitPrice": 150.00,
                },
            }
        ]),
        "DueDate": "2025-06-30",
        "DocNumber": "INV-001",
    },
)
print("Created invoice ID:", invoice.get("Invoice", {}).get("Id"))
```

## Scalekit tools

## Tool list

Use the exact tool names from the **Tool list** below when you call `execute_tool`. If you're not sure which name to use, list the tools available for the current user first.

## Tool list

### `quickbooks_company_info_get`

Retrieve company information for the connected QuickBooks Online account.

### `quickbooks_accounts_list`

List accounts from QuickBooks Online. Use where_clause to filter (e.g. "AccountType = 'Bank'").

Parameters:

- `max_results` (`integer`, required): Maximum number of records to return.
- `start_position` (`integer`, required): Starting position for pagination (1-based).
- `where_clause` (`string`, optional): Optional WHERE clause to filter accounts, e.g. "AccountType = 'Bank'".

### `quickbooks_account_get`

Retrieve a single QuickBooks Online account by its ID.

Parameters:

- `account_id` (`string`, required): The ID of the account to retrieve.

### `quickbooks_account_create`

Create a new account in QuickBooks Online.

Parameters:

- `Name` (`string`, required): Name of the account.
- `AccountType` (`string`, required): Account type (e.g. Bank, Expense, Income, Liability).
- `AccountSubType` (`string`, optional): Account sub-type.
- `Description` (`string`, optional): Description of the account.
- `CurrencyRef` (`string`, optional): Currency reference as JSON, e.g. `{"value":"USD"}`.
- `Active` (`boolean`, optional): Whether the account is active.

### `quickbooks_account_update`

Update an existing account in QuickBooks Online. Requires SyncToken from account_get.

Parameters:

- `Id` (`string`, required): The ID of the account to update.
- `SyncToken` (`string`, required): SyncToken from the account_get response (optimistic locking).
- `Name` (`string`, required): Name of the account.
- `AccountType` (`string`, required): Account type.
- `Description` (`string`, optional): Description.
- `Active` (`boolean`, optional): Whether the account is active.

### `quickbooks_customers_list`

List customers from QuickBooks Online with optional filtering and pagination.

Parameters:

- `max_results` (`integer`, required): Maximum number of records to return.
- `start_position` (`integer`, required): Starting position for pagination (1-based).
- `where_clause` (`string`, optional): Optional WHERE clause, e.g. "Active = true".

### `quickbooks_customer_get`

Retrieve a single QuickBooks Online customer by ID.

Parameters:

- `customer_id` (`string`, required): The ID of the customer.

### `quickbooks_customer_create`

Create a new customer in QuickBooks Online.

Parameters:

- `DisplayName` (`string`, required): Display name for the customer.
- `GivenName` (`string`, optional): First name.
- `FamilyName` (`string`, optional): Last name.
- `CompanyName` (`string`, optional): Company name.
- `PrimaryEmailAddr` (`string`, optional): Email as JSON, e.g. `{"Address":"john@example.com"}`.
- `PrimaryPhone` (`string`, optional): Phone as JSON, e.g. `{"FreeFormNumber":"555-1234"}`.
- `BillAddr` (`string`, optional): Billing address as JSON object.
- `Active` (`boolean`, optional): Whether the customer is active.

### `quickbooks_customer_update`

Update an existing customer in QuickBooks Online. Requires SyncToken from customer_get.

Parameters:

- `Id` (`string`, required): Customer ID.
- `SyncToken` (`string`, required): SyncToken from customer_get.
- `DisplayName` (`string`, required): Display name.
- `GivenName` (`string`, optional): First name.
- `FamilyName` (`string`, optional): Last name.
- `CompanyName` (`string`, optional): Company name.
- `PrimaryEmailAddr` (`string`, optional): Email as JSON.
- `Active` (`boolean`, optional): Whether the customer is active.

### `quickbooks_customer_delete`

Mark a customer as inactive in QuickBooks Online (customers cannot be permanently deleted).

Parameters:

- `Id` (`string`, required): Customer ID.
- `SyncToken` (`string`, required): SyncToken from customer_get.

### `quickbooks_vendors_list`

List vendors from QuickBooks Online with optional filtering and pagination.

Parameters:

- `max_results` (`integer`, required): Maximum number of records to return.
- `start_position` (`integer`, required): Starting position for pagination (1-based).
- `where_clause` (`string`, optional): Optional WHERE clause.

### `quickbooks_vendor_get`

Retrieve a single QuickBooks Online vendor by ID.

Parameters:

- `vendor_id` (`string`, required): The ID of the vendor.

### `quickbooks_vendor_create`

Create a new vendor in QuickBooks Online.

Parameters:

- `DisplayName` (`string`, required): Display name for the vendor.
- `GivenName` (`string`, optional): First name.
- `FamilyName` (`string`, optional): Last name.
- `CompanyName` (`string`, optional): Company name.
- `PrimaryEmailAddr` (`string`, optional): Email as JSON.
- `PrimaryPhone` (`string`, optional): Phone as JSON.
- `Active` (`boolean`, optional): Whether the vendor is active.

### `quickbooks_vendor_update`

Update an existing vendor in QuickBooks Online.

Parameters:

- `Id` (`string`, required): Vendor ID.
- `SyncToken` (`string`, required): SyncToken from vendor_get.
- `DisplayName` (`string`, required): Display name.
- `CompanyName` (`string`, optional): Company name.
- `PrimaryEmailAddr` (`string`, optional): Email as JSON.
- `Active` (`boolean`, optional): Whether the vendor is active.

### `quickbooks_items_list`

List items (products and services) from QuickBooks Online.

Parameters:

- `max_results` (`integer`, required): Maximum number of records to return.
- `start_position` (`integer`, required): Starting position for pagination (1-based).
- `where_clause` (`string`, optional): Optional WHERE clause, e.g. "Type = 'Service'".

### `quickbooks_item_get`

Retrieve a single QuickBooks Online item by ID.

Parameters:

- `item_id` (`string`, required): The ID of the item.

### `quickbooks_item_create`

Create a new item (product or service) in QuickBooks Online.

Parameters:

- `Name` (`string`, required): Name of the item.
- `Type` (`string`, required): Item type: Service, NonInventory, or Inventory.
- `Description` (`string`, optional): Description of the item.
- `UnitPrice` (`string`, optional): Unit price as a number string, e.g. `"150.00"`.
- `IncomeAccountRef` (`string`, optional): Income account reference as JSON, e.g. `{"value":"1","name":"Services"}`.
- `Active` (`boolean`, optional): Whether the item is active.

### `quickbooks_item_update`

Update an existing item in QuickBooks Online.

Parameters:

- `Id` (`string`, required): Item ID.
- `SyncToken` (`string`, required): SyncToken from item_get.
- `Name` (`string`, required): Name of the item.
- `Type` (`string`, required): Item type.
- `Description` (`string`, optional): Description.
- `UnitPrice` (`string`, optional): Unit price as number string.
- `Active` (`boolean`, optional): Whether the item is active.

### `quickbooks_item_delete`

Mark an item as inactive in QuickBooks Online (items cannot be permanently deleted).

Parameters:

- `Id` (`string`, required): Item ID.
- `SyncToken` (`string`, required): SyncToken from item_get.

### `quickbooks_invoices_list`

List invoices from QuickBooks Online with optional filtering and pagination.

Parameters:

- `max_results` (`integer`, required): Maximum number of records to return.
- `start_position` (`integer`, required): Starting position for pagination (1-based).
- `where_clause` (`string`, optional): Optional WHERE clause, e.g. "TxnDate > '2024-01-01'".

### `quickbooks_invoice_get`

Retrieve a single QuickBooks Online invoice by ID.

Parameters:

- `invoice_id` (`string`, required): The ID of the invoice.

### `quickbooks_invoice_create`

Create a new invoice in QuickBooks Online.

Parameters:

- `CustomerRef` (`string`, required): Customer reference as JSON, e.g. `{"value":"123"}`.
- `Line` (`string`, required): Line items as JSON array.
- `DueDate` (`string`, optional): Due date in YYYY-MM-DD format.
- `DocNumber` (`string`, optional): Invoice number.
- `PrivateNote` (`string`, optional): Internal memo.
- `EmailStatus` (`string`, optional): Email status: EmailSent or NotSet.
- `BillEmail` (`string`, optional): Billing email as JSON, e.g. `{"Address":"customer@example.com"}`.

### `quickbooks_invoice_update`

Update an existing invoice in QuickBooks Online.

Parameters:

- `Id` (`string`, required): Invoice ID.
- `SyncToken` (`string`, required): SyncToken from invoice_get.
- `CustomerRef` (`string`, required): Customer reference as JSON.
- `Line` (`string`, required): Line items as JSON array.
- `DueDate` (`string`, optional): Due date YYYY-MM-DD.
- `DocNumber` (`string`, optional): Invoice number.
- `PrivateNote` (`string`, optional): Internal memo.
- `EmailStatus` (`string`, optional): Email status.

### `quickbooks_invoice_void`

Void an invoice in QuickBooks Online.

Parameters:

- `Id` (`string`, required): Invoice ID.
- `SyncToken` (`string`, required): SyncToken from invoice_get.

### `quickbooks_invoice_delete`

Delete an invoice in QuickBooks Online.

Parameters:

- `Id` (`string`, required): Invoice ID.
- `SyncToken` (`string`, required): SyncToken from invoice_get.

### `quickbooks_invoice_send`

Send an invoice by email in QuickBooks Online.

Parameters:

- `invoice_id` (`string`, required): The ID of the invoice to send.
- `send_to` (`string`, required): Email address to send the invoice to.

### `quickbooks_bills_list`

List bills from QuickBooks Online with optional filtering and pagination.

Parameters:

- `max_results` (`integer`, required): Maximum number of records to return.
- `start_position` (`integer`, required): Starting position for pagination (1-based).
- `where_clause` (`string`, optional): Optional WHERE clause.

### `quickbooks_bill_get`

Retrieve a single QuickBooks Online bill by ID.

Parameters:

- `bill_id` (`string`, required): The ID of the bill.

### `quickbooks_bill_create`

Create a new bill in QuickBooks Online.

Parameters:

- `VendorRef` (`string`, required): Vendor reference as JSON, e.g. `{"value":"123"}`.
- `Line` (`string`, required): Line items as JSON array.
- `DueDate` (`string`, optional): Due date YYYY-MM-DD.
- `DocNumber` (`string`, optional): Bill number.
- `PrivateNote` (`string`, optional): Internal memo.

### `quickbooks_bill_update`

Update an existing bill in QuickBooks Online.

Parameters:

- `Id` (`string`, required): Bill ID.
- `SyncToken` (`string`, required): SyncToken from bill_get.
- `VendorRef` (`string`, required): Vendor reference as JSON.
- `Line` (`string`, required): Line items as JSON array.
- `DueDate` (`string`, optional): Due date YYYY-MM-DD.
- `PrivateNote` (`string`, optional): Internal memo.

### `quickbooks_bill_delete`

Delete a bill in QuickBooks Online.

Parameters:

- `Id` (`string`, required): Bill ID.
- `SyncToken` (`string`, required): SyncToken from bill_get.

### `quickbooks_bill_payments_list`

List bill payments from QuickBooks Online.

Parameters:

- `max_results` (`integer`, required): Maximum number of records to return.
- `start_position` (`integer`, required): Starting position for pagination (1-based).
- `where_clause` (`string`, optional): Optional WHERE clause.

### `quickbooks_bill_payment_get`

Retrieve a single QuickBooks Online bill payment by ID.

Parameters:

- `bill_payment_id` (`string`, required): The ID of the bill payment.

### `quickbooks_bill_payment_create`

Create a new bill payment in QuickBooks Online.

Parameters:

- `VendorRef` (`string`, required): Vendor reference as JSON, e.g. `{"value":"123"}`.
- `TotalAmt` (`string`, required): Total amount as number string, e.g. `"200.00"`.
- `PayType` (`string`, required): Payment type: Check or CreditCard.
- `Line` (`string`, required): Linked transactions as JSON array with LinkedTxn.
- `DocNumber` (`string`, optional): Document/check number.
- `CheckPayment` (`string`, optional): Check payment details as JSON, required when PayType is Check. e.g. `{"BankAccountRef":{"value":"35"}}`.
- `CreditCardPayment` (`string`, optional): Credit card payment details as JSON, required when PayType is CreditCard. e.g. `{"CCAccountRef":{"value":"41"}}`.
- `PrivateNote` (`string`, optional): Internal memo.

### `quickbooks_bill_payment_delete`

Delete a bill payment in QuickBooks Online.

Parameters:

- `Id` (`string`, required): Bill Payment ID.
- `SyncToken` (`string`, required): SyncToken from bill_payment_get.

### `quickbooks_payments_list`

List payments from QuickBooks Online with optional filtering and pagination.

Parameters:

- `max_results` (`integer`, required): Maximum number of records to return.
- `start_position` (`integer`, required): Starting position for pagination (1-based).
- `where_clause` (`string`, optional): Optional WHERE clause.

### `quickbooks_payment_get`

Retrieve a single QuickBooks Online payment by ID.

Parameters:

- `payment_id` (`string`, required): The ID of the payment.

### `quickbooks_payment_create`

Create a new customer payment in QuickBooks Online.

Parameters:

- `CustomerRef` (`string`, required): Customer reference as JSON, e.g. `{"value":"123"}`.
- `TotalAmt` (`string`, required): Total payment amount as number string, e.g. `"500.00"`.
- `PaymentRefNum` (`string`, optional): Payment reference number (check number, etc.).
- `Line` (`string`, optional): Linked transactions as JSON array.

### `quickbooks_payment_update`

Update an existing payment in QuickBooks Online.

Parameters:

- `Id` (`string`, required): Payment ID.
- `SyncToken` (`string`, required): SyncToken from payment_get.
- `CustomerRef` (`string`, required): Customer reference as JSON.
- `TotalAmt` (`string`, required): Total payment amount as number string.
- `PaymentRefNum` (`string`, optional): Payment reference number.

### `quickbooks_payment_delete`

Delete a payment in QuickBooks Online.

Parameters:

- `Id` (`string`, required): Payment ID.
- `SyncToken` (`string`, required): SyncToken from payment_get.

### `quickbooks_estimates_list`

List estimates from QuickBooks Online with optional filtering and pagination.

Parameters:

- `max_results` (`integer`, required): Maximum number of records to return.
- `start_position` (`integer`, required): Starting position for pagination (1-based).
- `where_clause` (`string`, optional): Optional WHERE clause.

### `quickbooks_estimate_get`

Retrieve a single QuickBooks Online estimate by ID.

Parameters:

- `estimate_id` (`string`, required): The ID of the estimate.

### `quickbooks_estimate_create`

Create a new estimate (quote) in QuickBooks Online.

Parameters:

- `CustomerRef` (`string`, required): Customer reference as JSON.
- `Line` (`string`, required): Line items as JSON array.
- `DocNumber` (`string`, optional): Estimate number.
- `ExpirationDate` (`string`, optional): Expiration date YYYY-MM-DD.
- `PrivateNote` (`string`, optional): Internal memo.

### `quickbooks_estimate_delete`

Delete an estimate in QuickBooks Online.

Parameters:

- `Id` (`string`, required): Estimate ID.
- `SyncToken` (`string`, required): SyncToken from estimate_get.

### `quickbooks_credit_memos_list`

List credit memos from QuickBooks Online.

Parameters:

- `max_results` (`integer`, required): Maximum number of records to return.
- `start_position` (`integer`, required): Starting position for pagination (1-based).
- `where_clause` (`string`, optional): Optional WHERE clause.

### `quickbooks_credit_memo_get`

Retrieve a single QuickBooks Online credit memo by ID.

Parameters:

- `credit_memo_id` (`string`, required): The ID of the credit memo.

### `quickbooks_credit_memo_create`

Create a new credit memo in QuickBooks Online.

Parameters:

- `CustomerRef` (`string`, required): Customer reference as JSON.
- `Line` (`string`, required): Line items as JSON array.
- `DocNumber` (`string`, optional): Credit memo number.
- `PrivateNote` (`string`, optional): Internal memo.

### `quickbooks_credit_memo_delete`

Delete a credit memo in QuickBooks Online.

Parameters:

- `Id` (`string`, required): Credit Memo ID.
- `SyncToken` (`string`, required): SyncToken from credit_memo_get.

### `quickbooks_sales_receipts_list`

List sales receipts from QuickBooks Online.

Parameters:

- `max_results` (`integer`, required): Maximum number of records to return.
- `start_position` (`integer`, required): Starting position for pagination (1-based).
- `where_clause` (`string`, optional): Optional WHERE clause.

### `quickbooks_sales_receipt_get`

Retrieve a single QuickBooks Online sales receipt by ID.

Parameters:

- `sales_receipt_id` (`string`, required): The ID of the sales receipt.

### `quickbooks_sales_receipt_create`

Create a new sales receipt in QuickBooks Online.

Parameters:

- `CustomerRef` (`string`, required): Customer reference as JSON.
- `Line` (`string`, required): Line items as JSON array.
- `DocNumber` (`string`, optional): Receipt number.
- `PaymentRefNum` (`string`, optional): Payment reference number.
- `PrivateNote` (`string`, optional): Internal memo.

### `quickbooks_sales_receipt_delete`

Delete a sales receipt in QuickBooks Online.

Parameters:

- `Id` (`string`, required): Sales Receipt ID.
- `SyncToken` (`string`, required): SyncToken from sales_receipt_get.

### `quickbooks_refund_receipts_list`

List refund receipts from QuickBooks Online.

Parameters:

- `max_results` (`integer`, required): Maximum number of records to return.
- `start_position` (`integer`, required): Starting position for pagination (1-based).

### `quickbooks_refund_receipt_get`

Retrieve a single QuickBooks Online refund receipt by ID.

Parameters:

- `refund_receipt_id` (`string`, required): The ID of the refund receipt.

### `quickbooks_refund_receipt_create`

Create a new refund receipt in QuickBooks Online.

Parameters:

- `CustomerRef` (`string`, required): Customer reference as JSON.
- `DepositToAccountRef` (`string`, required): Account to deposit the refund into as JSON, e.g. `{"value":"35"}` for Checking.
- `Line` (`string`, required): Line items as JSON array.
- `DocNumber` (`string`, optional): Refund receipt number.
- `PaymentRefNum` (`string`, optional): Payment reference number.
- `PrivateNote` (`string`, optional): Internal memo.

### `quickbooks_purchase_orders_list`

List purchase orders from QuickBooks Online.

Parameters:

- `max_results` (`integer`, required): Maximum number of records to return.
- `start_position` (`integer`, required): Starting position for pagination (1-based).
- `where_clause` (`string`, optional): Optional WHERE clause.

### `quickbooks_purchase_order_get`

Retrieve a single QuickBooks Online purchase order by ID.

Parameters:

- `purchase_order_id` (`string`, required): The ID of the purchase order.

### `quickbooks_purchase_order_create`

Create a new purchase order in QuickBooks Online.

Parameters:

- `VendorRef` (`string`, required): Vendor reference as JSON.
- `Line` (`string`, required): Line items as JSON array.
- `DocNumber` (`string`, optional): Purchase order number.
- `DueDate` (`string`, optional): Due date YYYY-MM-DD.
- `PrivateNote` (`string`, optional): Internal memo.

### `quickbooks_purchase_order_delete`

Delete a purchase order in QuickBooks Online.

Parameters:

- `Id` (`string`, required): Purchase Order ID.
- `SyncToken` (`string`, required): SyncToken from purchase_order_get.

### `quickbooks_deposits_list`

List deposits from QuickBooks Online.

Parameters:

- `max_results` (`integer`, required): Maximum number of records to return.
- `start_position` (`integer`, required): Starting position for pagination (1-based).

### `quickbooks_deposit_get`

Retrieve a single QuickBooks Online deposit by ID.

Parameters:

- `deposit_id` (`string`, required): The ID of the deposit.

### `quickbooks_deposit_create`

Create a new deposit in QuickBooks Online.

Parameters:

- `DepositToAccountRef` (`string`, required): Account to deposit into as JSON.
- `Line` (`string`, required): Deposit lines as JSON array.
- `TxnDate` (`string`, optional): Transaction date YYYY-MM-DD.
- `PrivateNote` (`string`, optional): Internal memo.

### `quickbooks_deposit_delete`

Delete a deposit in QuickBooks Online.

Parameters:

- `Id` (`string`, required): Deposit ID.
- `SyncToken` (`string`, required): SyncToken from deposit_get.

### `quickbooks_transfers_list`

List transfers from QuickBooks Online.

Parameters:

- `max_results` (`integer`, required): Maximum number of records to return.
- `start_position` (`integer`, required): Starting position for pagination (1-based).

### `quickbooks_transfer_get`

Retrieve a single QuickBooks Online transfer by ID.

Parameters:

- `transfer_id` (`string`, required): The ID of the transfer.

### `quickbooks_transfer_create`

Create a new fund transfer between accounts in QuickBooks Online.

Parameters:

- `FromAccountRef` (`string`, required): Source account reference as JSON.
- `ToAccountRef` (`string`, required): Destination account reference as JSON.
- `Amount` (`string`, required): Transfer amount as number string.
- `TxnDate` (`string`, optional): Transaction date YYYY-MM-DD.
- `PrivateNote` (`string`, optional): Internal memo.

### `quickbooks_journal_entries_list`

List journal entries from QuickBooks Online.

Parameters:

- `max_results` (`integer`, required): Maximum number of records to return.
- `start_position` (`integer`, required): Starting position for pagination (1-based).
- `where_clause` (`string`, optional): Optional WHERE clause.

### `quickbooks_journal_entry_get`

Retrieve a single QuickBooks Online journal entry by ID.

Parameters:

- `journal_entry_id` (`string`, required): The ID of the journal entry.

### `quickbooks_journal_entry_create`

Create a new journal entry in QuickBooks Online.

Parameters:

- `Line` (`string`, required): Journal entry lines as JSON array with debit/credit amounts.
- `DocNumber` (`string`, optional): Journal entry number.
- `TxnDate` (`string`, optional): Transaction date YYYY-MM-DD.
- `PrivateNote` (`string`, optional): Internal memo.

### `quickbooks_journal_entry_delete`

Delete a journal entry in QuickBooks Online.

Parameters:

- `Id` (`string`, required): Journal Entry ID.
- `SyncToken` (`string`, required): SyncToken from journal_entry_get.

### `quickbooks_vendor_credits_list`

List vendor credits from QuickBooks Online.

Parameters:

- `max_results` (`integer`, required): Maximum number of records to return.
- `start_position` (`integer`, required): Starting position for pagination (1-based).

### `quickbooks_vendor_credit_get`

Retrieve a single QuickBooks Online vendor credit by ID.

Parameters:

- `vendor_credit_id` (`string`, required): The ID of the vendor credit.

### `quickbooks_vendor_credit_create`

Create a new vendor credit in QuickBooks Online.

Parameters:

- `VendorRef` (`string`, required): Vendor reference as JSON.
- `Line` (`string`, required): Line items as JSON array.
- `DocNumber` (`string`, optional): Vendor credit number.
- `PrivateNote` (`string`, optional): Internal memo.

### `quickbooks_classes_list`

List classes from QuickBooks Online.

Parameters:

- `max_results` (`integer`, required): Maximum number of records to return.
- `start_position` (`integer`, required): Starting position for pagination (1-based).

### `quickbooks_class_get`

Retrieve a single QuickBooks Online class by ID.

Parameters:

- `class_id` (`string`, required): The ID of the class.

### `quickbooks_class_create`

Create a new class in QuickBooks Online.

Parameters:

- `Name` (`string`, required): Name of the class.
- `ParentRef` (`string`, optional): Parent class reference as JSON.
- `Active` (`boolean`, optional): Whether the class is active.

### `quickbooks_departments_list`

List departments from QuickBooks Online.

Parameters:

- `max_results` (`integer`, required): Maximum number of records to return.
- `start_position` (`integer`, required): Starting position for pagination (1-based).

### `quickbooks_department_get`

Retrieve a single QuickBooks Online department by ID.

Parameters:

- `department_id` (`string`, required): The ID of the department.

### `quickbooks_department_create`

Create a new department in QuickBooks Online.

Parameters:

- `Name` (`string`, required): Name of the department.
- `ParentRef` (`string`, optional): Parent department reference as JSON.
- `Active` (`boolean`, optional): Whether the department is active.

### `quickbooks_employees_list`

List employees from QuickBooks Online.

Parameters:

- `max_results` (`integer`, required): Maximum number of records to return.
- `start_position` (`integer`, required): Starting position for pagination (1-based).
- `where_clause` (`string`, optional): Optional WHERE clause.

### `quickbooks_employee_get`

Retrieve a single QuickBooks Online employee by ID.

Parameters:

- `employee_id` (`string`, required): The ID of the employee.

### `quickbooks_employee_create`

Create a new employee in QuickBooks Online.

Parameters:

- `GivenName` (`string`, required): Employee first name.
- `FamilyName` (`string`, required): Employee last name.
- `DisplayName` (`string`, optional): Display name.
- `PrimaryEmailAddr` (`string`, optional): Email as JSON.
- `PrimaryPhone` (`string`, optional): Phone as JSON.
- `Active` (`boolean`, optional): Whether the employee is active.

### `quickbooks_tax_codes_list`

List tax codes from QuickBooks Online.

Parameters:

- `max_results` (`integer`, required): Maximum number of records to return.
- `start_position` (`integer`, required): Starting position for pagination (1-based).

### `quickbooks_tax_code_get`

Retrieve a single QuickBooks Online tax code by ID.

Parameters:

- `tax_code_id` (`string`, required): The ID of the tax code.

### `quickbooks_report_profit_and_loss`

Retrieve a Profit and Loss report from QuickBooks Online.

Parameters:

- `start_date` (`string`, optional): Report start date in YYYY-MM-DD format.
- `end_date` (`string`, optional): Report end date in YYYY-MM-DD format.
- `accounting_method` (`string`, optional): Accounting method: Accrual or Cash.

### `quickbooks_report_balance_sheet`

Retrieve a Balance Sheet report from QuickBooks Online.

Parameters:

- `start_date` (`string`, optional): Report start date in YYYY-MM-DD format.
- `end_date` (`string`, optional): Report end date in YYYY-MM-DD format.
- `accounting_method` (`string`, optional): Accounting method: Accrual or Cash.

### `quickbooks_report_cash_flow`

Retrieve a Cash Flow report from QuickBooks Online.

Parameters:

- `start_date` (`string`, optional): Report start date in YYYY-MM-DD format.
- `end_date` (`string`, optional): Report end date in YYYY-MM-DD format.

### `quickbooks_report_trial_balance`

Retrieve a Trial Balance report from QuickBooks Online.

Parameters:

- `start_date` (`string`, optional): Report start date in YYYY-MM-DD format.
- `end_date` (`string`, optional): Report end date in YYYY-MM-DD format.
- `accounting_method` (`string`, optional): Accounting method: Accrual or Cash.

### `quickbooks_report_general_ledger`

Retrieve a General Ledger report from QuickBooks Online.

Parameters:

- `start_date` (`string`, optional): Report start date in YYYY-MM-DD format.
- `end_date` (`string`, optional): Report end date in YYYY-MM-DD format.
- `accounting_method` (`string`, optional): Accounting method: Accrual or Cash.

### `quickbooks_report_aged_payables`

Retrieve an Aged Payable Detail report from QuickBooks Online.

Parameters:

- `report_date` (`string`, optional): Report date in YYYY-MM-DD format.
- `due_date` (`string`, optional): Due date filter in YYYY-MM-DD format.

### `quickbooks_report_aged_receivables`

Retrieve an Aged Receivable Detail report from QuickBooks Online.

Parameters:

- `report_date` (`string`, optional): Report date in YYYY-MM-DD format.
- `due_date` (`string`, optional): Due date filter in YYYY-MM-DD format.


---

## More Scalekit documentation

| Resource | What it contains | When to use it |
|----------|-----------------|----------------|
| [/llms.txt](/llms.txt) | Structured index with routing hints per product area | Start here — find which documentation set covers your topic before loading full content |
| [/llms-full.txt](/llms-full.txt) | Complete documentation for all Scalekit products in one file | Use when you need exhaustive context across multiple products or when the topic spans several areas |
| [sitemap-0.xml](https://docs.scalekit.com/sitemap-0.xml) | Full URL list of every documentation page | Use to discover specific page URLs you can fetch for targeted, page-level answers |
