Skip to main content

QuickBooks MCP server: what it does, what it can't, and how to set it up

Yes. Intuit publishes an official QuickBooks MCP server that lets Claude and other MCP clients read and write QuickBooks Online data over OAuth 2.0. It runs locally, covers 29 entity types and 11 reports, and leaves approvals, audit evidence and multi-step control to you.

Zuny FesterBy Zuny Fester, Head of Operations and Marketing
Reviewed by Zuny Fester
Published Last reviewed Editorial policy

Part of the finance integrations guide.

Official serverIntuit's QuickBooks Online MCP server, an open-source repo on GitHub
Where it runsLocally on your machine, as a stdio process
AuthenticationOAuth 2.0 through your own app on the Intuit Developer Portal
Coverage29 entity types and 11 report tools
WritesCreate, update and delete are on by default; three QUICKBOOKS_DISABLE_* flags switch them off
Companies per configurationOne QuickBooks Online company (one QUICKBOOKS_REALM_ID)
Not includedAn approval step, a run-level audit log, or rollback across steps

Key points

  • The official server is Intuit's own open-source repo. It runs as a local stdio process on your machine, not as a hosted service.
  • It reads and writes by default. Create, update and delete tools are on unless you switch them off with three environment flags.
  • Hosted alternatives exist from Zapier, Pipedream, Composio and CData, each with its own auth model and tool set.
  • MCP connects a model to QuickBooks. It does not control what the model does. Approvals, run records and safe retries sit outside the protocol.
  • For production books, keep the controls in the workflow, not in the prompt.

What QuickBooks MCP servers exist today?

Five options cover most QuickBooks MCP searches: Intuit's official server, plus hosted or packaged versions from Zapier, Pipedream, Composio and CData. They differ in where they run, how they authenticate, and whether they can write.

ServerWho runs itAuthRead or writeNotes
Intuit QuickBooks Online MCP serverYou, locally (stdio subprocess)OAuth 2.0 through your own app on the Intuit Developer PortalRead and write; writes can be switched offOfficial Intuit repo. One QuickBooks Online company per configuration.
CData QuickBooks Online MCP serverYou, locallyThrough the CData JDBC driver, installed and licensed separatelyRead-onlyCData points users to its separate commercial MCP server or CData Connect AI for writes and remote access.
Zapier MCP for QuickBooks OnlineZapier, hostedYour Zapier-connected QuickBooks accountRead and writeExposes Zapier actions such as Create Invoice, Send Invoice, Void Invoice and Find Customer, plus triggers.
Pipedream MCP for QuickBooksPipedream, hostedPipedream ConnectDepends on the actions you enableOne static server URL for every client.
Composio QuickBooks toolkitComposio, hostedManaged OAuth app, or your ownRead and writeLists 114 tools. Recommends an approval step for actions with side effects.

Community builds are also listed in MCP directories. Check who maintains a server before you give it a production refresh token.

What can the Intuit QuickBooks MCP server actually do?

The Intuit server exposes QuickBooks Online records as MCP tools named {verb}_{entity}, plus 11 report tools. Read tools (get_, search_) are always on. Create, update and delete tools are on by default. Every tool below comes from the repo's README.

AreaTools (examples)Notes
Customers and invoicescreate_invoice, update_invoice, delete_invoice, search_invoices, get_invoice_pdf, create_customer, search_customersdelete_invoice deletes or voids. get_invoice_pdf returns the PDF inline or writes it to disk.
Paymentscreate_payment, update_payment, delete_payment, search_paymentsdelete_payment voids the payment.
Bills and vendorscreate_bill, create_vendor, create_bill_payment, search_bills, search_vendorsFull create, read, update, delete and search.
Sales receipts, credit memos, refundscreate_sales_receipt, create_credit_memo, create_refund_receipt and their get, update, delete and search toolsDelete voids the record for these types.
Bankingcreate_deposit, create_transfer, search_deposits, search_transfersDeposits and account transfers.
Purchasingcreate_purchase_order, create_vendor_credit and their get, update, delete and search tools
Time trackingcreate_time_activity, search_time_activities
Classification and settingscreate_class, create_department, create_term, create_payment_method, get_preferencesNo delete tools for these.
Taxget_tax_code, search_tax_rates, search_tax_agenciesRead-only.
Company and attachmentsget_company_info, update_company_info, create_attachable, search_attachables
Reportsget_balance_sheet, get_profit_and_loss, get_cash_flow, get_trial_balance, get_general_ledger, get_aged_receivables, get_aged_receivables_detail, get_aged_payables, get_customer_balance, get_customer_sales, get_vendor_expensesThe 11 report tools.

The README's entity table also lists Estimate, Employee, Account, Item, Journal Entry and Purchase as supported entities.

What this is good for: asking questions of your books in plain language. "Which customers are more than 60 days past due?" maps cleanly to get_aged_receivables. "Pull last quarter's P&L by month" maps to get_profit_and_loss. Read-only, against a sandbox or a scoped company, this is low-risk and useful.

What can't the QuickBooks MCP server do?

The QuickBooks MCP server gives a model access to QuickBooks. It does not decide who may approve a write, record why a write happened, or make a multi-step sequence safe. Those four gaps are where finance teams get hurt.

1. Writes are on or off, not scoped. The three flags (QUICKBOOKS_DISABLE_WRITE, QUICKBOOKS_DISABLE_UPDATE, QUICKBOOKS_DISABLE_DELETE) switch whole categories off for the whole server. The README describes no per-tool, per-amount or per-user limit. If create_bill_payment is on, it is on for any amount.

2. There is no approval step. The server runs a tool when the client calls it. The MCP specification says clients should show confirmation prompts and keep a human able to deny tool calls, but that is a client behavior and a recommendation, not a guarantee. A confirmation click from the person chatting is also not an approval under your delegation of authority. The approver and the requester are the same person.

3. There is no run-level audit trail. QuickBooks' own audit log records the change: the date, the user, the event, and changes made by connected third-party apps. It keeps events for two years and cannot be turned off. It does not record the instruction that led to the change, the tool call, or who approved it. The MCP specification says clients should log tool usage for audit purposes. The Intuit server's README describes no log of its own.

4. There is no notion of a run. Each tool is one operation on one entity or one report. The model selects and orders the calls at runtime. If an agent creates an invoice, applies a payment, and then fails on the third step, the README describes no rollback, so the first two writes stay in the books. Nothing in the README describes a duplicate check before a create_ call, so a retried step can post the same transaction twice.

Two smaller limits are worth knowing. One configuration connects to one QuickBooks Online company (one QUICKBOOKS_REALM_ID). And "delete" often means "void" for transactions such as invoices, payments, sales receipts and credit memos.

How do you set up the QuickBooks MCP server?

Setup takes an Intuit developer app, a one-time OAuth handshake, and an entry in your MCP client's config. Intuit does not offer per-user API keys, so even read-only access to your own company needs an app. Start in sandbox, read-only.

  1. Create an app on the Intuit Developer Portal. Copy the Client ID and Client Secret from Keys & Credentials (development keys for sandbox).
  2. Add a redirect URI. Sandbox accepts http://localhost:8000/callback. Production rejects localhost and needs a public HTTPS callback for the first handshake. The README's common workaround is an ngrok tunnel, used only for that handshake.
  3. Create or pick a sandbox company under the portal's Sandbox menu.
  4. Clone and build the server.
    git clone https://github.com/intuit/quickbooks-online-mcp-server.git
    cd quickbooks-online-mcp-server
    npm install
    npm run build
  5. Configure .env. Copy .env.example to .env and set QUICKBOOKS_CLIENT_ID, QUICKBOOKS_CLIENT_SECRET, QUICKBOOKS_ENVIRONMENT=sandbox. Set all three QUICKBOOKS_DISABLE_* flags to true for a read-only first run.
  6. Run npm run auth. Your browser opens, you sign in to the sandbox company, and the refresh token and realm ID are saved to .env. Refresh tokens rotate, and the server writes each new one back.
  7. Register the server with your MCP client. For Claude Code, add an entry under mcpServers with "command": "node", the path to dist/index.js, and the same environment variables in its env block.
  8. Test with reads. Ask for an aged receivables report or a customer search. Confirm the numbers against QuickBooks before you trust them.
  9. Turn on writes deliberately. Flip one flag at a time, in sandbox first. Write down who may use a write-enabled client against production.

Three things trip people up. The redirect URI must match exactly (protocol, host, port, path). On a read-only filesystem, set QUICKBOOKS_TOKEN_STORE_PATH to an absolute, writable path in the host process environment, not in .env. The server keeps running without a browser until the 100-day refresh window lapses, then needs a new handshake.

Where does MCP leave a finance-controls gap, and how does Loopfour close it?

MCP is a connection layer, not a control layer. It answers "can the model reach QuickBooks?" It does not answer "should this write happen, who approved it, and what did the run do?" Auditors ask the second set of questions.

An AI agent decides what to do at runtime. Loopfour does only what was approved.

Loopfour, the deterministic finance workflow automation platform, connects to QuickBooks through its own integration and runs finance workflows as versioned, approved steps. AI handles the parts that need interpretation (reading an invoice PDF, classifying a line). Everything that touches the ledger runs as fixed, programmatic steps. Loopfour is a managed service: we build the workflow, run it, and maintain it.

ControlIntuit MCP server on its ownLoopfour workflow on QuickBooks
Who decides the sequenceThe model, at runtimeA versioned workflow, approved before it runs
Approval before a writeOptional client prompt to the person chattingAn approval block, for example interactive Slack approval, routed to the right approver
Retried stepsNo duplicate check describedRerun-safe invoice and journal-entry upserts keyed on the QuickBooks DocNumber (how idempotent invoice sync works)
Audit evidenceQuickBooks' audit log of the changeEvery run is logged and versioned (governance), alongside QuickBooks' own log
Segregation of dutiesRequester and approver can be the same personRoles kept distinct in the workflow (segregation of duties in AP)

A typical flow: vendor invoice arrives → line items extracted → approval in Slack → bill posted to QuickBooks → run record kept. The model never holds a write-enabled QuickBooks token. The workflow does, and it only runs the steps that were approved. Some QuickBooks writes need extra care even inside a workflow. Bills, for example, have no DocNumber upsert, so the workflow has to own idempotency (connecting QuickBooks vendor bills).

Loopfour does not ship an MCP server today. Its workflows run on QuickBooks, NetSuite, Stripe and the other integrations now, triggered by a schedule, an event, a person, or an API call. Native MCP support for Loopfour workflows is coming soon.

Go deeper

For how MCP fits a full finance stack (hosts, clients, servers, MCP vs API vs iPaaS, and where approvals belong), read how financial workflow MCP connects AI to ERP and accounting systems with approvals and an audit trail. For the NetSuite equivalent, see what the NetSuite MCP server can and cannot do.

Next step

Map the finance workflow with the most exposure and prove the automation path.

Bring the invoice, contract, payment reconciliation, or customer finance workflow you have to defend at audit. Loopfour can map the trigger, controls, integrations, and approval loop.

Book a workflow review

Checklist

QuickBooks MCP server setup checklist

  1. Create an app on the Intuit Developer Portal and copy the Client ID and Client Secret (development keys for sandbox).
  2. Add a redirect URI that matches exactly (protocol, host, port, path). Sandbox accepts http://localhost:8000/callback. Production needs a public HTTPS callback.
  3. Create or pick a sandbox company.
  4. Clone the repo, then run npm install and npm run build.
  5. In .env, set all three QUICKBOOKS_DISABLE_* flags to true for a read-only first run.
  6. Run npm run auth to save the refresh token and realm ID.
  7. Register the server under mcpServers in your MCP client's config.
  8. Test with reads, and confirm the numbers against QuickBooks.
  9. Turn on writes one flag at a time, in sandbox first. Write down who may use a write-enabled client against production.
  10. Plan a new OAuth handshake before the 100-day refresh window lapses.

Frequently Asked Questions

Yes. Intuit publishes the QuickBooks Online MCP server on GitHub at github.com/intuit/quickbooks-online-mcp-server. It runs locally as a stdio process, authenticates through an OAuth 2.0 app you register on the Intuit Developer Portal, and exposes create, read, update, delete and search tools plus 11 report tools for one QuickBooks Online company.

Yes, by default. The create, update and delete tools are registered unless you set QUICKBOOKS_DISABLE_WRITE, QUICKBOOKS_DISABLE_UPDATE or QUICKBOOKS_DISABLE_DELETE to true. Read and search tools are always on. For many transactions, including invoices and payments, the delete tool voids the record. Start read-only and turn writes on deliberately.

Yes. Intuit does not offer per-user API keys, so even reading your own company's data requires an app on the Intuit Developer Portal and a one-time OAuth handshake. Sandbox accepts a localhost redirect URI. Production requires a public HTTPS callback for the first authorization, often through an ngrok tunnel.

It is as safe as the controls around it. The MCP specification says clients should confirm sensitive operations with a person and log tool use, but those are client behaviors, not guarantees. Reads against a sandbox are low risk. For writes to production books, keep approvals and run records outside the model.

No. Loopfour does not ship an MCP server today. Loopfour connects to QuickBooks through its own integration and runs approved, versioned workflows on it, triggered by a schedule, an event, a person or an API call. Native MCP support is coming soon.

Sources

Related

How-to

How do I connect QuickBooks vendor bills to a Loopfour workflow?

Loopfour's QuickBooks integration creates a bill with a single, unconditional API call — there's no upsert-by-document-number the way there is for invoices, so a blind retry after a timeout creates a second bill. Loopfour can also create the vendor first if it doesn't already exist; a bill doesn't require a pre-existing vendor record.

Read more

How-to

How do I connect QuickBooks AR with idempotent invoice sync?

Loopfour's QuickBooks integration keys invoice sync off DocNumber, the same invoice number field QuickBooks itself exposes through Custom transaction numbers. Looking an invoice up by DocNumber before writing lets a rerun update the existing invoice instead of creating a duplicate — even if the workflow has lost track of QuickBooks' own internal invoice Id.

Read more

How-to

How do I set up interactive Slack approval buttons for invoice approval?

Post the invoice as a message with an interactive button block, then respond to the click by opening a modal with the trigger_id Slack sends in the interaction payload — within three seconds, before any lookup or validation. Loopfour's Slack integration supports this through sendMessage (with blocks) and openModal, but the modal call has to happen first, not last.

Read more

How-to

How do I maintain segregation of duties in an automated AP approval workflow?

Keep three roles distinct in the workflow itself: who can create or edit a vendor record, who can enter or submit a bill, and who can approve it for payment. Institutional guidance is explicit that authorizing a payment and the person who executes it shouldn't be the same individual — automation makes it easy to collapse these into one click, which is exactly the risk to design against.

Read more

Integration

NetSuite MCP server: what it does and what finance still needs

Yes, there is an official NetSuite MCP server. Oracle provides it through the NetSuite AI Connector Service. With the MCP Standard Tools SuiteApp installed, an AI client such as Claude or ChatGPT can run read-only SuiteQL queries, reports and saved searches, and create or update records, limited to the signed-in user's NetSuite role.

Read more

Integration

ERP MCP server: what exists and how it compares to APIs

An ERP MCP server lets an AI client such as Claude read, and if allowed write, ERP data through the Model Context Protocol. NetSuite, QuickBooks, Dynamics 365, Xero and Sage Intacct now offer one, and SAP data is reachable through AWS and Joule Studio. MCP connects a model to the ERP. Approvals and audit evidence still sit outside it.

Read more

Definition

MCP for accounting: what accountants can do with it, and what it can't

MCP for accounting connects an AI assistant such as Claude or ChatGPT to your accounting system through a Model Context Protocol server. QuickBooks, Xero, NetSuite and Sage Intacct each have a vendor-published server. They are good at reading reports and ledgers. Writes, approvals, close sign-off and audit evidence still need controls outside the model.

Read more