QuickBooks Online MCP Server
Enables management of QuickBooks Online data including customers, invoices, bills, vendors, accounts, and financial reports like Profit & Loss statements through natural language queries.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@QuickBooks Online MCP Server show me all unpaid invoices from last month"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
QuickBooks Online MCP Server
A Model Context Protocol (MCP) server for QuickBooks Online integration, enabling AI assistants like Claude to query and manage QuickBooks data through natural language.
Features
Customers: List, search, and view customer details
Invoices: Create and list invoices with filtering
Bills: Track vendor bills and payables
Vendors: Manage supplier information
Accounts: View chart of accounts
Reports: Generate Profit & Loss reports
Related MCP server: QuickBooks MCP
Prerequisites
Node.js 18+
QuickBooks Online account
Intuit Developer account with OAuth app
Quick Start
1. Clone the repository
git clone https://github.com/hakeemrabiuDFW/quickbooks-mcp-server.git
cd quickbooks-mcp-server2. Install dependencies
npm install3. Configure environment
cp .env.example .envEdit .env with your QuickBooks credentials:
QUICKBOOKS_CLIENT_ID=your_client_id
QUICKBOOKS_CLIENT_SECRET=your_client_secret
QUICKBOOKS_REFRESH_TOKEN=your_refresh_token
QUICKBOOKS_COMPANY_ID=your_company_id
QUICKBOOKS_ENVIRONMENT=production4. Build and run
npm run build
npm startGetting QuickBooks Credentials
Step 1: Create Developer Account
Go to developer.intuit.com
Sign in or create account
Create a new app (select QuickBooks Online API)
Step 2: Get Client Credentials
In your app dashboard, find Client ID and Client Secret
Add OAuth redirect URI:
http://localhost:3000/callback
Step 3: Get Refresh Token
Use the OAuth Playground in Intuit Developer portal
Or use a tool like qbo-oauth-tool
Complete OAuth flow to get refresh token
Step 4: Find Company ID (Realm ID)
Log into QuickBooks Online
Company ID is in the URL:
https://qbo.intuit.com/app/...?realmId=COMPANY_ID
Claude Desktop Configuration
Add to your Claude Desktop config (~/.config/claude/claude_desktop_config.json):
{
"mcpServers": {
"quickbooks": {
"command": "node",
"args": ["/path/to/quickbooks-mcp-server/dist/index.js"],
"env": {
"QUICKBOOKS_CLIENT_ID": "your_client_id",
"QUICKBOOKS_CLIENT_SECRET": "your_client_secret",
"QUICKBOOKS_REFRESH_TOKEN": "your_refresh_token",
"QUICKBOOKS_COMPANY_ID": "your_company_id",
"QUICKBOOKS_ENVIRONMENT": "production"
}
}
}
}Available Tools
Tool | Description |
| List customers with optional filtering |
| List invoices by customer, status, or date |
| Create a new invoice |
| View chart of accounts |
| Generate P&L report |
| List vendor/suppliers |
| List bills/payables |
Example Usage
Once connected to Claude:
"Show me all open invoices"
"Create an invoice for customer ID 123 with a $500 cleaning service charge"
"Get the profit and loss report for Q4 2025"
"List all unpaid bills"HTTP Transport
To run as HTTP server instead of stdio:
TRANSPORT=http PORT=3000 npm startRailway Deployment
Deploy to Railway with one click or via CLI:
Option 1: Railway Dashboard
Fork this repository
Go to Railway and create a new project
Select "Deploy from GitHub repo"
Add environment variables in Railway dashboard:
QUICKBOOKS_CLIENT_IDQUICKBOOKS_CLIENT_SECRETQUICKBOOKS_REFRESH_TOKENQUICKBOOKS_COMPANY_IDQUICKBOOKS_ENVIRONMENT=production
Railway will auto-deploy using the included Dockerfile
Option 2: Railway CLI
# Install Railway CLI
npm install -g @railway/cli
# Login and deploy
railway login
railway init
railway upMCP Endpoint
Once deployed, your MCP endpoint will be:
https://your-app.railway.app/mcpHealth check available at:
https://your-app.railway.app/healthDocker Deployment (Local)
docker build -t quickbooks-mcp .
docker run -p 3000:3000 --env-file .env quickbooks-mcpLicense
MIT
Author
Hakeem Rabiu - Martinez Cleaning LLC
Links
Available Tools
7 toolsqbo_create_invoiceCreate QuickBooks InvoiceA
Create a new invoice in QuickBooks Online.
Args:
customer_id (required): The QuickBooks customer ID
line_items (required): Array of {description, amount, quantity}
due_date: Invoice due date (YYYY-MM-DD)
memo: Notes visible to customer
Returns: Created invoice details including Id, DocNumber, and TotalAmt
Inputs: customer_id (required), line_items (required), due_date, memo.
qbo_list_accountsList QuickBooks AccountsARead-onlyIdempotent
List chart of accounts from QuickBooks Online.
Args:
account_type: Filter by type ('all', 'Bank', 'Accounts Receivable', etc.)
response_format: 'markdown' or 'json'
Returns: Account list with: Id, Name, AccountType, CurrentBalance
Inputs: account_type, response_format.
qbo_list_billsList QuickBooks BillsARead-onlyIdempotent
List bills/payables from QuickBooks Online.
Args:
limit/offset: Pagination
vendor_id: Filter by vendor
status: 'all', 'unpaid', or 'paid'
response_format: 'markdown' or 'json'
Returns: Bill list with: Id, VendorRef, TxnDate, DueDate, TotalAmt, Balance
Inputs: limit, offset, response_format, vendor_id, +1 more.
qbo_list_customersList QuickBooks CustomersARead-onlyIdempotent
List all customers from QuickBooks Online.
Returns customer details including name, email, phone, balance, and status.
Args:
limit (number): Maximum results (default: 100, max: 1000)
offset (number): Skip results for pagination
active_only (boolean): Only active customers (default: true)
search (string): Filter by name/company
response_format: 'markdown' or 'json'
Returns: List of customers with: Id, DisplayName, PrimaryEmailAddr, PrimaryPhone, Balance, Active
Inputs: limit, offset, response_format, active_only, +1 more.
qbo_list_invoicesList QuickBooks InvoicesARead-onlyIdempotent
List invoices from QuickBooks Online with filtering options.
Args:
limit/offset: Pagination
customer_id: Filter by specific customer
status: 'all', 'open', 'paid', or 'overdue'
start_date/end_date: Date range filter (YYYY-MM-DD)
response_format: 'markdown' or 'json'
Returns: Invoice list with: Id, DocNumber, CustomerRef, TxnDate, DueDate, TotalAmt, Balance
Inputs: limit, offset, response_format, customer_id, +3 more.
qbo_list_vendorsList QuickBooks VendorsARead-onlyIdempotent
List vendors/suppliers from QuickBooks Online.
Args:
limit/offset: Pagination
active_only: Only active vendors (default: true)
response_format: 'markdown' or 'json'
Returns: Vendor list with: Id, DisplayName, Email, Phone, Balance
Inputs: limit, offset, response_format, active_only.
qbo_profit_loss_reportGet Profit & Loss ReportARead-onlyIdempotent
Generate a Profit & Loss (Income Statement) report.
Args:
start_date: Report start date (YYYY-MM-DD)
end_date: Report end date (YYYY-MM-DD)
response_format: 'markdown' or 'json'
Returns: P&L report with Income, Cost of Goods Sold, Expenses, and Net Income
Inputs: start_date (required), end_date (required), response_format.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 7 tools
Every tool has a clearly distinct purpose targeting specific QuickBooks Online resources: invoices (create and list), accounts, bills, customers, vendors, and a profit/loss report. There is no overlap in functionality—each tool serves a unique CRUD or reporting role.
All tool names follow a consistent 'qbo_verb_noun' pattern (e.g., qbo_create_invoice, qbo_list_accounts). This uniform naming convention makes the tool set predictable and easy to navigate.
With 7 tools, the count is reasonable for a QuickBooks Online server, covering core entities like invoices, customers, and reports. However, it feels slightly thin as it lacks update/delete operations for resources like invoices or bills, which are common in accounting workflows.
The tool set provides good listing and creation capabilities for key resources (invoices, customers, vendors) and a profit/loss report, but there are notable gaps. Missing update/delete tools for invoices, bills, and other entities limit full CRUD coverage, and additional reporting tools (e.g., balance sheet) would enhance completeness.
Maintenance
Related MCP Connectors
Connect QuickBooks to ChatGPT, Claude & Grok. Record bills, invoices, journal entries. Run reports.
Query your books, company data, business health, and ship invoices from your AI assistant.
Connect QuickBooks Online to AI agents with secure read or write access across multiple companies.
Read-only by architecture: ask AI about your QuickBooks data, across multiple entities at once.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceConnects AI assistants to QuickBooks Online, enabling management of invoices, customers, expenses, and reports through natural language.MIT
- AlicenseAqualityBmaintenanceEnables financial professionals to interact with QuickBooks Online using natural language for reports, journal entries, bills, expenses, and more.36356 npm14MIT
- AlicenseNot gradedqualityDmaintenanceProvides comprehensive CRUD operations for 29 QuickBooks Online entity types and 11 financial reports, enabling full accounting management through natural language.Apache 2.0
- FlicenseNot gradedqualityBmaintenanceEnables AI assistants to securely access and query QuickBooks Online accounting data through natural language, translating requests into structured queries and returning results for analysis, reporting, and financial workflows.-