QuickBooks Desktop MCP Quickstart
You can connect Claude to QuickBooks Desktop, but not through Intuit's official Claude connector, which supports QuickBooks Online only. QuickBooks Desktop has no cloud API; it only accepts qbXML through a local interface on the machine where it runs. LedgerCrossing is a Windows app that runs on that machine and includes an MCP server. claude.ai, ChatGPT, Meta Muse and Grok Bot connect to it from anywhere through LedgerCrossing Remote ($39/mo), and Claude Desktop, Claude Code, Cursor, VS Code, Codex and Gemini CLI connect on the QuickBooks computer or your office network. The MCP server is included in the $299 one-time product. (Comparing every option first? See How to connect Claude to QuickBooks Desktop.)
LedgerCrossing includes an MCP server — the same Windows app that gives your integrations a REST API also gives AI agents a door into QuickBooks Desktop. It's included in the product. Not a tier, not a preview, not a limited-time unlock.
This page gets you from installed app to your first question.
Pick your path
Which AI do you use, and where?
| You want to use… | …from | Path | Needs |
|---|---|---|---|
| claude.ai, ChatGPT, Meta Muse, Grok Bot, or anything outside the office | anywhere | Remote | LedgerCrossing Remote ($39/mo) with per-person sign-in. |
| Claude Desktop | the QuickBooks computer itself | Same machine | the bundle. No key to copy. |
| Claude Desktop | another computer in your office | Same network | the bundle, plus the server address and API key from Settings > Allowed Connections > Local network. |
| Claude Code, Cursor, VS Code | any of the above | HTTP clients | the MCP URL and API key. |
| Codex, Gemini CLI | the QuickBooks computer, or another computer in your office | Codex and Gemini CLI | nothing on the QuickBooks computer (stdio); the MCP URL and API key from another computer. |
Before you start
- LedgerCrossing installed and activated on the QuickBooks machine (buy it here — $299 one-time).
- QuickBooks running on that machine with the company file open (or auto-openable).
- By default each request names its company file (Settings > QuickBooks > The caller names the file in each request). Ask your agent to use a file by name, or choose Always use this company file.
- Every path is authenticated. Over LedgerCrossing Remote, each person signs in with their own
username and password. On the same machine the bundle reads the key from the app's own
config, so there is nothing to copy. Everywhere else you supply the API key from
Settings > Allowed Connections > Local network — as
Authorization: Bearer <key>orX-Api-Key: <key>for HTTP clients, or typed into the extension's settings for Claude Desktop. - Over Remote, the MCP Server address is your Remote address, ending in
/mcp, on Settings > Allowed Connections > Internet. On the QuickBooks machine or your office network the MCP endpoint ishttp://<machine>:8284/mcp;localhoston the QuickBooks machine itself. Settings > Allowed Connections shows the exact address and the API key; the per-client steps and snippets are on this page.
claude.ai, ChatGPT, Meta Muse, or anything outside the office
LedgerCrossing Remote ($39/mo) connects claude.ai, ChatGPT, Meta Muse and Grok Bot to QuickBooks Desktop from anywhere. It's a managed relay with per-person sign-in (app v1.8 or later). claude.ai and ChatGPT custom connectors accept only OAuth, so instead of a shared API key each person signs in with their own username and password — and the owner can make them read-only, limit their company files, or remove them. Setup is on Connect claude.ai or ChatGPT. A self-managed tunnel doesn't offer sign-in, so these two need Remote. Meta Muse is verified over Remote (LedgerCrossing 1.15.1 or later), and so is Grok Bot (LedgerCrossing 1.15.2 or later). Step by step for ChatGPT: How to connect ChatGPT to QuickBooks Desktop.
The monthly fee pays for the hosted connection, not for AI features: the MCP server is included in the $299.
HTTP clients that can send a header, such as Claude Code, Cursor and VS Code, can also reach
LedgerCrossing through your own tunnel: same
configs as below, with your https:// hostname instead of localhost.
Claude Desktop from outside the office: use claude.ai instead. The bundle is built for the same machine and the same network.
Claude Desktop on the QuickBooks computer
Two ways. The bundle is simpler; the stdio config is there if you prefer a text file.
Install the bundle
- Download
ledgercrossing.mcpb. If your browser warns about the download, choose Keep. - Open Claude Desktop and go to Settings > Extensions > Advanced settings.
- Scroll to Extension Developer and click Install Extension…, then pick the
.mcpbfile you downloaded. - Leave the extension's settings at their defaults and enable it.
Do not double-click the .mcpb file: Claude Desktop registers no file association for it, so
Windows will only ask which app to open it with. The Extension Developer section sits under a red
banner saying these tools are intended for extension developers. Claude currently treats
sideloaded extensions as a developer feature, so you will see that warning — it is expected, and
it is the supported way to install an extension that didn't come from Anthropic's directory.
The bundle has three settings. On the QuickBooks machine you leave all of them alone:
| Setting | Default | When to change it |
|---|---|---|
| LedgerCrossing address | http://localhost:8284 |
Only when LedgerCrossing runs on a different computer (next section). |
| API key | empty | Only for a different computer. On the same machine the bundle reads the key from the app's config. |
| TLS fingerprint | empty | Only if you turned on HTTPS in LedgerCrossing's Settings > Advanced, which shows the fingerprint. |
Or: manual stdio config
Add this to claude_desktop_config.json (stdio mode has shipped in the app since v1.3.0; adjust
the path if you installed somewhere else):
{
"mcpServers": {
"quickbooks": {
"command": "C:\\Program Files (x86)\\LedgerCrossing\\LedgerCrossing.exe",
"args": ["--mcp-stdio"]
}
}
}
Claude Desktop on another computer in your office
The same bundle can point at LedgerCrossing on a different machine on your local network — the QuickBooks server in the back room, say, while Claude Desktop runs on your own workstation. The call goes directly across your LAN.
On the QuickBooks machine:
- In LedgerCrossing Settings > Allowed Connections > Local network, turn on Allow. LedgerCrossing requires an API key before it will accept this (it refuses to listen on the network without one), and it manages its own Windows Firewall rule for the port.
- On the same tab, the MCP Server address now shows the machine's name instead of
localhost, and API key is right below it. Copy both; you enter them in the extension on your workstation.
On your workstation:
- Install the LedgerCrossing
.mcpbextension exactly as above (Settings > Extensions > Advanced settings > Extension Developer > Install Extension). - In the extension's settings, set LedgerCrossing address to the QuickBooks machine's
address — for example
http://qb-server:8284— and paste the API key. - If LedgerCrossing has HTTPS turned on, paste the fingerprint from its Settings > Advanced into TLS fingerprint. Otherwise leave it empty.
Then ask Claude something: "Which customers are 60+ days overdue?"
Claude Code, Cursor, and VS Code
These talk to the MCP endpoint over HTTP. Over LedgerCrossing Remote they can sign in the same way
claude.ai does; the API key is accepted there only if the owner turns on Allow the API key
(Settings > Allowed Connections > Internet). With the API key in a header, they work from the
QuickBooks machine, from another computer in the office (turn on Allowed Connections > Local
network as described above and use the machine's name instead of localhost),
and over your own tunnel.
Claude Code
One command:
claude mcp add --transport http quickbooks http://localhost:8284/mcp --header "X-Api-Key: YOUR_KEY"
Then ask: "Which customers are 60+ days overdue?" — Claude discovers the right qbXML operation, validates it, and runs it.
Cursor
Add to .cursor/mcp.json (project) or ~/.cursor/mcp.json (global):
{
"mcpServers": {
"quickbooks": {
"url": "http://localhost:8284/mcp",
"headers": { "X-Api-Key": "YOUR_KEY" }
}
}
}
VS Code (Copilot agent mode)
Add to .vscode/mcp.json:
{
"servers": {
"quickbooks": {
"type": "http",
"url": "http://localhost:8284/mcp",
"headers": { "X-Api-Key": "YOUR_KEY" }
}
}
}
Codex and Gemini CLI
Both connect two ways. We tested each end to end on LedgerCrossing 1.15.0 against Intuit's sample company file (Codex CLI 0.164.0, Gemini CLI 0.65.0).
- stdio, on the QuickBooks computer. The CLI starts LedgerCrossing in MCP mode, so there's no key to copy. Run the CLI as the same Windows user that runs LedgerCrossing: stdio reads that user's saved settings.
- HTTP, from another computer in the office. Use the MCP URL and the API key. Turn on Settings > Allowed Connections > Local network first. The QuickBooks computer's Windows network must be set to Private or Domain, not Public: on a Public network other machines can't connect.
Codex
stdio, in %USERPROFILE%\.codex\config.toml:
[mcp_servers.ledgercrossing]
command = 'C:\Program Files (x86)\LedgerCrossing\LedgerCrossing.exe'
args = ["--mcp-stdio"]
default_tools_approval_mode = "approve"
HTTP, same file. Codex reads the key from the LEDGERCROSSING_KEY environment variable and sends it
as a bearer token, so the key never sits in the file. Set it once, then open a new terminal:
setx LEDGERCROSSING_KEY "YOUR_KEY"
[mcp_servers.ledgercrossing]
url = "http://qb-server:8284/mcp"
bearer_token_env_var = "LEDGERCROSSING_KEY"
default_tools_approval_mode = "approve"
codex mcp list should show ledgercrossing as enabled. Two things to know:
default_tools_approval_mode = "approve"is what our test used. With it,codex execran the LedgerCrossing tools without stopping to ask.codex execrefuses to run outside a Git repository. Add--skip-git-repo-check:
codex exec --skip-git-repo-check "Using the LedgerCrossing tools, show me the first two customers in QuickBooks with their balances."
Gemini CLI
stdio, in %USERPROFILE%\.gemini\settings.json:
{
"mcpServers": {
"ledgercrossing": {
"command": "C:\Program Files (x86)\LedgerCrossing\LedgerCrossing.exe",
"args": ["--mcp-stdio"],
"trust": true
}
}
}
HTTP, same file, with the API key pasted in. settings.json then holds the key, so keep that file
private:
{
"mcpServers": {
"ledgercrossing": {
"httpUrl": "http://qb-server:8284/mcp",
"headers": { "X-Api-Key": "YOUR_KEY" },
"trust": true
}
}
}
Three things to know:
- Trust the folder, or nothing loads. In a folder you haven't trusted, Gemini CLI turns off every
MCP server, and
gemini mcp listshowsledgercrossing ... Disabled. Trust the folder when Gemini asks, start it with--skip-trust, or setGEMINI_CLI_TRUST_WORKSPACE=true. "trust": trueskips the confirmation before each tool call, writes included. Leave it out if you'd rather approve every call.- With a Gemini API key, the key's Google Cloud project needs billing on. In our test the
Gemini API refused requests (
403) until billing was turned on.
What the test showed
Each client found the operation, checked its request with validate_qbxml, and ran it. Over the
office network, Gemini's first request had a mistyped closing tag. validate_qbxml answered:
Not well-formed XML: The 'QBXMLMsgsRq' start tag on line 4 position 4 does not match the end tag of 'QBXMLMsxml'. Line 8, position 5.
Gemini corrected the tag, validated again, and the query ran. The validator catches the AI's mistakes before QuickBooks sees them.
The six tools
| Tool | What it does |
|---|---|
list_operations |
All 240 qbXML operations, with category and minimum QuickBooks version |
get_operation |
Full field reference for one operation: element order, required flags, max lengths, enums, version gates |
validate_qbxml |
Checks a request locally against the catalog — no QuickBooks round-trip |
run_qbxml |
Executes the qbXML against QuickBooks Desktop and returns the response |
explain_error |
Turns a QuickBooks status code into what went wrong and what to change |
get_status |
QuickBooks up? Which company file? Bridge connected? |
The design is on-demand discovery: the agent browses list_operations, pulls the exact rules
with get_operation, checks its qbXML with validate_qbxml, then executes with run_qbxml —
so the catalog never floods the agent's context. The catalog is generated from Intuit's qbXML
specification: facts and field rules, all 240 operations.
What to know before you connect an agent
- It can write. On the QuickBooks computer and the office network,
run_qbxmlexecutes whatever qbXML the agent produces — including invoices, payments, and edits — with exactly the capability of the REST API. Over LedgerCrossing Remote, each person starts read-only until you allow writes. Connect agents you trust, to company files you mean to let them touch. QuickBooks' own Audit Trail records every posted transaction. - Open-ended list queries refused by default. A list or transaction query with no limit is stopped before it reaches QuickBooks; the AI has to set one.
- QuickBooks must be running with the company file open (or auto-openable) on the machine — that's a QuickBooks Desktop constraint, and it's why cloud-only MCP servers can't do this job.
Why this exists
Most QuickBooks MCP servers target QuickBooks Online. QuickBooks Desktop has no cloud API — it only talks through a local COM interface on the machine where it runs, which is exactly where LedgerCrossing sits. Most hosted QuickBooks Desktop APIs reach it through the Web Connector, which checks in on a schedule (polling). LedgerCrossing is an MCP server for QuickBooks Desktop that sends requests straight to QuickBooks, with no Web Connector in between.
Frequently asked questions
Can Claude connect to QuickBooks Desktop? Yes, through a bridge app on the QuickBooks machine. Intuit's official Claude connector supports QuickBooks Online only. LedgerCrossing runs on the QuickBooks Desktop machine and includes an MCP server that Claude Desktop, Claude Code, Cursor, VS Code, Codex and Gemini CLI connect to.
Does the Intuit QuickBooks connector for Claude work with QuickBooks Desktop? No. As of October 2026 it connects QuickBooks Online accounts. Desktop company files are local and need software running on that machine.
Is the QuickBooks Desktop MCP server free? It is included in LedgerCrossing, a $299 one-time purchase per machine. There is no separate MCP tier or preview. claude.ai, ChatGPT, Meta Muse and Grok Bot connect through LedgerCrossing Remote ($39/mo), which pays for the hosted connection, not the AI.
Can I use claude.ai, the web app, with QuickBooks Desktop? Yes, over LedgerCrossing Remote ($39/mo), which gives claude.ai and ChatGPT an HTTPS endpoint with per-person sign-in. For ChatGPT, see How to connect ChatGPT to QuickBooks Desktop.
Does Grok Bot work with QuickBooks Desktop? Yes, over LedgerCrossing Remote ($39/mo) with per-person sign-in, on LedgerCrossing 1.15.2 or later. Remote is the way we've verified. As with claude.ai and ChatGPT, each person starts read-only until the owner allows changes.
Is it read-only? Over LedgerCrossing Remote, each person starts read-only until the owner allows writes. On the QuickBooks computer or the office network, the agent can create invoices, payments, and edits with the same capability as the REST API. Open-ended list and transaction queries are refused by default, and QuickBooks' Audit Trail records every posted transaction.
Which QuickBooks Desktop versions work? Pro, Premier, and Enterprise, 2019 and later, on Windows 10 or 11, and Windows Server 2016–2025. Older versions back to 2014 use the same Intuit connection and should work, though we haven't tested them; the 30-day guarantee covers you.
QuickBooks is a registered trademark of Intuit Inc. LedgerCrossing is an independent product for QuickBooks Desktop and is not affiliated with or endorsed by Intuit. MCP (Model Context Protocol) is an open protocol; client names belong to their respective owners.