Connect your AI Agents to QuickBooks Online in minutes

Merge lets you securely connect your agents to QuickBooks Online and thousands of tools instantly

Available tools

query_accounts

Query Chart of Accounts using SQL-like syntax with filters for account type and active status. Parameters: query (SQL filter), max_results (1-1000), start_position, account_type, active_only. Supports pagination.

get_account

Retrieve comprehensive account details by ID including name, type, sub-type, classification, current balance, parent account, and account number.

create_account

Create Chart of Accounts entry. Specify name, account type (Bank, Other Current Asset, Fixed Asset, etc.), account sub-type, and optional description, account number, or parent account for hierarchy.

update_account

Update account with new name, description, account number, or active status. Uses optimistic locking with sync_token. Cannot change account type.

query_bills

Query bills using SQL-like syntax with filters for vendor, date range, and payment status. Parameters: query (SQL filter), max_results (1-1000), start_position, vendor_id, status (Payable/Paid), start_date, end_date. Supports pagination.

get_bill

Retrieve comprehensive bill details by ID including vendor info, line items with account/item details, amounts, due date, and balance information.

create_bill

Create bill record for vendor with line items for expenses or items. Specify vendor, transaction date, line items with account or item details, and optional due date.

update_bill

Update bill with new vendor, line items, dates, or amounts. Uses optimistic locking with sync_token.

delete_bill

Delete bill by ID permanently. Uses optimistic locking with sync_token.

query_customers

Query customers using SQL-like syntax with filters for name, status, and balance. Parameters: query (SQL filter), max_results, start_position, active_only. Supports pagination.

get_customer

Retrieve comprehensive customer details by ID including contact info, billing and shipping addresses, payment terms, balance info, tax settings, and metadata. Parameters: customer_id (required string). Essential for customer management, invoice creation, and reporting. Requires OAuth 2.0 with accounting scope.

create_customer

Create customer with contact info, addresses, and settings. Parameters: name (required), company_name, display_name, email, phone, bill_addr, ship_addr, taxable, open_balance, open_balance_date, credit_limit. DisplayName must be unique.

update_customer

Update customer with new contact info, addresses, and settings. Uses optimistic locking with sync_token. Parameters: id (required), sync_token (required), name, company_name, email, phone, addresses, taxable, active, credit_limit.

delete_customer

Soft delete customer by setting status to inactive. Preserves historical data and transaction references. Parameters: customer_id (required), sync_token (required). Cannot delete customers with outstanding balances.

check_auth_config

Diagnostic tool to check QuickBooks authentication configuration.

query_estimates

Query estimates using SQL-like syntax with filters for customer, date range, and status. Parameters: query (SQL filter), max_results (1-1000), start_position, customer_id, status (Accepted/Closed/Pending/Rejected), start_date, end_date. Supports pagination.

get_estimate

Retrieve comprehensive estimate details by ID including customer info, line items with products/services, amounts, transaction date, expiration date, and acceptance status.

create_estimate

Create sales estimate for customer with line items. Specify customer, line items with products/services, transaction date, optional expiration date, and customer memo.

update_estimate

Update estimate with new line items, dates, customer memo, or addresses. Uses optimistic locking with sync_token.

delete_estimate

Delete estimate by ID permanently. Uses optimistic locking with sync_token.

send_estimate

Send estimate via email to customer. Specify estimate ID, recipient email address, and optional subject line and message body.

query_invoices

Query invoices using SQL-like syntax with filters for customer, status, dates, and amounts. Parameters: query (SQL filter), max_results (1-1000), start_position, customer_id, status, start_date, end_date (YYYY-MM-DD). Supports pagination for large datasets.

get_invoice

Retrieve comprehensive invoice details by ID including customer info, line items with quantities and amounts, payment status, delivery info, tax calculations, and financial totals. Parameters: invoice_id (required string). Essential for invoice management and financial analysis.

create_invoice

Create invoice with line items, customer details, and financial settings. Parameters: customer_id (required), line_items (required array), txn_date (YYYY-MM-DD), due_date, doc_number, private_note, customer_memo, email_address. Auto-calculates taxes and balances.

update_invoice

Modify existing invoice with updated line items, financial details, and settings. Supports updating customer refs, line items, dates, invoice numbers, and notes. Uses optimistic locking with sync_token. Parameters: id (required), sync_token (required), customer_id, line_items, txn_date, due_date, doc_number. Cannot update paid/voided invoices. Requires OAuth 2.0 with write permissions.

void_invoice

Void invoice while maintaining audit trail. Preserves historical records but removes from accounts receivable. Parameters: id (required), sync_token (required). Cannot void paid invoices.

send_invoice

Send invoice via email with customizable subject and message. Includes PDF and payment portal links. Parameters: invoice_id (required), email_address (required), subject, message.

query_items

Query items using SQL-like syntax with flexible filtering and pagination support. Search products and services by type (Service/Inventory/NonInventory/Category), active status, and custom SQL filters. Returns comprehensive item details including pricing, accounts, inventory tracking, and SKU information. Parameters: query (SQL filter), max_results (1-1000), start_position, item_type, active_only. Essential for inventory management, invoice line items, and product catalog operations. Requires OAuth 2.0 with com.intuit.quickbooks.accounting scope.

get_item

Retrieve comprehensive item details by ID including name, description, SKU, unit price, purchase cost, income/expense accounts, inventory tracking, and quantity on hand. Parameters: item_id (required string). Essential for invoice line item details, inventory checks, and price lookups. Requires OAuth 2.0 with com.intuit.quickbooks.accounting scope.

create_item

Create item for products/services. Requires name, type (Service/Inventory/NonInventory/Category), and type-specific accounts. Inventory needs asset_account_id. Supports inventory tracking, SKU, pricing. Type cannot be changed after creation. Essential for product catalogs and invoices.

update_item

Update item name, description, SKU, pricing, accounts, or status. Requires id and sync_token for optimistic locking. Sparse update (only provided fields change). Type cannot change after creation. Use Inventory Adjustments for quantity changes. Essential for price and status updates.

delete_item

Delete an item by marking it as inactive (soft delete). Items cannot be permanently deleted if they have been used in transactions. Inactive items are hidden from dropdowns but remain in historical records. Parameters: item_id (required), sync_token (required). Essential for item lifecycle management and catalog cleanup. Requires OAuth 2.0 with com.intuit.quickbooks.accounting scope.

query_payments

Query payments using SQL-like syntax with filters for customer, date range, and amount. Parameters: query (SQL filter), max_results (1-1000), start_position, customer_id, txn_date_start, txn_date_end. Supports pagination.

get_payment

Retrieve comprehensive payment details by ID including customer info, payment method, line items showing invoice applications, amounts applied and unapplied.

create_payment

Create payment record for customer against invoices. Specify total amount, customer, payment method, and line items linking to invoices. Auto-calculates unapplied amounts.

update_payment

Update payment with new amount, method, or invoice applications. Uses optimistic locking with sync_token.

delete_payment

Delete payment by ID. Uses optimistic locking with sync_token.

validate_credential

Validate QuickBooks Online credentials by making a test API call. Returns success status and message. Use this to verify credentials and realm ID are valid.

query_vendors

Query vendors using SQL-like syntax with filters for active status and name. Parameters: query (SQL filter), max_results (1-1000), start_position, active_only. Supports pagination.

get_vendor

Retrieve comprehensive vendor details by ID including contact information, addresses, email, phone numbers, tax identifier, balance, and 1099 status.

create_vendor

Create vendor record with display name, contact details, billing address, email, phone, tax identifier, and 1099 settings. Display name is required.

update_vendor

Update vendor with new contact details, address, email, phone, tax info, or active status. Uses optimistic locking with sync_token.

delete_vendor

Delete vendor by ID. Uses optimistic locking with sync_token.

View all tools by creating a free accountSee more tools

How to set up Merge Agent Handler

In an mcp.json file, add the configuration below, and restart Cursor.

Learn more in the official documentation ↗

1{
2  "mcpServers": {
3    "agent-handler": {
4      "url": "https://ah-api-develop.merge.dev/api/v1/tool-packs/{TOOL_PACK_ID}/registered-users/{REGISTERED_USER_ID}/mcp",
5      "headers": {
6        "Authorization": "Bearer yMt*****"
7      }
8    }
9  }
10}
11
Copy Code

Open your Claude Desktop configuration file and add the server configuration below. You'll also need to restart the application for the changes to take effect.

Make sure Claude is using the Node v20+.

Learn more in the official documentation ↗

1{
2  "mcpServers": {
3    "agent-handler": {
4      "command": "npx",
5      "args": [
6        "-y",
7        "mcp-remote@latest",
8        "https://ah-api-develop.merge.dev/api/v1/tool-packs/{TOOL_PACK_ID}/registered-users/{REGISTERED_USER_ID}/mcp",
9        "--header",
10        "Authorization: Bearer ${AUTH_TOKEN}"
11      ],
12      "env": {
13        "AUTH_TOKEN": "yMt*****"
14      }
15    }
16  }
17}
Copy Code
Copied!

Open your Windsurf MCP configuration file and add the server configuration below.
Click on the refresh button in the top right of the Manage MCP server page or in the top right of the chat box in the box icon.

Learn more in the official documentation ↗

1{
2    "mcpServers": {
3      "agent-handler": {
4        "command": "npx",
5        "args": [
6          "-y",
7          "mcp-remote@latest",
8          "https://ah-api.merge.dev/api/v1/tool-packs/<tool-pack-id>/registered-users/<registered-user-id>/mcp",
9          "--header",
10          "Authorization: Bearer ${AUTH_TOKEN}"
11        ],
12        "env": {
13          "AUTH_TOKEN": "<ah-production-access-key>"
14        }
15      }
16    }
17  }
Copy Code

In Command Palette (Cmd+Shift+P on macOS, Ctrl+Shift+P on Windows), run "MCP: Open User Configuration".

You can then add the configuration below and press "start" right under servers. Enter the auth token when prompted.

Learn more in the official documentation ↗

1{
2  "inputs": [
3    {
4      "type": "promptString",
5      "id": "agent-handler-auth",
6      "description": "Agent Handler AUTH_TOKEN", // "yMt*****" when prompt
7      "password": true
8    }
9  ],
10  "servers": {
11    "agent-handler": {
12      "type": "stdio",
13      "command": "npx",
14      "args": [
15        "-y",
16        "mcp-remote@latest",
17        "https://ah-api-develop.merge.dev/api/v1/tool-packs/{TOOL_PACK_ID}/registered-users/{REGISTERED_USER_ID}/mcp",
18        "--header",
19        "Authorization: Bearer ${input:agent-handler-auth}"
20      ]
21    }
22  }
23}
Copy Code

FAQs on using Merge's QuickBooks Online  MCP server

FAQs on using Merge's QuickBooks Online  MCP server

Explore other MCP servers built and managed by Merge

pubmed
PubMed
pylon
Pylon
quartr
Quartr
ramp
Ramp
readme
ReadMe
rootly
Rootly
sabre
Sabre
salesforce
Salesforce
sanity
Sanity
sapsf
SAP SuccessFactors
sendgrid
SendGrid
sentry
Sentry
servicenow
ServiceNow
sharepoint
SharePoint
shopify
Shopify
slack
Slack
snowflake
Snowflake
spotify
Spotify
square
Square
straker
Straker
strava
Strava
stripe
Stripe
supabase
Supabase
teamwork
Teamwork.com

Ready to try it out?

Whether you're an engineer experimenting with agents or a product manager looking to add tools, you can get started for free now