QuickBooks Online

QuickBooks Online

Official

Run QuickBooks Online accounting from an agent — invoices, bills, payments, and financial reports.

Quick answer

What it does

Exposes 145 tools covering 29 QuickBooks Online entity types with full create/read/update/delete/search, plus 11 financial reports — balance sheet, profit and loss, cash flow, and others. Runs locally as a stdio subprocess against one QuickBooks company.

Best for

  • Creating and sending invoices from chat
  • Reading QuickBooks financial reports
  • Recording payments against invoices
  • Read-only bookkeeping agents (write tools disabled)

Not for

  • Zero-config setups — the OAuth app registration is mandatory
  • Unattended writes to a production ledger without approval

Source: top-mcps.com/mcp/quickbooks — verified Sep 2026

Setup recipe

Pick your client, then follow the three steps.

  1. 1

    Install

    claude_desktop_config.json
    {
      "mcpServers": {
        "quickbooks": {
          "command": "git",
          "args": [
            "clone",
            "https://github.com/intuit/quickbooks-online-mcp-server",
            "&&",
            "cd",
            "quickbooks-online-mcp-server",
            "&&",
            "npm",
            "install",
            "&&",
            "npm",
            "run",
            "build"
          ],
          "env": {
            "QUICKBOOKS_CLIENT_ID": "${QUICKBOOKS_CLIENT_ID}",
            "QUICKBOOKS_CLIENT_SECRET": "${QUICKBOOKS_CLIENT_SECRET}",
            "QUICKBOOKS_REFRESH_TOKEN": "${QUICKBOOKS_REFRESH_TOKEN}",
            "QUICKBOOKS_REALM_ID": "${QUICKBOOKS_REALM_ID}",
            "QUICKBOOKS_ENVIRONMENT": "${QUICKBOOKS_ENVIRONMENT}"
          }
        }
      }
    }

    Paste under mcpServers. Fully quit and reopen Claude after editing.

    CLI or .mcp.json
    # export QUICKBOOKS_CLIENT_ID=your_client_id
    # export QUICKBOOKS_CLIENT_SECRET=your_client_secret
    # export QUICKBOOKS_REFRESH_TOKEN=your_refresh_token
    # export QUICKBOOKS_REALM_ID=your_company_realm_id
    # export QUICKBOOKS_ENVIRONMENT=sandbox
    claude mcp add quickbooks -- git clone https://github.com/intuit/quickbooks-online-mcp-server && cd quickbooks-online-mcp-server && npm install && npm run build

    Run from your repo. Commit .mcp.json to share with your team.

    .cursor/mcp.json
    {
      "mcpServers": {
        "quickbooks": {
          "command": "git",
          "args": [
            "clone",
            "https://github.com/intuit/quickbooks-online-mcp-server",
            "&&",
            "cd",
            "quickbooks-online-mcp-server",
            "&&",
            "npm",
            "install",
            "&&",
            "npm",
            "run",
            "build"
          ],
          "env": {
            "QUICKBOOKS_CLIENT_ID": "${QUICKBOOKS_CLIENT_ID}",
            "QUICKBOOKS_CLIENT_SECRET": "${QUICKBOOKS_CLIENT_SECRET}",
            "QUICKBOOKS_REFRESH_TOKEN": "${QUICKBOOKS_REFRESH_TOKEN}",
            "QUICKBOOKS_REALM_ID": "${QUICKBOOKS_REALM_ID}",
            "QUICKBOOKS_ENVIRONMENT": "${QUICKBOOKS_ENVIRONMENT}"
          }
        }
      }
    }

    Global path: ~/.cursor/mcp.json. Reload window after editing.

    .vscode/mcp.json
    {
      "servers": {
        "quickbooks": {
          "command": "git",
          "args": [
            "clone",
            "https://github.com/intuit/quickbooks-online-mcp-server",
            "&&",
            "cd",
            "quickbooks-online-mcp-server",
            "&&",
            "npm",
            "install",
            "&&",
            "npm",
            "run",
            "build"
          ],
          "env": {
            "QUICKBOOKS_CLIENT_ID": "${QUICKBOOKS_CLIENT_ID}",
            "QUICKBOOKS_CLIENT_SECRET": "${QUICKBOOKS_CLIENT_SECRET}",
            "QUICKBOOKS_REFRESH_TOKEN": "${QUICKBOOKS_REFRESH_TOKEN}",
            "QUICKBOOKS_REALM_ID": "${QUICKBOOKS_REALM_ID}",
            "QUICKBOOKS_ENVIRONMENT": "${QUICKBOOKS_ENVIRONMENT}"
          }
        }
      }
    }

    VS Code uses the "servers" key (not "mcpServers").

    ~/.codeium/windsurf/mcp_config.json
    {
      "mcpServers": {
        "quickbooks": {
          "command": "git",
          "args": [
            "clone",
            "https://github.com/intuit/quickbooks-online-mcp-server",
            "&&",
            "cd",
            "quickbooks-online-mcp-server",
            "&&",
            "npm",
            "install",
            "&&",
            "npm",
            "run",
            "build"
          ],
          "env": {
            "QUICKBOOKS_CLIENT_ID": "${QUICKBOOKS_CLIENT_ID}",
            "QUICKBOOKS_CLIENT_SECRET": "${QUICKBOOKS_CLIENT_SECRET}",
            "QUICKBOOKS_REFRESH_TOKEN": "${QUICKBOOKS_REFRESH_TOKEN}",
            "QUICKBOOKS_REALM_ID": "${QUICKBOOKS_REALM_ID}",
            "QUICKBOOKS_ENVIRONMENT": "${QUICKBOOKS_ENVIRONMENT}"
          }
        }
      }
    }

    Open via Cascade → hammer icon → Configure.

    cline_mcp_settings.json
    {
      "mcpServers": {
        "quickbooks": {
          "command": "git",
          "args": [
            "clone",
            "https://github.com/intuit/quickbooks-online-mcp-server",
            "&&",
            "cd",
            "quickbooks-online-mcp-server",
            "&&",
            "npm",
            "install",
            "&&",
            "npm",
            "run",
            "build"
          ],
          "env": {
            "QUICKBOOKS_CLIENT_ID": "${QUICKBOOKS_CLIENT_ID}",
            "QUICKBOOKS_CLIENT_SECRET": "${QUICKBOOKS_CLIENT_SECRET}",
            "QUICKBOOKS_REFRESH_TOKEN": "${QUICKBOOKS_REFRESH_TOKEN}",
            "QUICKBOOKS_REALM_ID": "${QUICKBOOKS_REALM_ID}",
            "QUICKBOOKS_ENVIRONMENT": "${QUICKBOOKS_ENVIRONMENT}"
          }
        }
      }
    }

    Open via the Cline sidebar → MCP Servers → Edit.

    ~/.continue/config.json
    {
      "experimental": {
        "modelContextProtocolServers": [
          {
            "transport": {
              "type": "stdio",
              "command": "git",
              "args": [
                "clone",
                "https://github.com/intuit/quickbooks-online-mcp-server",
                "&&",
                "cd",
                "quickbooks-online-mcp-server",
                "&&",
                "npm",
                "install",
                "&&",
                "npm",
                "run",
                "build"
              ],
              "env": {
                "QUICKBOOKS_CLIENT_ID": "${QUICKBOOKS_CLIENT_ID}",
                "QUICKBOOKS_CLIENT_SECRET": "${QUICKBOOKS_CLIENT_SECRET}",
                "QUICKBOOKS_REFRESH_TOKEN": "${QUICKBOOKS_REFRESH_TOKEN}",
                "QUICKBOOKS_REALM_ID": "${QUICKBOOKS_REALM_ID}",
                "QUICKBOOKS_ENVIRONMENT": "${QUICKBOOKS_ENVIRONMENT}"
              }
            }
          }
        ]
      }
    }

    Continue uses modelContextProtocolServers with a transport block.

    ~/.codex/config.toml
    # ~/.codex/config.toml
    [mcp_servers.quickbooks]
    command = "git"
    args = [
      "clone",
      "https://github.com/intuit/quickbooks-online-mcp-server",
      "&&",
      "cd",
      "quickbooks-online-mcp-server",
      "&&",
      "npm",
      "install",
      "&&",
      "npm",
      "run",
      "build",
    ]
    env = { QUICKBOOKS_CLIENT_ID = "${QUICKBOOKS_CLIENT_ID}", QUICKBOOKS_CLIENT_SECRET = "${QUICKBOOKS_CLIENT_SECRET}", QUICKBOOKS_REFRESH_TOKEN = "${QUICKBOOKS_REFRESH_TOKEN}", QUICKBOOKS_REALM_ID = "${QUICKBOOKS_REALM_ID}", QUICKBOOKS_ENVIRONMENT = "${QUICKBOOKS_ENVIRONMENT}" }

    Codex uses TOML. Each server is a [mcp_servers.<name>] subtable.

    ~/.config/zed/settings.json
    {
      "context_servers": {
        "quickbooks": {
          "command": {
            "path": "git",
            "args": [
              "clone",
              "https://github.com/intuit/quickbooks-online-mcp-server",
              "&&",
              "cd",
              "quickbooks-online-mcp-server",
              "&&",
              "npm",
              "install",
              "&&",
              "npm",
              "run",
              "build"
            ]
          },
          "env": {
            "QUICKBOOKS_CLIENT_ID": "${QUICKBOOKS_CLIENT_ID}",
            "QUICKBOOKS_CLIENT_SECRET": "${QUICKBOOKS_CLIENT_SECRET}",
            "QUICKBOOKS_REFRESH_TOKEN": "${QUICKBOOKS_REFRESH_TOKEN}",
            "QUICKBOOKS_REALM_ID": "${QUICKBOOKS_REALM_ID}",
            "QUICKBOOKS_ENVIRONMENT": "${QUICKBOOKS_ENVIRONMENT}"
          }
        }
      }
    }

    Zed calls them "context_servers". Settings live-reload on save.

    ChatGPT → Apps directory

    QuickBooks Online doesn't ship a hosted HTTPS endpoint today. ChatGPT supports remote MCP servers only — to use this server in ChatGPT you'll need to deploy it to a public HTTPS URL first (e.g. via Cloudflare Workers or Vercel) or wait for an official remote build.

  2. 2

    Set required secrets

    Set QUICKBOOKS_CLIENT_ID, QUICKBOOKS_CLIENT_SECRET, QUICKBOOKS_REFRESH_TOKEN, QUICKBOOKS_REALM_ID, QUICKBOOKS_ENVIRONMENT in your shell environment before launching your MCP client.

  3. 3

    Try a minimum working prompt

    Minimum working prompt pending verification. Try any prompt from the MCP’s README once installed.

Tools & permissions

Tools list pending verification. The server exposes tools over MCP; we haven’t yet parsed its capability manifest into this page. Check the GitHub repo for the authoritative list.

Security & scope

Access scope
Network
Sandbox
Runs locally over stdio and authenticates to one QuickBooks company with an OAuth 2.0 refresh token, client ID/secret, and realm ID. Access scope matches the OAuth grant on the Intuit app.
Gotchas
  • Every install needs an app registered on the Intuit Developer Portal — Intuit issues no per-user API keys, so there is no way to skip the OAuth handshake even to read your own company.
  • Sandbox accepts a localhost redirect URI; production rejects it and requires a public HTTPS callback for the initial authorization.
  • The refresh token rotates and lapses after roughly 100 days of disuse, at which point the browser handshake has to be repeated.
  • Prefer QUICKBOOKS_DISABLE_WRITE/UPDATE/DELETE over trusting prompt instructions when an agent only needs to read the ledger.

Agent prompt pack

— copy into Claude, Cursor, or ChatGPT.
Paste into Claude, Cursor, or ChatGPT. Edit the [brackets] before sending.
Recommend the best MCP servers for [task: e.g. commerce & payments work] in [client: Claude].

Constraints:
- Prefer tools that are [official | open-source | read-only] — pick what matters for my use case.
- Exclude MCPs that require [e.g. a paid plan, OAuth-only flows, remote-only transport].
- Return at most 3 picks, ranked.

For each pick include:
1. One-sentence rationale.
2. The ready-to-paste install snippet for my client.
3. Any required secrets I need to create before installing.

Cross-check the top-mcps.com listing: https://top-mcps.com/top-mcps-for-commerce-payments
Compare QuickBooks Online against a real alternative. Swap the second MCP in [brackets] if you want a different match.
Compare QuickBooks Online MCP vs [Xero MCP] for the following job: [describe the job, e.g. "let an agent create GitHub issues on bug triage"].

Judge them on:
- Setup time and complexity (what a new user hits first).
- Auth model (none / API key / OAuth 2.1) and credential risk.
- Transport (stdio / Streamable HTTP / SSE) and where the server runs.
- Required secrets and the blast radius if they leak.
- Operational risk in an unattended agent loop.
- Which one is "good enough" for a weekend prototype vs. production.

End with one sentence: which should I pick for my scenario, which is: [my scenario].

References:
- https://top-mcps.com/mcp/quickbooks
- top-mcps.com listing for Xero
Asks the agent to install and verify. Works inside Claude Code, Cursor Agent, Codex CLI.
Install the QuickBooks Online MCP server for my [client: Claude] at the default config path for that client.

Use the exact install snippet published at https://top-mcps.com/mcp/quickbooks (fetch https://top-mcps.com/mcp/quickbooks.json for the canonical server.json if you can read URLs).

Before finishing:
1. Create the required secrets (QUICKBOOKS_CLIENT_ID, QUICKBOOKS_CLIENT_SECRET, QUICKBOOKS_REFRESH_TOKEN, QUICKBOOKS_REALM_ID, QUICKBOOKS_ENVIRONMENT) and put them in the appropriate env block — do not hard-code them.
2. Restart or reload the client so it picks up the new server.
3. Verify the server is connected (green / running state) and at least one tool is listed.
4. If anything fails, read the client's MCP logs and report the exact error — do not silently retry.

Confirm when done and list the tools the server now exposes.

Frequently asked questions

What changed

— 2 updates tracked.
  1. Refreshed install snippets and fact sheet; verified for 2026.

  2. Initial directory listing.

More Commerce & Payments MCPs

Other tools in the same category worth evaluating.

Official

Manage payments, customers, and subscriptions through Stripe.

stripe, payments, billing, invoicing
5 minMedium
Xero
Official

Official Xero MCP — invoices, contacts, bank transactions, and accounting from an agent.

xero, accounting, invoicing, bookkeeping
10 minMedium
Official

Build on Shopify with an agent — searches the dev docs and validates generated GraphQL, components and Liquid themes.

shopify, ecommerce, developer-tools, graphql
10 minMedium

Compared with QuickBooks Online

Side-by-side breakdowns for the choices people most often weigh against this MCP.

Exploring Top MCPs for Commerce & Payments? See all Commerce & Payments MCPs →