---
title: "QuickBooks Online MCP server for AI agents - actionlake"
description: "Give Claude 217 QuickBooks Online actions through one MCP server: receivables, ledger. Your agent never holds the credential. 100,000 calls a month free."
canonical: https://actionlake.com/connectors/quickbooks-online
updated: 2026-10-10
---

Connectors · Accounting & finance

# QuickBooks Online MCP server for AI agents.

actionlake is an MCP gateway: one remote MCP server that connects Claude and other MCP clients to QuickBooks Online and the rest of your systems. It gives your agent 217 QuickBooks Online actions (105 reads, 90 writes and 22 that wait for a confirmation) and holds the QuickBooks Online credential itself, so the agent never does. It paces QuickBooks Online's limits and records every call. Connecting QuickBooks Online needs your own QuickBooks Online OAuth app and one admin sign-in.

[Connect QuickBooks Online free](https://actionlake.com/console?start=sandbox) [See pricing](https://actionlake.com/pricing)

100,000 free calls a month. No card, no email, no password: press Start a free sandbox on the next screen and keep the key it shows you.

`claude mcp add --transport http actionlake https://connect.actionlake.com/mcp`

the first call

```
do {
  action: "quickbooks.purchases.query",
  intent: "check which QuickBooks Online account is connected"
}
# Query QuickBooks purchases · read · 1 upstream call
```

- 217 actions in one signed file
- 105 read look, never change
- 90 write create and update
- 22 wait for a yes destructive, confirmed first

Set up

## Connect QuickBooks Online in three steps.

1. 01
   ### Add actionlake to Claude.
   Run the command once in Claude Code; its consent page can create a free sandbox: 100,000 calls a month, no card. In the Claude app, add a custom connector with the URL below and paste your key on the consent page. Creating a new sandbox from the Claude app is not yet tested by us.
   `https://connect.actionlake.com/mcp`
2. 02
   ### Connect QuickBooks Online.
   OAuth 2.0, authorization code with PKCE. You register your own OAuth app with QuickBooks Online, an admin signs in once, and you paste the app's client id and secret and the tokens from that sign-in; actionlake renews the access token from then on. actionlake stores what you paste write-only, sealed under your tenant's key.
   Before the first sign-in, QuickBooks Online needs an OAuth app of your own, registered in its developer portal. actionlake has no QuickBooks Online app to lend you.
   - `access_token` Access token from one sign-in with your own OAuth app
   - `refresh_token` Refresh token from the same sign-in; the access token is renewed from it
   - `client_id` Intuit app client id
   - `client_secret` Intuit app client secret
   - `realm_id` Your QuickBooks Online realm id
   ```
   account { op: "connections.requirements", service: "quickbooks" }
   # free: exactly what to paste, and what is found for you
   ```
3. 03
   ### Make the first call. Check before a write.
   Ask in plain words; Claude picks the action. Before anything changes, `check` validates the call and prices it, for free.
   ```
   do    { action: "quickbooks.purchases.query" }
   # query quickbooks purchases · read · 1 upstream call
   check { action: "quickbooks.invoices.create", input: { … } }
   # free: inputs, permissions, cost and confirmations, nothing sent
   ```

QuickBooks Online at a glance

**Sign-in**

OAuth 2.0, authorization code with PKCE. You register your own OAuth app with QuickBooks Online, an admin signs in once, and you paste the app's client id and secret and the tokens from that sign-in; actionlake renews the access token from then on.

**You provide**

`access_token` `refresh_token` `client_id` `client_secret`

**Setup fields**

`realm_id`

**Limits we pace to**

500 calls a minute, per connection

**API covered**

QuickBooks Online API 3`quickbooks.api.intuit.com/v3`

**Built from**

QuickBooks Online's documentation, read 14 September 2026[developer.intuit.com](https://developer.intuit.com/app/developer/qbo/docs/api/accounting/all-entities)

**Service file**

Version 2.0.0, signed (Ed25519)

**Cached reads**

105 of 105 reads, for up to an hour; a write clears what it affects

**Ready-made plans**

9 in the store

**Shared entities**

12, so ask can line QuickBooks Online up with your other systems

**Data**

Processed and stored in Sydney, Australia. No US region yet

Capabilities

## What an AI agent can do in QuickBooks Online.

217 actions in 13 areas. Every one carries its effect, so a key can allow the reads and hold the rest.

- **105** read look, never change
- **90** write create and update
- **22** destructive wait for a confirmation

1. ### Receivables
   61
   22 read · 29 write · 10 destructive
   Query QuickBooks credit memos · Create a QuickBooks invoice · Create a QuickBooks sales receipt · Create a QuickBooks payment
2. ### Ledger
   32
   14 read · 17 write · 1 destructive
   Create a QuickBooks account · Get one QuickBooks account · Query QuickBooks accounts · Partially update a QuickBooks account
3. ### Payables
   32
   10 read · 16 write · 6 destructive
   Query QuickBooks purchases · Create a QuickBooks bill payment · Create a QuickBooks purchase order · Create a QuickBooks purchase
4. ### Reporting
   29
   29 read · 0 write · 0 destructive
   QuickBooks account list report · QuickBooks aged payables detail report · QuickBooks aged payables summary report · QuickBooks aged receivables detail report
5. ### Banking
   12
   4 read · 5 write · 3 destructive
   Create a QuickBooks deposit · Create a QuickBooks transfer · Query QuickBooks transfers · Get one QuickBooks deposit
6. ### Contacts
   12
   6 read · 6 write · 0 destructive
   Create a QuickBooks customer · Create a QuickBooks vendor · Get one QuickBooks customer · Get one QuickBooks vendor
7. ### Attachments
   7
   2 read · 4 write · 1 destructive
   Query QuickBooks attachments · Partially update a QuickBooks attachment · Update a QuickBooks attachment · Get one QuickBooks attachment
8. ### Tax
   7
   6 read · 1 write · 0 destructive
   Query QuickBooks tax rates · Get one QuickBooks tax rate · Query QuickBooks tax agencies · Query QuickBooks tax codes

**5 more areas · 25 actions**

- Company **6**
- Time **6**
- People **5**
- Catalogue **5**
- Accounting **3**

Intuit's own MCP server

## Intuit's MCP server, or actionlake?

Intuit publishes an open-source QuickBooks Online MCP server that runs on your own machine, signed in through an app you register with Intuit.

Use Intuit's server when one person wants to work in QuickBooks Online through a server they run on their own machine. Use actionlake when you also want QuickBooks Online behind the same endpoint as your other systems: a key per agent with allowed actions and a spending cap, a named person's approval before destructive actions, a sealed record of every call, and one ask across QuickBooks Online and another system.

Source: [Intuit's documentation](https://github.com/intuit/quickbooks-online-mcp-server), checked 22 October 2026.

Top actions

## The QuickBooks Online API, shaped for agents.

The ids your agent types, what each does, and the one name it shares with other systems. 128 of QuickBooks Online's 130 action names are shared with at least one other connector, so an agent learns them once.

| Action | What it does | Effect | Same name in |
| --- | --- | --- | --- |
| `quickbooks.purchases.query` Query QuickBooks purchases | Read purchases from the connected company file with a SQL-like filter, e.g. WHERE Active = true. | read | `finance.expense.list` 40 connectors |
| `quickbooks.credit_memos.query` Query QuickBooks credit memos | Read credit memos from the connected company file with a SQL-like filter, e.g. WHERE Active = true. | read | `finance.credit_note.list` 33 connectors |
| `quickbooks.invoices.create` Create a QuickBooks invoice | Create one invoice in the connected company file. | write | `finance.invoice.create` 74 connectors |
| `quickbooks.sales_receipts.create` Create a QuickBooks sales receipt | Create one sales receipt in the connected company file. | write | `finance.invoice.create` 74 connectors |
| `quickbooks.payments.create` Create a QuickBooks payment | Create one payment in the connected company file. | write | `finance.payment.create` 67 connectors |
| `quickbooks.bill_payments.create` Create a QuickBooks bill payment | Create one bill payment in the connected company file. | write | `finance.payment.create` 67 connectors |
| `quickbooks.estimates.create` Create a QuickBooks estimate | Create one estimate in the connected company file. | write | `finance.quote.create` 52 connectors |
| `quickbooks.purchase_orders.create` Create a QuickBooks purchase order | Create one purchase order in the connected company file. | write | `finance.purchase_order.create` 43 connectors |
| `quickbooks.purchases.create` Create a QuickBooks purchase | Create one purchase in the connected company file. | write | `finance.expense.create` 36 connectors |
| `quickbooks.vendors.create` Create a QuickBooks vendor | Create one vendor in the connected company file. | write | `crm.company.create` 142 connectors |
| `quickbooks.customers.create` Create a QuickBooks customer | Create one customer in the connected company file. | write | `crm.company.create` 142 connectors |
| `quickbooks.invoices.delete` Delete a QuickBooks invoice | Delete one invoice from the company file. | destructive | `finance.invoice.delete` 56 connectors |

Try it

## Prompts to paste into Claude.

Each one names the QuickBooks Online actions it will call, so you know what it reads and what it changes before you send it.

1. Read read
   Which QuickBooks Online invoices are more than 30 days overdue? Group them by customer with the total owed.
   calls `quickbooks.invoices.query`
2. Plan read
   Review income and balances per customer in QuickBooks Online.
   calls `quickbooks.reports.customer_income` `quickbooks.reports.customer_sales` `quickbooks.reports.customer_balance_detail` `quickbooks.customers.query` `quickbooks.customers.get`
3. Plan read
   Report stock value and refresh low item counts in QuickBooks Online.
   calls `quickbooks.reports.inventory_valuation_summary` `quickbooks.reports.inventory_valuation_detail` `quickbooks.reports.item_sales` `quickbooks.items.query` `quickbooks.items.get`
4. Write write
   Create a QuickBooks invoice in QuickBooks Online. Show me exactly what you will send before you save it.
   calls `quickbooks.invoices.create`
5. Across systems read
   For each customer, how many invoices are in QuickBooks Online and how many tickets in ConnectWise PSA?
   calls `quickbooks.invoices.query` `connectwise_manage.tickets.list`

Across your systems

## QuickBooks Online, joined to the rest of your business.

One `ask` fetches from QuickBooks Online and another system, joins the rows on the same customer on our side, and hands your agent the answer, not every row.

- For each customer, how many invoices are in QuickBooks Online and how many tickets in ConnectWise PSA?
  `quickbooks.invoices.query` + `connectwise_manage.tickets.list`, on `crm.company` · [ConnectWise PSA](https://actionlake.com/connectors/connectwise-psa)
- For each customer, how many invoices are in QuickBooks Online and how many tickets in HubSpot CRM?
  `quickbooks.invoices.query` + `hubspot_crm.tickets.list`, on `crm.company` · [HubSpot CRM](https://actionlake.com/connectors/hubspot-crm)

Also mapped by other connectors `crm.company` **227** `finance.invoice` **91** `hr.employee` **63** `finance.payment` **53** `finance.quote` **45** `work.time_entry` **40** `finance.purchase_order` **35** `finance.ledger_account` **32**

ask

```
ask {
  intent: "for each customer, how many invoices are in QuickBooks Online and how many tickets in ConnectWise PSA",
  steps: [
    { action: "quickbooks.invoices.query", as: "inv", input: {}, limit: 100, max_pages: 5 },
    { action: "connectwise_manage.tickets.list", as: "tix", input: {}, limit: 100, max_pages: 5 },
    { join: {
        left: "inv",
        right: "tix",
        on: "crm.company",
        group_by: "inv.company_name",
        select: ["inv.company_name", "count(inv.id) as invoices", "count(tix.id) as tickets"]
    } }
  ]
}
```

Example. Run it through check first: it validates the steps and prices them, and it is free.

The plan store

## Ready-made plans for QuickBooks Online.

9 plans in the store. Install one and your agent runs it by name; the reply says which connections are still missing. A schedule can run a plan on a timetable. There are no triggers or webhooks, by design.

1. ### Review income and balances per customer
   Use it when Someone wants to know which customers earn the most and which owe the most.
   **Effect**
   read
   **Steps**
   5 · loops
   **Needs**
   end date and start date
   **Install**
   `quickbooks-customer-profitability-review`
2. ### Report stock value and refresh low item counts
   Use it when Someone wants to know what the stock is worth and which items are running low.
   **Effect**
   read
   **Steps**
   5 · loops
   **Needs**
   end date, reorder at and start date
   **Install**
   `quickbooks-inventory-stock-and-value`
3. ### Assemble the month-end close report pack
   Use it when Someone asks for the month-end or period-end financial statement pack out of QuickBooks.
   **Effect**
   read
   **Steps**
   5
   **Needs**
   end date and start date
   **Install**
   `quickbooks-month-end-close-pack`
4. ### Chase overdue invoices by email
   Use it when Accounts receivable wants overdue customers chased with a fresh copy of their invoice.
   A person decides Email a copy of every overdue invoice listed above to the customer on it.
   **Effect**
   write
   **Steps**
   4 · loops
   **Needs**
   as of
   **Install**
   `quickbooks-chase-overdue-invoices`
5. ### Run a vendor payment batch for due bills
   Use it when Accounts payable is ready to pay the bills that fall due and wants them settled in one run.
   A person decides Pay every bill listed above from the nominated bank account.
   **Effect**
   write
   **Steps**
   4 · loops
   **Needs**
   bank account id and due by
   **Install**
   `quickbooks-pay-approved-bills`
6. ### Turn an accepted estimate into an invoice
   Use it when A quote has been accepted and someone wants it converted into a real invoice in QuickBooks.
   A person decides Convert estimate _DocNumber_ for _name_ into an invoice and send it.
   **Effect**
   write
   **Steps**
   5
   **Needs**
   due date and estimate id
   **Install**
   `quickbooks-estimate-to-invoice`
7. ### Post a period-end accrual journal
   Use it when An accountant needs an accrual or adjusting journal posted into QuickBooks at period end.
   A person decides Post the adjusting journal dated _txn date_: _memo_
   **Effect**
   write
   **Steps**
   5
   **Needs**
   lines, memo and txn date
   **Install**
   `quickbooks-post-accrual-journal`
8. ### Onboard a customer and raise their first invoice
   Use it when A new customer has been signed and needs setting up in QuickBooks with their first invoice.
   **Effect**
   write
   **Steps**
   6
   **Needs**
   display name, due date, email and lines
   **Install**
   `quickbooks-new-customer-with-opening-invoice`
9. ### Void a duplicate invoice and credit the customer
   Use it when An invoice was raised twice or in error and needs voiding with the customer made whole.
   A person decides Void invoice _DocNumber_ for _name_ and issue a matching credit memo. Voiding cannot be undone.
   **Effect**
   destructive
   **Steps**
   6
   **Needs**
   invoice id
   **Install**
   `quickbooks-void-duplicate-invoice`

install a plan

```
account { op: "plans.install", slug: "quickbooks-customer-profitability-review" }
# then ask for it by name; a schedule can run it on a timetable
```

Governance for QuickBooks Online

## Destructive actions wait for a yes.

22 QuickBooks Online actions are destructive. These are all of them:

- Delete a QuickBooks invoice `quickbooks.invoices.delete`
- Delete a QuickBooks sales receipt `quickbooks.sales_receipts.delete`
- Delete a QuickBooks payment `quickbooks.payments.delete`
- Delete a QuickBooks bill payment `quickbooks.bill_payments.delete`
- Delete a QuickBooks estimate `quickbooks.estimates.delete`
- Delete a QuickBooks purchase `quickbooks.purchases.delete`
- Delete a QuickBooks purchase order `quickbooks.purchase_orders.delete`
- Void a QuickBooks invoice `quickbooks.invoices.void`
- Void a QuickBooks sales receipt `quickbooks.sales_receipts.void`
- Delete a QuickBooks bill `quickbooks.bills.delete`
- Delete a QuickBooks credit memo `quickbooks.credit_memos.delete`
- Delete a QuickBooks vendor credit `quickbooks.vendor_credits.delete`
- Void a QuickBooks payment `quickbooks.payments.void`
- Void a QuickBooks bill payment `quickbooks.bill_payments.void`
- Create a QuickBooks refund receipt `quickbooks.refund_receipts.create`
- Create a QuickBooks transfer `quickbooks.transfers.create`
- Delete a QuickBooks time activity `quickbooks.time_activities.delete`
- Delete a QuickBooks journal entry `quickbooks.journal_entries.delete`
- Delete a QuickBooks refund receipt `quickbooks.refund_receipts.delete`
- Delete a QuickBooks deposit `quickbooks.deposits.delete`
- Delete a QuickBooks transfer `quickbooks.transfers.delete`
- Delete a QuickBooks attachment `quickbooks.attachables.delete`

A destructive action runs only with `confirm: true`. Under the `human` policy the agent cannot confirm for itself: the run stops until a named person approves, in the console or from a signed link in an email. The cap on a key is refused before the call is sent, never after.

do quickbooks.invoices.delete confirm_policy: **human**

Delete a QuickBooks invoice?

**intent:** the user asked me to delete a QuickBooks invoice

run suspended · waiting for a named person · key _quickbooks-agent_ cannot confirm itself

In the console, or from an emailed signed link.

a key for this connector

```
account {
  op: "keys.create", name: "quickbooks-agent",
  allowed_actions: ["quickbooks.*"], cap_calls: 2000,
  confirm_policy: "human_for_writes",
  approval_rules: [
    { match: "quickbooks.invoices.delete", approver: "lead@example.com" },
    { match: "quickbooks.sales_receipts.delete", approver: "lead@example.com" },
    { match: "quickbooks.payments.delete", approver: "lead@example.com" }
  ]
}
```

Illustrative. Scoped to QuickBooks Online only, capped at 2,000 upstream calls, every write confirmed, and the destructive ones approved by a named person.

Cost

## What QuickBooks Online costs on actionlake.

Every QuickBooks Online action is one upstream call, the only thing actionlake bills. Searching, `check`, `cost`, `account` and any call QuickBooks Online refused with 401, 403, 429 or a 5xx are free. Paid plans start at US$49 a month for 250,000 calls, with overage from US$0.30 down to US$0.18 per 1,000.

- 1 upstream call per action all 217 QuickBooks Online actions
- 64 actions page each page of a long list is one call
- 105 reads can be cached a cache hit costs nothing
- 100,000 calls a month, free paid plans from US$49 a month for 250,000

[See pricing](https://actionlake.com/pricing)

Action index

## Every QuickBooks Online action.

217 actions by area: the id your agent calls, what it does, and its effect.

**Receivables 61**

- `quickbooks.credit_memos.create` Create a QuickBooks credit memo write
- `quickbooks.credit_memos.delete` Delete a QuickBooks credit memo destructive
- `quickbooks.credit_memos.get` Get one QuickBooks credit memo read
- `quickbooks.credit_memos.pdf` Get a QuickBooks credit memo as a PDF read
- `quickbooks.credit_memos.query` Query QuickBooks credit memos read
- `quickbooks.credit_memos.send` Email a QuickBooks credit memo write
- `quickbooks.credit_memos.sparse_update` Partially update a QuickBooks credit memo write
- `quickbooks.credit_memos.update` Update a QuickBooks credit memo write
- `quickbooks.estimates.create` Create a QuickBooks estimate write
- `quickbooks.estimates.delete` Delete a QuickBooks estimate destructive
- `quickbooks.estimates.get` Get one QuickBooks estimate read
- `quickbooks.estimates.pdf` Get a QuickBooks estimate as a PDF read
- `quickbooks.estimates.query` Query QuickBooks estimates read
- `quickbooks.estimates.send` Email a QuickBooks estimate write
- `quickbooks.estimates.sparse_update` Partially update a QuickBooks estimate write
- `quickbooks.estimates.update` Update a QuickBooks estimate write
- `quickbooks.invoices.create` Create a QuickBooks invoice write
- `quickbooks.invoices.delete` Delete a QuickBooks invoice destructive
- `quickbooks.invoices.get` Get one QuickBooks invoice read
- `quickbooks.invoices.pdf` Get a QuickBooks invoice as a PDF read
- `quickbooks.invoices.query` Query QuickBooks invoices read
- `quickbooks.invoices.send` Email a QuickBooks invoice write
- `quickbooks.invoices.sparse_update` Partially update a QuickBooks invoice write
- `quickbooks.invoices.update` Update a QuickBooks invoice write
- `quickbooks.invoices.void` Void a QuickBooks invoice destructive
- `quickbooks.payment_methods.create` Create a QuickBooks payment method write
- `quickbooks.payment_methods.get` Get one QuickBooks payment method read
- `quickbooks.payment_methods.query` Query QuickBooks payment methods read
- `quickbooks.payment_methods.sparse_update` Partially update a QuickBooks payment method write
- `quickbooks.payment_methods.update` Update a QuickBooks payment method write
- `quickbooks.payments.create` Create a QuickBooks payment write
- `quickbooks.payments.delete` Delete a QuickBooks payment destructive
- `quickbooks.payments.get` Get one QuickBooks payment read
- `quickbooks.payments.pdf` Get a QuickBooks payment as a PDF read
- `quickbooks.payments.query` Query QuickBooks payments read
- `quickbooks.payments.send` Email a QuickBooks payment write
- `quickbooks.payments.sparse_update` Partially update a QuickBooks payment write
- `quickbooks.payments.update` Update a QuickBooks payment write
- `quickbooks.payments.void` Void a QuickBooks payment destructive
- `quickbooks.refund_receipts.create` Create a QuickBooks refund receipt destructive
- `quickbooks.refund_receipts.delete` Delete a QuickBooks refund receipt destructive
- `quickbooks.refund_receipts.get` Get one QuickBooks refund receipt read
- `quickbooks.refund_receipts.pdf` Get a QuickBooks refund receipt as a PDF read
- `quickbooks.refund_receipts.query` Query QuickBooks refund receipts read
- `quickbooks.refund_receipts.send` Email a QuickBooks refund receipt write
- `quickbooks.refund_receipts.sparse_update` Partially update a QuickBooks refund receipt write
- `quickbooks.refund_receipts.update` Update a QuickBooks refund receipt write
- `quickbooks.sales_receipts.create` Create a QuickBooks sales receipt write
- `quickbooks.sales_receipts.delete` Delete a QuickBooks sales receipt destructive
- `quickbooks.sales_receipts.get` Get one QuickBooks sales receipt read
- `quickbooks.sales_receipts.pdf` Get a QuickBooks sales receipt as a PDF read
- `quickbooks.sales_receipts.query` Query QuickBooks sales receipts read
- `quickbooks.sales_receipts.send` Email a QuickBooks sales receipt write
- `quickbooks.sales_receipts.sparse_update` Partially update a QuickBooks sales receipt write
- `quickbooks.sales_receipts.update` Update a QuickBooks sales receipt write
- `quickbooks.sales_receipts.void` Void a QuickBooks sales receipt destructive
- `quickbooks.terms.create` Create a QuickBooks payment term write
- `quickbooks.terms.get` Get one QuickBooks payment term read
- `quickbooks.terms.query` Query QuickBooks payment terms read
- `quickbooks.terms.sparse_update` Partially update a QuickBooks payment term write
- `quickbooks.terms.update` Update a QuickBooks payment term write

**Ledger 32**

- `quickbooks.accounts.create` Create a QuickBooks account write
- `quickbooks.accounts.get` Get one QuickBooks account read
- `quickbooks.accounts.query` Query QuickBooks accounts read
- `quickbooks.accounts.sparse_update` Partially update a QuickBooks account write
- `quickbooks.accounts.update` Update a QuickBooks account write
- `quickbooks.budgets.get` Get one QuickBooks budget read
- `quickbooks.budgets.query` Query QuickBooks budgets read
- `quickbooks.classes.create` Create a QuickBooks class write
- `quickbooks.classes.get` Get one QuickBooks class read
- `quickbooks.classes.query` Query QuickBooks classes read
- `quickbooks.classes.sparse_update` Partially update a QuickBooks class write
- `quickbooks.classes.update` Update a QuickBooks class write
- `quickbooks.company_currencies.create` Create a QuickBooks company currency write
- `quickbooks.company_currencies.get` Get one QuickBooks company currency read
- `quickbooks.company_currencies.query` Query QuickBooks company currencies read
- `quickbooks.company_currencies.sparse_update` Partially update a QuickBooks company currency write
- `quickbooks.company_currencies.update` Update a QuickBooks company currency write
- `quickbooks.departments.create` Create a QuickBooks department write
- `quickbooks.departments.get` Get one QuickBooks department read
- `quickbooks.departments.query` Query QuickBooks departments read
- `quickbooks.departments.sparse_update` Partially update a QuickBooks department write
- `quickbooks.departments.update` Update a QuickBooks department write
- `quickbooks.journal_codes.create` Create a QuickBooks journal code write
- `quickbooks.journal_codes.get` Get one QuickBooks journal code read
- `quickbooks.journal_codes.query` Query QuickBooks journal codes read
- `quickbooks.journal_codes.update` Update a QuickBooks journal code write
- `quickbooks.journal_entries.create` Create a QuickBooks journal entry write
- `quickbooks.journal_entries.delete` Delete a QuickBooks journal entry destructive
- `quickbooks.journal_entries.get` Get one QuickBooks journal entry read
- `quickbooks.journal_entries.query` Query QuickBooks journal entries read
- `quickbooks.journal_entries.sparse_update` Partially update a QuickBooks journal entry write
- `quickbooks.journal_entries.update` Update a QuickBooks journal entry write

**Payables 32**

- `quickbooks.bill_payments.create` Create a QuickBooks bill payment write
- `quickbooks.bill_payments.delete` Delete a QuickBooks bill payment destructive
- `quickbooks.bill_payments.get` Get one QuickBooks bill payment read
- `quickbooks.bill_payments.query` Query QuickBooks bill payments read
- `quickbooks.bill_payments.sparse_update` Partially update a QuickBooks bill payment write
- `quickbooks.bill_payments.update` Update a QuickBooks bill payment write
- `quickbooks.bill_payments.void` Void a QuickBooks bill payment destructive
- `quickbooks.bills.create` Create a QuickBooks bill write
- `quickbooks.bills.delete` Delete a QuickBooks bill destructive
- `quickbooks.bills.get` Get one QuickBooks bill read
- `quickbooks.bills.query` Query QuickBooks bills read
- `quickbooks.bills.sparse_update` Partially update a QuickBooks bill write
- `quickbooks.bills.update` Update a QuickBooks bill write
- `quickbooks.purchase_orders.create` Create a QuickBooks purchase order write
- `quickbooks.purchase_orders.delete` Delete a QuickBooks purchase order destructive
- `quickbooks.purchase_orders.get` Get one QuickBooks purchase order read
- `quickbooks.purchase_orders.query` Query QuickBooks purchase orders read
- `quickbooks.purchase_orders.send` Email a QuickBooks purchase order write
- `quickbooks.purchase_orders.sparse_update` Partially update a QuickBooks purchase order write
- `quickbooks.purchase_orders.update` Update a QuickBooks purchase order write
- `quickbooks.purchases.create` Create a QuickBooks purchase write
- `quickbooks.purchases.delete` Delete a QuickBooks purchase destructive
- `quickbooks.purchases.get` Get one QuickBooks purchase read
- `quickbooks.purchases.query` Query QuickBooks purchases read
- `quickbooks.purchases.sparse_update` Partially update a QuickBooks purchase write
- `quickbooks.purchases.update` Update a QuickBooks purchase write
- `quickbooks.vendor_credits.create` Create a QuickBooks vendor credit write
- `quickbooks.vendor_credits.delete` Delete a QuickBooks vendor credit destructive
- `quickbooks.vendor_credits.get` Get one QuickBooks vendor credit read
- `quickbooks.vendor_credits.query` Query QuickBooks vendor credits read
- `quickbooks.vendor_credits.sparse_update` Partially update a QuickBooks vendor credit write
- `quickbooks.vendor_credits.update` Update a QuickBooks vendor credit write

**Reporting 29**

- `quickbooks.reports.account_list` QuickBooks account list report read
- `quickbooks.reports.aged_payable_detail` QuickBooks aged payables detail report read
- `quickbooks.reports.aged_payables` QuickBooks aged payables summary report read
- `quickbooks.reports.aged_receivable_detail` QuickBooks aged receivables detail report read
- `quickbooks.reports.aged_receivables` QuickBooks aged receivables summary report read
- `quickbooks.reports.balance_sheet` QuickBooks balance sheet report read
- `quickbooks.reports.cash_flow` QuickBooks statement of cash flows report read
- `quickbooks.reports.class_sales` QuickBooks sales by class report read
- `quickbooks.reports.customer_balance` QuickBooks customer balance summary report read
- `quickbooks.reports.customer_balance_detail` QuickBooks customer balance detail report read
- `quickbooks.reports.customer_income` QuickBooks income by customer summary report read
- `quickbooks.reports.customer_sales` QuickBooks sales by customer report read
- `quickbooks.reports.department_sales` QuickBooks sales by department report read
- `quickbooks.reports.general_ledger` QuickBooks general ledger report read
- `quickbooks.reports.general_ledger_detail` QuickBooks general ledger detail report read
- `quickbooks.reports.inventory_valuation_detail` QuickBooks inventory valuation detail report read
- `quickbooks.reports.inventory_valuation_summary` QuickBooks inventory valuation summary report read
- `quickbooks.reports.item_sales` QuickBooks sales by product or service report read
- `quickbooks.reports.journal_report` QuickBooks journal report report read
- `quickbooks.reports.profit_and_loss` QuickBooks profit and loss report read
- `quickbooks.reports.profit_and_loss_detail` QuickBooks profit and loss detail report read
- `quickbooks.reports.tax_summary` QuickBooks sales tax summary report read
- `quickbooks.reports.transaction_list` QuickBooks transaction list report read
- `quickbooks.reports.transaction_list_by_customer` QuickBooks transaction list by customer report read
- `quickbooks.reports.transaction_list_by_vendor` QuickBooks transaction list by vendor report read
- `quickbooks.reports.trial_balance` QuickBooks trial balance report read
- `quickbooks.reports.vendor_balance` QuickBooks vendor balance summary report read
- `quickbooks.reports.vendor_balance_detail` QuickBooks vendor balance detail report read
- `quickbooks.reports.vendor_expenses` QuickBooks expenses by vendor summary report read

**Banking 12**

- `quickbooks.deposits.create` Create a QuickBooks deposit write
- `quickbooks.deposits.delete` Delete a QuickBooks deposit destructive
- `quickbooks.deposits.get` Get one QuickBooks deposit read
- `quickbooks.deposits.query` Query QuickBooks deposits read
- `quickbooks.deposits.sparse_update` Partially update a QuickBooks deposit write
- `quickbooks.deposits.update` Update a QuickBooks deposit write
- `quickbooks.transfers.create` Create a QuickBooks transfer destructive
- `quickbooks.transfers.delete` Delete a QuickBooks transfer destructive
- `quickbooks.transfers.get` Get one QuickBooks transfer read
- `quickbooks.transfers.query` Query QuickBooks transfers read
- `quickbooks.transfers.sparse_update` Partially update a QuickBooks transfer write
- `quickbooks.transfers.update` Update a QuickBooks transfer write

**Contacts 12**

- `quickbooks.customer_types.get` Get one QuickBooks customer type read
- `quickbooks.customer_types.query` Query QuickBooks customer types read
- `quickbooks.customers.create` Create a QuickBooks customer write
- `quickbooks.customers.get` Get one QuickBooks customer read
- `quickbooks.customers.query` Query QuickBooks customers read
- `quickbooks.customers.sparse_update` Partially update a QuickBooks customer write
- `quickbooks.customers.update` Update a QuickBooks customer write
- `quickbooks.vendors.create` Create a QuickBooks vendor write
- `quickbooks.vendors.get` Get one QuickBooks vendor read
- `quickbooks.vendors.query` Query QuickBooks vendors read
- `quickbooks.vendors.sparse_update` Partially update a QuickBooks vendor write
- `quickbooks.vendors.update` Update a QuickBooks vendor write

**Attachments 7**

- `quickbooks.attachables.create` Create a QuickBooks attachment write
- `quickbooks.attachables.delete` Delete a QuickBooks attachment destructive
- `quickbooks.attachables.get` Get one QuickBooks attachment read
- `quickbooks.attachables.query` Query QuickBooks attachments read
- `quickbooks.attachables.sparse_update` Partially update a QuickBooks attachment write
- `quickbooks.attachables.update` Update a QuickBooks attachment write
- `quickbooks.attachables.upload` Upload a QuickBooks attachment write

**Tax 7**

- `quickbooks.tax_agencies.create` Create a QuickBooks tax agency write
- `quickbooks.tax_agencies.get` Get one QuickBooks tax agency read
- `quickbooks.tax_agencies.query` Query QuickBooks tax agencies read
- `quickbooks.tax_codes.get` Get one QuickBooks tax code read
- `quickbooks.tax_codes.query` Query QuickBooks tax codes read
- `quickbooks.tax_rates.get` Get one QuickBooks tax rate read
- `quickbooks.tax_rates.query` Query QuickBooks tax rates read

**Company 6**

- `quickbooks.company_info.get` Get one QuickBooks company information read
- `quickbooks.company_info.query` Query QuickBooks company information read
- `quickbooks.company_info.update` Update a QuickBooks company information write
- `quickbooks.preferences.get` Get one QuickBooks preferences read
- `quickbooks.preferences.query` Query QuickBooks preferences read
- `quickbooks.preferences.update` Update a QuickBooks preferences write

**Time 6**

- `quickbooks.time_activities.create` Create a QuickBooks time activity write
- `quickbooks.time_activities.delete` Delete a QuickBooks time activity destructive
- `quickbooks.time_activities.get` Get one QuickBooks time activity read
- `quickbooks.time_activities.query` Query QuickBooks time activities read
- `quickbooks.time_activities.sparse_update` Partially update a QuickBooks time activity write
- `quickbooks.time_activities.update` Update a QuickBooks time activity write

**People 5**

- `quickbooks.employees.create` Create a QuickBooks employee write
- `quickbooks.employees.get` Get one QuickBooks employee read
- `quickbooks.employees.query` Query QuickBooks employees read
- `quickbooks.employees.sparse_update` Partially update a QuickBooks employee write
- `quickbooks.employees.update` Update a QuickBooks employee write

**Catalogue 5**

- `quickbooks.items.create` Create a QuickBooks item write
- `quickbooks.items.get` Get one QuickBooks item read
- `quickbooks.items.query` Query QuickBooks items read
- `quickbooks.items.sparse_update` Partially update a QuickBooks item write
- `quickbooks.items.update` Update a QuickBooks item write

**Accounting 3**

- `quickbooks.batch.run` Run a QuickBooks batch write
- `quickbooks.cdc.changes` Get QuickBooks changes since a timestamp read
- `quickbooks.query.run` Run a raw QuickBooks query read

Questions

## The QuickBooks Online MCP server, answered.

**Is there a QuickBooks Online MCP server for Claude?**

Yes. actionlake is an MCP gateway: a remote MCP server that gives Claude, or another MCP client, 217 QuickBooks Online actions across receivables, ledger, payables and reporting, through the same eight tools it uses for every other connector. actionlake is independent; it is not made or endorsed by Intuit.

**Does Intuit have its own MCP server?**

Intuit publishes an open-source QuickBooks Online MCP server that runs on your own machine, signed in through an app you register with Intuit. (Intuit's documentation, checked 22 October 2026.) Use Intuit's server when one person wants to work in QuickBooks Online through a server they run on their own machine. Use actionlake when you also want QuickBooks Online behind the same endpoint as your other systems: a key per agent with allowed actions and a spending cap, a named person's approval before destructive actions, a sealed record of every call, and one ask across QuickBooks Online and another system.

**What do I need to connect QuickBooks Online?**

Your own QuickBooks Online OAuth app, registered with QuickBooks Online (its client id and client secret), and the access and refresh tokens from one admin sign-in. actionlake has no QuickBooks Online app of its own, so this is not a one-step consent. actionlake renews the access token as it expires. Plus your realm id. The free call account { op: "connections.requirements", service: "quickbooks" } lists exactly what to paste.

**Can an AI agent delete or change things in QuickBooks Online?**

Only if its key allows it, and only with an explicit confirmation. 22 QuickBooks Online actions are destructive, including delete a QuickBooks invoice, delete a QuickBooks sales receipt and delete a QuickBooks payment. Each runs only with confirm: true. Under the human confirm policy, or an approval rule on the key, the run waits until a named person approves it.

**Will an AI agent use up my QuickBooks Online API limit?**

actionlake paces every call to the limits in the QuickBooks Online service file: 500 calls a minute per connection. Repeated reads are answered from cache (105 QuickBooks Online actions can be), which never reaches QuickBooks Online.

**What does a QuickBooks Online action cost?**

One upstream call, the only unit actionlake bills. A list that pages bills one call per page (64 QuickBooks Online actions page). Cache hits, searches, dry runs and calls QuickBooks Online refused with 401, 403, 429 or a 5xx are free. The Free plan includes 100,000 calls a month with no card. Paid plans start at US$49 a month for 250,000 calls, with overage from US$0.30 down to US$0.18 per 1,000.

**Which QuickBooks Online API does it cover?**

The QuickBooks Online API 3 at quickbooks.api.intuit.com/v3. It is built from QuickBooks Online's documentation as read on 14 September 2026. 217 actions in 13 areas, each one in the signed service file (version 2.0.0).

**Can I combine QuickBooks Online with my other systems?**

Yes. ask joins QuickBooks Online to ConnectWise PSA or HubSpot CRM on the same customer and returns the answer rather than every row. QuickBooks Online maps crm.company, which 227 other connectors also map.

**Does actionlake keep my QuickBooks Online data, and where?**

actionlake processes and stores data in Sydney, Australia; there is no US region yet. Reads may be cached for up to an hour, and a write clears the reads it affects. Each run's request and response is kept, sealed, for your plan's trace window: 1 day on Free, 3 days on Starter, 7 days on Pro, 14 days on Team, 30 days on Business and 30 days on Enterprise. Your QuickBooks Online credential is sealed under your tenant's key, never logged and never returned. Your traffic is not used to train models.

**Which AI clients can use it?**

Claude Code, tested by us end to end, and the Claude app as a custom connector, tested by us with an existing key. Other MCP clients that support remote servers over Streamable HTTP (MCP revisions 2025-06-18 and 2025-11-25) and OAuth dynamic client registration, or a bearer header, should connect the same way; we have not tested them. Or plain REST, under the same action names.

## More connectors like QuickBooks Online

Shares the most action names with

- [Zoho Books 90](https://actionlake.com/connectors/zoho-books)
- [Xero 69](https://actionlake.com/connectors/xero)
- [Zoho Invoice 57](https://actionlake.com/connectors/zoho-invoice)
- [FreshBooks 52](https://actionlake.com/connectors/freshbooks)
- [Fortnox 44](https://actionlake.com/connectors/fortnox)
- [Wave 34](https://actionlake.com/connectors/wave)

Joins with, on shared entities

- [HaloPSA 6](https://actionlake.com/connectors/halopsa)
- [Zoho Inventory 6](https://actionlake.com/connectors/zoho-inventory)
- [Rev.io 5](https://actionlake.com/connectors/rev-io)
- [Syncro 5](https://actionlake.com/connectors/syncro)
- [RepairShopr 5](https://actionlake.com/connectors/repairshopr)
- [ConnectWise PSA 4](https://actionlake.com/connectors/connectwise-psa)

Browse

- [All Accounting & finance connectors](https://actionlake.com/connectors/category/accounting-and-finance)
- [All connectors](https://actionlake.com/connectors)
- [How actionlake compares](https://actionlake.com/compare)

actionlake is independent. It is not made or endorsed by Intuit; the name is the vendor's own. Counts are from the QuickBooks Online service file, version 2.0.0.

## Give your agent QuickBooks Online today.

[Connect QuickBooks Online free](https://actionlake.com/console?start=sandbox) [See pricing](https://actionlake.com/pricing)

Start free - 100,000 calls/month, no card. No signup. Hard caps on every key. Cached answers are free.

---

Source: https://actionlake.com/connectors/quickbooks-online
More: https://actionlake.com/llms.txt
