# How to connect QuickBooks to Hermes Agent (no API keys)

> Connect QuickBooks to Hermes Agent with ClawLink: 105 tools via hosted OAuth, no Intuit developer app to build. Create invoices, customers, and bills from chat. 403 fixes for wrong company and non-admin accounts.

Web version: https://claw-link.dev/hermes/quickbooks

Most guides for giving Hermes Agent QuickBooks access start with registering your own OAuth app or pasting API keys into env files, then leave the token refresh and tool wiring to you. ClawLink gives Hermes a more practical QuickBooks setup: pair once in the browser and your always-on Hermes agent can act on QuickBooks for you, reading and doing real work on your behalf with no auth, token refresh, or tool wiring to build yourself.

**Start here — paste this into Hermes to set up ClawLink:**

> Set up ClawLink for Hermes and tell me when it's ready.
> 1. Install the plugin: `hermes plugins install ClawLink-HQ/hermes-plugin --enable`
> 2. Start pairing with `hermes clawlink begin`. It prints an approval link, so show me the link and stop, don't wait.
> 3. I'll approve it in my browser, then reply "approved".
> 4. When I say approved, finish setup: `hermes clawlink finish`
> 5. Then run `hermes clawlink test` and tell me whether ClawLink is ready.

## Setup

It takes three steps to connect Hermes to QuickBooks.

1. **Install ClawLink** — add the plugin to Hermes Agent once.
2. **Connect QuickBooks** — one-click OAuth in the ClawLink dashboard.
3. **Use it from chat** — ask Hermes Agent in plain English.

**Alternative for any agent (no plugin needed):** if the Hermes Agent plugin route isn't available or doesn't work, any AI agent with shell access can use the ClawLink CLI instead:

```bash
npx -y @useclawlink/cli login          # sign in via browser — no API key to paste
npx -y @useclawlink/cli connect quickbooks  # connect QuickBooks (browser OAuth)
npx -y @useclawlink/cli actions quickbooks  # list available actions
npx -y @useclawlink/cli run quickbooks <action> --input '<json>'  # execute (add --confirm for writes)
```

### Install by command

The prompt above walks Hermes through this. By hand, it is four commands and a browser approval:

```bash
hermes plugins install ClawLink-HQ/hermes-plugin --enable
hermes clawlink begin    # prints an approval link — open it and approve
hermes clawlink finish   # after approving in the browser
hermes clawlink test
```

Then connect QuickBooks in the [ClawLink dashboard](https://claw-link.dev/dashboard) — a one-click OAuth approval, no API keys.

Verify the connection by asking Hermes:

> Create an invoice with quickbooks_create_invoice for customer \<customer id> for the item and quantity I am about to paste. Do not send it yet: show me the invoice line items and total first.

### Using a different agent?

The Hermes plugin is one client of ClawLink's MCP server. Claude Code, Cursor, Codex, or any agent that can run a shell command pairs with the same ClawLink account through the CLI:

```bash
npx -y @useclawlink/cli login
```

`login` opens the same browser approval and stores a credential locally. Once QuickBooks is connected in the dashboard, that agent calls the same 105 QuickBooks tools over MCP. Full setup for MCP clients and shell agents: [connect apps to any AI agent](https://claw-link.dev/learn/connect-apps-to-any-ai-agent).

## QuickBooks MCP for Hermes

Looking for a QuickBooks MCP server for Hermes Agent? ClawLink connects QuickBooks to Hermes Agent and exposes 105 QuickBooks tools your agent can call over [MCP](https://claw-link.dev/learn/what-is-an-mcp-server), with [hosted auth](https://claw-link.dev/learn/oauth-for-ai-agents) and nothing to run or maintain yourself. Using OpenClaw instead? The [OpenClaw QuickBooks integration](https://claw-link.dev/openclaw/quickbooks) runs on the same hosted QuickBooks provider and the same 105 tools; OpenClaw installs ClawLink through a ClawHub skill instead of the Hermes pairing commands.

The most common instruction this page's competitors give you is to become an Intuit developer: register a developer app, request `com.intuit.quickbooks.accounting` scope, manage OAuth tokens, and keep a refresh cycle running. Every search result for "QuickBooks AI agent without developer app" ends there because that is the only route the alternatives know. This page's route has none of it. Pair Hermes once, click Connect next to QuickBooks in the dashboard, sign in on Intuit's own screen, and the 105 tools below work from chat. QuickBooks sign-in is what grants access, so the connection is tied to your company, your books, and whatever your Intuit account can already see. For the bookkeeping actions that matter, the tools are named and real: `quickbooks_create_invoice` creates an invoice, `quickbooks_create_customer` and `quickbooks_create_bill` handle the surrounding objects, and the report tools read the books without writing.

## What the Hermes Agent QuickBooks integration can do

105 QuickBooks tools are ready for Hermes Agent once the account is connected. The 30 below are the ones people reach for most; your agent can call all 105.

### 30 of 105 QuickBooks tools for Hermes

| Tool | What it does |
|---|---|
| **Create account** `quickbooks_create_account` | Create a new account in QuickBooks |
| **Create bill** `quickbooks_create_bill` | Create a new bill in QuickBooks |
| **Create credit memo** `quickbooks_create_credit_memo` | Create a new credit memo in QuickBooks |
| **Create customer** `quickbooks_create_customer` | Create a new customer in QuickBooks |
| **Create deposit** `quickbooks_create_deposit` | Create a new deposit in QuickBooks |
| **Create employee** `quickbooks_create_employee` | Create a new employee in QuickBooks |
| **Create estimate** `quickbooks_create_estimate` | Create a new estimate in QuickBooks |
| **Create invoice** `quickbooks_create_invoice` | Create a new invoice in QuickBooks |
| **Customer balance detail** `quickbooks_customer_balance_detail` | Generate a balance detail report for a customer in QuickBooks with the given customer ID |
| **Customer balance report** `quickbooks_customer_balance_report` | Generate a customer balance report in QuickBooks showing outstanding balances for customers |
| **Get aged receivables report** `quickbooks_get_aged_receivables_report` | Generate an aged receivables report showing outstanding customer balances by age |
| **Get attachable** `quickbooks_get_attachable` | Read details of a specific attachable by ID in QuickBooks Online |
| **Get balance sheet report** `quickbooks_get_balance_sheet_report` | Generate a Balance Sheet report showing company assets, liabilities, and equity at a point in |
| **Get bank account** `quickbooks_get_bank_account` | Retrieve a specific bank account by ID from QuickBooks Payments API |
| **Get bill** `quickbooks_get_bill` | Fetch a QuickBooks bill by ID |
| **Get bill payment** `quickbooks_get_bill_payment` | Retrieve details of a specific bill payment by ID in QuickBooks Online |
| **Get changed entities** `quickbooks_get_changed_entities` | Retrieve entities that changed since a specified timestamp using QuickBooks Change Data Capture |
| **Get company info** `quickbooks_get_company_info` | Read company information from QuickBooks Online |
| **Get credit memo** `quickbooks_get_credit_memo` | Fetch a QuickBooks credit memo by ID |
| **Get credit memo PDF** `quickbooks_get_credit_memo_pdf` | Download a QuickBooks credit memo as a PDF file |
| **Get department** `quickbooks_get_department` | Read details of a specific department by ID in QuickBooks Online |
| **Get deposit** `quickbooks_get_deposit` | Read details of a specific deposit by ID in QuickBooks Online |
| **Get estimate** `quickbooks_get_estimate` | Fetch a QuickBooks estimate by ID |
| **Get estimate PDF** `quickbooks_get_estimate_pdf` | Download a QuickBooks estimate as a PDF file |
| **Get exchange rate** `quickbooks_get_exchange_rate` | Get exchange rate for a specific currency code and date in QuickBooks Online |
| **Get general ledger report** `quickbooks_get_general_ledger_report` | Generate a General Ledger report showing all transactions with debits, credits, and running |
| **Get inventory valuation summary** `quickbooks_get_inventory_valuation_summary` | Generate an Inventory Valuation Summary report showing inventory quantities and their current |
| **Get invoice PDF** `quickbooks_get_invoice_pdf` | Download a QuickBooks invoice as a PDF file |
| **Get item** `quickbooks_get_item` | Retrieve a specific item by its ID from QuickBooks Online |
| **Get journal entry** `quickbooks_get_journal_entry` | Read details of a specific QuickBooks journal entry by ID |

## Example prompts

**Create an invoice**

> Create an invoice with quickbooks_create_invoice for customer \<customer id> for the item and quantity I am about to paste. Do not send it yet: show me the invoice line items and total first.

**Who owes what**

> Run quickbooks_customer_balance_report and quickbooks_get_aged_receivables_report, then list the customers with open balances over 30 days and the total each owes.

**Books checkup**

> Pull quickbooks_get_company_info and quickbooks_get_general_ledger_report for the last quarter. Compare the ledger total against quickbooks_get_balance_sheet_report and tell me if they agree.

**New customer flow**

> Create the customer \<name and details> with quickbooks_create_customer, then create the estimate I describe with quickbooks_create_estimate against that customer's id, and give me both ids.

## How the QuickBooks tools behave

The shapes that decide whether a QuickBooks prompt returns fast or lands in the wrong company's books.

- **Everything is company-scoped.** Every read and write happens inside the company the sign-in chose. `quickbooks_get_company_info` is the tool to call when anything looks wrong, because it shows which company the connection is actually acting as.
- **Objects come first, then actions.** Creating an invoice requires a customer id and item references; the creation tools assume the ids already exist. Have the agent look up or create the customer first, then the invoice.
- **PDF tools exist for two objects.** `quickbooks_get_invoice_pdf` and `quickbooks_get_estimate_pdf` return documents, which is how an agent hands you a reviewable artifact instead of a summary.
- **Reports are the safe surface.** Balance sheet, aged receivables, general ledger, customer balances, and inventory valuation are all read-only; nothing an agent does with them can change the books.
- **Writes are real writes.** Invoice, bill, and credit memo creation post to your books. A prompt that ends with "show me before you send" keeps the human-in-the-loop without extra tooling.

## ClawLink vs. building it yourself

The alternative to ClawLink is usually manual OAuth app setup plus your own token handling, permission troubleshooting, and tool plumbing for Hermes Agent. That is fine if you want to build and maintain the integration yourself. Most teams just want QuickBooks working from chat.

| | Manual | ClawLink |
|---|---|---|
| **Connection flow** | Register a QuickBooks app, configure redirect URLs, manage consent details, and reconnect users when auth settings drift. | Users connect QuickBooks through the hosted browser flow and ClawLink keeps the token lifecycle out of your app code. |
| **Ongoing maintenance** | You own refresh logic, permission debugging, environment config, and every provider-specific edge case for QuickBooks. | ClawLink handles the repetitive integration plumbing so your team can focus on the workflow instead of the infrastructure. |
| **Agent usability** | You still need to expose the right QuickBooks actions to the runtime in a format your agent can reliably use. | 105 tools for QuickBooks are already exposed through ClawLink, so the agent can read and act from chat immediately. |

## ClawLink vs. Composio

Composio also exposes QuickBooks to AI agents. It is developer infrastructure: Python and TypeScript SDKs, an MCP server, and a catalog past 1,000 apps, aimed at teams shipping agent products. ClawLink is built for Hermes Agent users instead. You install the plugin once, connect QuickBooks in the browser, and the 105 tools above work from chat. There is no SDK, no config file, and no API key handling. Choosing between them? Read the full [Composio alternatives](https://claw-link.dev/hub/composio-alternatives) comparison.

### Hermes paired but still can't use QuickBooks
Pairing is a two-step handshake: run `hermes clawlink begin`, approve the link in your browser, then run `hermes clawlink finish`. If you ran finish before approving, or the approval link expired, run `hermes clawlink begin` again to get a fresh link. Confirm the plugin was installed with `--enable`, then verify with `hermes clawlink test`.

### Connection succeeds but no tools appear
Reconnect QuickBooks from the dashboard, then start a fresh chat if the runtime still has the old tool catalog loaded.

### "Tool schema not loaded yet" error when calling QuickBooks tools
QuickBooks tool schemas load on demand the first time a tool runs and are cached after that, so this error usually clears on its own: wait a few seconds and retry the same request. If every QuickBooks call keeps failing with it in a fresh chat, reconnect from the dashboard, and contact support if it still persists — that pattern points to a configuration problem on our side, not something you can fix by reconnecting again.

### QuickBooks returns 403 or "permission denied" on one action while others work
Two usual causes. The connected account may not have access to the specific workspace, inbox, store, or project in the request — check that first. If access looks right, the agent may have sent a placeholder value (like "YOUR_ID" or an example id from documentation) instead of a real one: ask it to run a list or search tool first, then retry the action with a real id from those results. Most failures at this stage are one of these two, not ClawLink bugs.

### QuickBooks returns 403 insufficient permissions although the account is connected
For a hosted connection the taught cause order is: connected user, company, then credentials. First, the user: a connected account that is not an admin of the company the tool is addressing fails writes, and ChatGPT's p3 diagnosis names non-admin user as the top cause. Second, the company: QuickBooks scopes everything to a company (realm), so a call aimed at the wrong company 403s even with full access, and an agent that guesses "my company" can target the wrong books. Third, stale credentials: a grant made before a permission change keeps its old limits, and disconnect then reconnect with the admin account re-issues it. Only then look at the arguments, where an invented customer or invoice id returns the same permission-shaped error because QuickBooks hides what the connection cannot see.

Ask the agent to diagnose it:

```text
Call quickbooks_get_company_info and tell me which company this connection is acting as. Then call quickbooks_get_customer for the id the failed call used and quote the exact error. Do not retry the failed call yet.
```

### QuickBooks tools are missing, or one tool name is not found
Two different failures. If Hermes shows no QuickBooks tools at all, the connection or the pairing is incomplete: confirm both `hermes clawlink begin` and `hermes clawlink finish` ran, that QuickBooks shows as connected in the dashboard, and that you started a fresh chat after connecting. If most tools work and a single name fails, the name is wrong rather than missing, and the error lists the closest real ones. The causes search results teach for this symptom are local-server problems: an offline MCP process, misconfigured environment credentials, or a revoke-and-reauth cycle for a local client. None of those exist here, so ignore advice about restarting processes or editing config files.

Ask the agent to diagnose it:

```text
List the QuickBooks tools you actually have access to. If there are none, say so plainly. If there are, tell me which one creates an invoice and use that exact name.
```

### QuickBooks returns 401 or the connection stops working mid-day
This is the token-lifecycle failure: the OAuth grant behind the connection was revoked, expired past its refresh, or was revoked inside Intuit's Connected Apps page. Reads and writes fail together from that moment, and nothing about the tool calls will fix it. Reconnect QuickBooks from the dashboard, sign in again on Intuit's screen, and start a fresh chat so Hermes picks the new grant up. If only one tool fails while others work, you are back in 403 territory: wrong company, non-admin user, or a bad id, not a dead connection.

Ask the agent to diagnose it:

```text
Check whether quickbooks_get_company_info succeeds. If it fails, say "connection is dead" and tell me the exact error. If it succeeds, list which tools failed and what ids they were called with.
```

### OAuth finished in the browser but the account is still missing
Try reconnecting QuickBooks and complete the consent flow in the same browser session. Partial OAuth approvals or switching accounts mid-flow can leave the connection incomplete.

### Is there a Hermes Agent QuickBooks integration?
Yes. ClawLink is the fastest way to connect Hermes to QuickBooks: link your QuickBooks account once in the browser and Hermes Agent can call the QuickBooks API through 105 ready-made tools — no custom code or token handling.

### How do I connect QuickBooks to Hermes with ClawLink?
Install the plugin with `hermes plugins install ClawLink-HQ/hermes-plugin --enable`, then pair once: run `hermes clawlink begin`, approve the link in your browser, and run `hermes clawlink finish`. Connect QuickBooks in the dashboard and Hermes can use it from the next message — no config files or API keys to manage.

### How long does it take to connect QuickBooks to Hermes Agent?
About two minutes. Sign in, click Connect next to QuickBooks in the dashboard, authenticate, and Hermes Agent can use it from the next chat message.

### Why use ClawLink instead of wiring QuickBooks up myself?
The alternative to ClawLink is usually manual OAuth app setup plus your own token handling, permission troubleshooting, and tool plumbing for Hermes Agent. That is fine if you want to build and maintain the integration yourself. Most teams just want QuickBooks working from chat.

### Do I need to build an Intuit developer app to connect QuickBooks?
No, and this is the question the page exists to answer. The developer-app route is what most guides teach because the alternatives require you to own an OAuth app: register in the Intuit Developer portal, request the accounting scope, build a token refresh cycle, and keep it running. ClawLink owns a verified app, so the developer portal, the scope request, and the refresh cycle are all removed. You approve Intuit's consent screen once, and the connection refreshes itself server-side. The search-results story that "without your own developer app" is hard is about every route except this one.

### What can the agent do in QuickBooks?
The tools divide into the objects and the reports. Objects: create and read invoices, customers, bills, credit memos, deposits, estimates, employees, accounts, bank accounts, items, and journal entries, and read the PDFs of invoices and estimates. Reports: balance sheet, general ledger, aged receivables, customer balances, inventory valuation, and company info. The writes land in your real books, so invoice and bill creation are the actions to be deliberate about; reports are read-only and safe to let an agent explore freely.

### Is this the same as QuickBooks's native AI agents?
No. Intuit now answers "QuickBooks AI agent without API key" with its own native agents: Accounting, Finance, and Customer agents inside QuickBooks itself. They are built-in product features. This integration is the external-agent route: Hermes is the agent, and QuickBooks is one connected account among several. If you want an agent that lives entirely inside QuickBooks, the native agents exist; if you want your own agent working across your tools, this is the route that connects it to the books.

### Which company's books does the connection see?
The one you sign in with, and this is a common failure point worth understanding before it happens. A QuickBooks sign-in that manages several companies attaches to whichever one you pick, and an agent told "my company" without context may be looking at the wrong books. The 403 causes engines teach for connected accounts are exactly this family: the connected user lacks access to the company the tool is targeting, the account is not an admin of that company, or the connection predates a permission change. Reconnecting from the dashboard and signing in with an account that is an admin of the right company is the fix.

### Is it safe to connect QuickBooks to an AI agent?
The risk conversation engines have about this is real: financial data, token compromise, and who is a data processor. The mechanics of this connection are the mitigations: the OAuth token lives server-side rather than in a config file or environment variable, the tool table on this page is the complete set of operations the agent can invoke, and revoking from the dashboard cuts access immediately. Keep the human-in-the-loop habit for writes: draft invoices and bills for approval before posting, and use the read-only report tools for anything exploratory.

### Hermes paired but still can't use QuickBooks
Pairing is a two-step handshake: run `hermes clawlink begin`, approve the link in your browser, then run `hermes clawlink finish`. If you ran finish before approving, or the approval link expired, run `hermes clawlink begin` again to get a fresh link. Confirm the plugin was installed with `--enable`, then verify with `hermes clawlink test`.

## Related

- [Hermes Zoho Invoice integration](https://claw-link.dev/hermes/zoho-invoice) — Create and send invoices, track payments, and manage billing
- [Connect Square](https://claw-link.dev/hermes/square) — Process payments and manage POS
- [Sevdesk tools](https://claw-link.dev/hermes/sevdesk) — sevDesk is an online accounting software designed for small businesses and freelancers, offering features like invoicing, expense management, and financial reporting.
