Skip the install. Get this working in under 2 minutes.
Start a free trial on cloud.anythingmcp.com, add the QuickBooks Online in one click, then point your AI client (Claude, ChatGPT, Copilot or Cursor) at the generated MCP endpoint. No Docker, no git clone, zero engineering experience required.
Summary
Let your AI work with QuickBooks Online: query customers, vendors, items, invoices, bills, payments and accounts, read single records, run Profit and Loss, Balance Sheet and aged receivables and payables reports, and create customers and invoices. Intuit OAuth sign-in, sandbox or production company.
Try asking
Example prompts for QuickBooks Online
Click any prompt to copy it. Paste into Claude, ChatGPT, Cursor, Gemini, Copilot or OpenClaw to run it against this connector.
Claude is AI and can make mistakes. Please double-check responses.
💡 No install? Use cloud.anythingmcp.com directly. Sign in, click Connectors → QuickBooks Online, paste your credentials, mint an MCP API key and you're done. No Docker, no
git clone, no local server.
QuickBooks Online
Let your AI work with QuickBooks Online: query customers, vendors, items, invoices, bills, payments and accounts, read single records, run Profit and Loss, Balance Sheet and aged receivables and payables reports, and create customers and invoices. Intuit OAuth sign-in, sandbox or production company.
Setup
- Sign in at developer.intuit.com, open My Hub → App dashboard → Create an app, choose QuickBooks Online and Payments and select the scope com.intuit.quickbooks.accounting.
- Under Settings → Redirect URIs, add
https://cloud.anythingmcp.com/api/mcp-oauth/callbackfor Development and, later, for Production. If you host AnythingMCP yourself, enterhttps://your-anythingmcp-host/api/mcp-oauth/callbackinstead. The URI must match exactly. - Copy the Client ID and Client Secret from Keys & credentials into
QBO_CLIENT_IDandQBO_CLIENT_SECRET. Development keys work only with sandbox companies. Production keys work with real companies; Intuit grants them after a short app assessment (a questionnaire on the app dashboard). - Find the company's realm id (Company ID): in QuickBooks, click the gear icon, open Account and settings → Billing & subscription and copy the Company ID without spaces. For a sandbox company, it is on the developer site under Sandboxes. Paste it into
QBO_REALM_ID. - Set
QBO_API_URLtohttps://quickbooks.api.intuit.comfor a real company or tohttps://sandbox-quickbooks.api.intuit.comfor a sandbox company. It must match the keys: development keys with the sandbox URL, production keys with the production URL. - Install the connector, click Authorize with Provider on the connector page, sign in to Intuit and connect the same company.
- Start with
qbo_get_company_infoand check the company name before the AI reads or writes anything. One connector works with one company; install it again for a second company.
Staying signed in: access tokens last an hour and are renewed automatically. A refresh token that is not used for 100 days expires, and every authorization ends after 5 years at the latest. After that, or if the app is disconnected in QuickBooks, click Authorize with Provider again. Don't use the same Intuit app in another tool at the same time: Intuit replaces the refresh token about once a day, and one of the two would be left with an old one.
Permissions and read-only setup: the scope com.intuit.quickbooks.accounting gives read and write access to the accounting data, as far as the role of the QuickBooks user who signs in allows. Intuit has no read-only accounting scope. For a read-only setup, sign in with a user whose role cannot create transactions, and disable qbo_create_customer, qbo_update_customer and qbo_create_invoice.
Switched off at install: qbo_send_invoice, which emails an invoice to the customer in your company's name, and qbo_delete_invoice. Turn them on only if the AI should send or delete invoices.
Invoices are booked at once: QuickBooks has no draft invoices. An invoice the AI creates raises the customer's balance and shows up in reports right away, but it is not emailed. Customers cannot be deleted, only made inactive.
Customer names: a customer's display name must be unique across customers, vendors and employees, and it cannot contain a colon (QuickBooks uses colons to separate sub-customers), a tab or a line break.
Common errors: 401 AuthenticationFailed (3200) means the authorization expired or was revoked, or QBO_API_URL does not match the keys: check the URL, then click Authorize with Provider again. 403 ApplicationAuthorizationFailed (3100) means the realm id belongs to a company this sign-in was not granted for, or the user's role lacks access. 400 QueryParserError means a syntax error in a query. 6240 Duplicate Name Exists Error means the display name is taken; 2040 Invalid String means a name contains a colon, a tab or a line break; 5010 Stale Object Error means the record changed in the meantime and has to be read again. 429 means the limit of 500 requests per minute was reached: wait a minute.
The connector does not handle invoice PDFs and attachments, recording payments, bank feeds, payroll or QuickBooks Desktop, and it deletes nothing except invoices.
Prerequisites: QBO_CLIENT_ID, QBO_CLIENT_SECRET, QBO_REALM_ID, QBO_API_URL
Install the connector locally
curl -fsSL https://raw.githubusercontent.com/HelpCode-ai/anythingmcp/main/docker-compose.quickstart.yml -o docker-compose.yml
printf 'JWT_SECRET=%s\nENCRYPTION_KEY=%s\n' "$(openssl rand -hex 32)" "$(openssl rand -hex 32)" > .env
docker compose up -d
Open http://localhost:3000/connectors/store, pick QuickBooks Online and paste in the env vars listed under Prerequisites.
Available tools
| Tool | What it does |
|---|---|
qbo_get_company_info | Read the connected company: CompanyName, LegalName, addresses, email, phone, Country, FiscalYearStartMonth, the company's start date and… |
qbo_query | Run a read-only QuickBooks query (SQL-like, one entity, no joins): e.g. "select * from Invoice where Balance > '0' orderby DueDate… |
qbo_get_customer | Read one customer by its Id (the numeric Id from qbo_query, not a document number or name), with contact details, addresses, Balance and… |
qbo_get_invoice | Read one invoice by its Id (the numeric Id from qbo_query, not a document number or name), with its lines, totals, Balance, due date… |
qbo_get_item | Read one item (product or service) by its Id (the numeric Id from qbo_query, not a document number or name), with prices, income and… |
qbo_get_vendor | Read one vendor by its Id (the numeric Id from qbo_query, not a document number or name), with contact details, addresses and Balance |
qbo_get_bill | Read one bill (a vendor's invoice to the company) by its Id (the numeric Id from qbo_query, not a document number or name), with its lines… |
qbo_get_payment | Read one customer payment by its Id (the numeric Id from qbo_query, not a document number or name), with the invoices it was applied to… |
qbo_create_customer | Create a customer |
qbo_update_customer | Change some fields of a customer (sparse update); fields not named keep their values |
qbo_create_invoice | Create an invoice for a customer |
qbo_send_invoice | Email an invoice to the customer as a PDF from QuickBooks, to the invoice's BillEmail or to send_to (which also becomes the invoice's… |
qbo_delete_invoice | Delete an invoice permanently (it disappears from reports; QuickBooks keeps it in the audit log) |
qbo_report_profit_and_loss | Profit and Loss report (income, cost of goods sold, expenses, net income) for a period, as QuickBooks' report JSON: Header, Columns and… |
qbo_report_balance_sheet | Balance Sheet report (assets, liabilities, equity) as of the end of a period, as QuickBooks' report JSON with nested Rows |
qbo_report_aged_receivables | Aged Receivables summary: what each customer owes, split into Current, 1-30, 31-60, 61-90 and 91+ days past due, as of report_date (default… |
qbo_report_aged_payables | Aged Payables summary: what the company owes each vendor, split into Current, 1-30, 31-60, 61-90 and 91+ days past due, as of report_date… |
Example prompts
- "Which invoices are overdue, and how much does each customer owe?"
- "Show me the Profit and Loss for this fiscal year, month by month."
- "Create an invoice for Acme Ltd: 10 hours of the Consulting service, due in 30 days."
- "Which vendor bills are more than 60 days past due?"
Next steps
Was this guide helpful?