io.github.laf-rge/quickbooks-mcp
NPM · QUICKBOOKS-MCP · SCANNED SEP 20
MCP server for QuickBooks Online API integration
Available components
How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score → Why this is hard to score →
Supply Chain Security89
- No malware found by supply-chain analysis.Pass
- CVE check failed: a known high-severity CVE affects uuid 8.3.2, reached via node-quickbooks > uuid. A fixed version is available. View diagnostics → Fail
- No install/post-install scripts declared.Pass
- 72 of 200 dependencies flagged as unhealthy (2 deprecated). View diagnostics → Partial
Provenance & Transparency45
- Source repository is publicly reachable at the declared URL. View diagnostics → Pass
- Provenance check failed: no build-provenance attestation is published. See how to fix → View diagnostics → Fail
- Clear OSI-approved license (MIT).Pass
- Actively maintained (last published 26 days ago).Pass
- Disclosure check failed: no security disclosure policy was found in the source repository. See how to fix → Fail
Schema Quality & AI Usability65
- AI-judged instruction clarity (excellent).Pass
- Context-footprint check failed: tool/resource definitions use about 8241 tokens (~211/item across 39 items; 39 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management93
- Stability observed for 28 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage100
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 100% of tool parameters carry a description.Pass
Tool Safety75
- No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
- 0 of 3 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation; "query" implies "execute" and declares no destructiveHint at all, which the MCP spec reads as destructive by default. See how to fix → Fail
- An AI judge read all 39 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
- Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
How do I install the io.github.laf-rge/quickbooks-mcp server?
io.github.laf-rge/quickbooks-mcp runs locally as an npm package, launched with npx -y quickbooks-mcp. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.
npm · quickbooks-mcp
claude mcp add laf-rge-quickbooks-mcp -- npx -y quickbooks-mcp
{
"mcpServers": {
"laf-rge-quickbooks-mcp": {
"command": "npx",
"args": [
"-y",
"quickbooks-mcp"
]
}
}
} {
"servers": {
"laf-rge-quickbooks-mcp": {
"command": "npx",
"args": [
"-y",
"quickbooks-mcp"
]
}
}
} codex mcp add laf-rge-quickbooks-mcp -- npx -y quickbooks-mcp
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"laf-rge-quickbooks-mcp": {
"type": "local",
"command": [
"npx",
"-y",
"quickbooks-mcp"
],
"enabled": true
}
}
} openclaw mcp add laf-rge-quickbooks-mcp --command npx --arg -y --arg quickbooks-mcp
mcp_servers:
laf-rge-quickbooks-mcp:
command: "npx"
args: ["-y", "quickbooks-mcp"] {
"McpServers": {
"laf-rge-quickbooks-mcp": {
"Transport": "stdio",
"Command": "npx",
"Arguments": [
"-y",
"quickbooks-mcp"
]
}
}
} assistant mcp add laf-rge-quickbooks-mcp -t stdio -c npx -a -y quickbooks-mcp
{
"mcpServers": {
"laf-rge-quickbooks-mcp": {
"command": "npx",
"args": [
"-y",
"quickbooks-mcp"
]
}
}
} Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 19 Sept 26 +1
- Security disclosure: unverified → fail ▼ functional
- 17 Sept 26 −2
- Stability: pass → 0.83 functional
- 16 Sept 26 +1
- Stability: 0.97 → pass security
- Security disclosure: fail → unverified ▼ functional
- 13 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 87 to 90. That category is still filling its 30-day observation window: 26 days of observed history at the previous scan, 27 at this one. The score rises as the window fills, whether or not the server changes.
- 11 Sept 26 −2
- Stability: pass → 0.83 functional
- 10 Sept 26 +1
- Stability: 0.97 → pass security
- 8 Sept 26 0
- Security disclosure: unverified → fail ▼ functional
- 7 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 87 to 90. That category is still filling its 30-day observation window: 26 days of observed history at the previous scan, 27 at this one. The score rises as the window fills, whether or not the server changes.
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 20 Sept 2026 · Analysed npm/quickbooks-mcp@0.11.0
Provenance No attestation
The registry publishes no build provenance for this version, so there is nothing to verify.
| Result | No attestation |
|---|---|
| Ecosystem | npm |
Background: How many MCP packages publish verified provenance →
Vulnerabilities 4 findings
| ID | CVE | Severity | Vector | Fix available |
|---|---|---|---|---|
| GHSA-vcc3-ghjq-m6fr | CVE-2026-45822 | medium | yes | |
| GHSA-gh4j-gqv2-49f6 | CVE-2026-41650 | medium | CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N | yes |
| GHSA-qpx9-hpmf-5gmw | CVE-2026-27601 | medium | CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:H | yes |
| GHSA-w5hq-g745-h8pq | CVE-2026-41907 | high | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:N | yes |
Background: What a vulnerability scan can and cannot prove →
Dependencies 200 packages
| Packages resolved | 200 |
|---|---|
| Deprecated | 2 |
| Stale | 71 |
| Tree resolution | Complete |
Background: SBOMs and build attestations, explained →
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →
account_period_summary ~132
Get a period summary for an account: opening balance, total debits/credits, closing balance, and transaction count. Uses the General Ledger report. Supports department filtering.
| Name | Type | Req | Description |
|---|---|---|---|
| account | string | yes | Account name, number (AcctNum), or ID |
| accounting_method | string | – | Accounting method: 'Accrual' (default) or 'Cash' |
| department | string | – | Filter to specific department/location (optional) |
| end_date | string | – | End date YYYY-MM-DD (default: today) |
| start_date | string | – | Start date YYYY-MM-DD (default: start of year) |
No output schema declared.
No examples provided.
create_bill ~331
Create a vendor bill. Accepts vendor/account/department names (will lookup IDs automatically). Note: DepartmentRef is header-level only — for multi-department splits, create separate bills (one per department). Returns bill details and a link to view in QuickBooks.
| Name | Type | Req | Description |
|---|---|---|---|
| ap_account | string | – | Accounts Payable account name or number (optional, defaults to standard AP). Only Accounts Payable-type accounts are matched. |
| department_id | string | – | Header-level department/location ID (use if you already know it, otherwise use department_name) |
| department_name | string | – | Header-level department/location name (e.g., '20358', 'Cotati'). Will be looked up to get ID. |
| doc_number | string | – | Reference number for the bill (optional) |
| draft | boolean | – | If true, validate and show preview without creating (default: true) |
| due_date | string | – | Due date in YYYY-MM-DD format (optional) |
| lines | array | yes | Array of expense line items. Provide account_name OR account_id (name preferred). Optionally provide class_name OR class_id for per-line Class tracking, and customer_name OR customer_id to attribute… |
| memo | string | – | Private memo for the bill |
| txn_date | string | yes | Transaction date in YYYY-MM-DD format |
| vendor_id | string | – | Vendor ID (use if you already know it, otherwise use vendor_name) |
| vendor_name | string | – | Vendor display name (e.g., 'Simplisafe', 'PG&E'). Will be looked up to get ID. |
No output schema declared.
No examples provided.
create_bill_payment ~333
Create a bill payment (the QBO 'check' / 'pay bills' flow). Pays one or more existing bills and optionally applies vendor credits, clearing Accounts Payable. Use this to record vendor ACH/EFT debits or checks so the bank feed can match them — especially when a bank charge equals bills minus credit memos. Amounts default to each bill's open balance and each credit's remaining balance. Returns payment details and a link to view in QuickBooks.
| Name | Type | Req | Description |
|---|---|---|---|
| bills | array | yes | Bills to pay. Each bill must belong to the vendor and have an open balance. |
| credits | array | – | Vendor credits to apply against the bills (optional). Each credit must belong to the vendor and have remaining balance. |
| doc_number | string | – | Reference number, e.g., check number or EFT reference (optional) |
| draft | boolean | – | If true, validate and show preview without creating (default: true) |
| memo | string | – | Private memo for the payment |
| payment_account | string | yes | Bank account name or number the payment is drawn from (e.g., 'PLAT BUS CHECKING', '5752'). Only Bank-type accounts are matched, so a partial name cannot resolve to an expense or liability account. |
| txn_date | string | yes | Payment date in YYYY-MM-DD format (use the bank debit date for bank-feed matching) |
| vendor_id | string | – | Vendor ID (use if you already know it, otherwise use vendor_name) |
| vendor_name | string | – | Vendor display name (e.g., 'US Foods'). Will be looked up to get ID. |
No output schema declared.
No examples provided.
create_customer ~385
Create a customer or sub-customer. Accepts name parts, contact info, addresses, and hierarchy settings. Use parent_ref to create sub-customers or jobs. Returns customer details and a link to view in QuickBooks.
| Name | Type | Req | Description |
|---|---|---|---|
| bill_address | object | – | Billing address (optional) |
| bill_with_parent | boolean | – | If true, invoices for this sub-customer are billed to the parent (default: false) |
| company_name | string | – | Company name (optional) |
| display_name | string | yes | Primary display name (must be unique in QuickBooks) |
| draft | boolean | – | If true, validate and show preview without creating (default: true) |
| string | – | Primary email address (optional) | |
| family_name | string | – | Last/family name (optional) |
| given_name | string | – | First/given name (optional) |
| job | boolean | – | Mark this customer as a job (default: false). Jobs track work for a parent customer. |
| middle_name | string | – | Middle name (optional) |
| mobile | string | – | Mobile phone number (optional) |
| notes | string | – | Notes about the customer (optional) |
| parent_ref | string | – | Parent customer name or ID to create a sub-customer or job. Will be looked up to get ID. |
| phone | string | – | Primary phone number (optional) |
| preferred_delivery_method | string | – | How invoices are delivered: Print, Email, or None |
| sales_term_ref | string | – | Default payment terms name (e.g., 'Net 30'). Will be looked up to get ID. |
| ship_address | object | – | Shipping address (optional, same shape as bill_address) |
| suffix | string | – | Name suffix, e.g., 'Jr.' (optional) |
| taxable | boolean | – | Whether the customer is taxable (optional) |
No output schema declared.
No examples provided.
create_deposit ~262
Create a bank deposit. Accepts account/department/entity names (will lookup IDs automatically). Lines represent the sources of the deposit — amounts can be positive (income) or negative (fees, deductions). Each line may name the vendor, customer, or employee it came from via entity_name/entity_type. QuickBooks computes the total from line amounts. Returns deposit details and a link to view in QuickBooks.
| Name | Type | Req | Description |
|---|---|---|---|
| department_id | string | – | Header-level department/location ID (use if you already know it, otherwise use department_name) |
| department_name | string | – | Header-level department/location name (e.g., '20358', 'Cotati'). Will be looked up to get ID. |
| deposit_to_account | string | yes | Bank account name or number receiving the deposit (e.g., 'PLAT BUS CHECKING', '5752'). Will be looked up to get ID. |
| draft | boolean | – | If true, validate and show preview without creating (default: true) |
| lines | array | yes | Array of deposit line items. Each line represents a source of the deposit. Amounts can be positive or negative. |
| memo | string | – | Private memo for the deposit |
| txn_date | string | yes | Transaction date in YYYY-MM-DD format |
No output schema declared.
No examples provided.
create_expense ~400
Create an expense (Purchase). Accepts account/department/payee names (will lookup IDs automatically). Covers Cash, Check, and Credit Card payment types. The payee may be a vendor, customer, or employee — set entity_type to say which (defaults to Vendor). Note: PaymentType cannot be changed after creation. DepartmentRef is header-level only. Returns expense details and a link to view in QuickBooks.
| Name | Type | Req | Description |
|---|---|---|---|
| department_id | string | – | Header-level department/location ID (use if you already know it, otherwise use department_name) |
| department_name | string | – | Header-level department/location name (e.g., '20358', 'Cotati'). Will be looked up to get ID. |
| doc_number | string | – | Reference number for the expense (optional) |
| draft | boolean | – | If true, validate and show preview without creating (default: true) |
| entity_id | string | – | Payee ID (use if you already know it, otherwise use entity_name) |
| entity_name | string | – | Payee display name (e.g., 'Acme Supply Co'). Will be looked up to get ID; use entity_type to say which name list it belongs to. |
| entity_type | string | – | Which name list entity_name/entity_id refers to. Defaults to Vendor. |
| lines | array | yes | Array of expense line items. Provide account_name OR account_id (name preferred). Optionally provide customer_name OR customer_id to attribute the line to a customer. |
| memo | string | – | Private memo for the expense |
| payment_account | string | yes | Bank or credit card account name or number (e.g., 'PLAT BUS CHECKING', '5752'). Will be looked up to get ID. |
| payment_type | string | yes | Payment method: 'Cash', 'Check', or 'CreditCard'. Cannot be changed after creation. |
| txn_date | string | yes | Transaction date in YYYY-MM-DD format |
No output schema declared.
No examples provided.
create_invoice ~434
Create an invoice. Accepts item/customer/department names (will lookup IDs automatically). Either customer_name or customer_id is REQUIRED — invoices must have a customer. Lines use SalesItemLineDetail (product/service references, not accounts). Returns invoice details and a link to view in QuickBooks.
| Name | Type | Req | Description |
|---|---|---|---|
| allow_online_ach_payment | boolean | – | Allow customer to pay this invoice via bank transfer (ACH) online. Must be explicitly set — company defaults do not apply via API. |
| allow_online_credit_card_payment | boolean | – | Allow customer to pay this invoice with a credit card online. Must be explicitly set — company defaults do not apply via API. |
| bill_email | string | – | Email address to send the invoice to. Required if you want QuickBooks to email the invoice. |
| customer_id | string | – | Customer ID (use if you already know it, otherwise use customer_name) |
| customer_memo | string | – | Customer-facing message visible on the invoice |
| customer_name | string | – | Customer display name (e.g., 'Cash Sales'). Will be looked up to get ID. |
| department_id | string | – | Header-level department/location ID (use if you already know it, otherwise use department_name) |
| department_name | string | – | Header-level department/location name (e.g., '20358', 'Cotati'). Will be looked up to get ID. |
| doc_number | string | – | Reference number for the invoice (optional) |
| draft | boolean | – | If true, validate and show preview without creating (default: true) |
| due_date | string | – | Due date in YYYY-MM-DD format (optional) |
| lines | array | yes | Array of line items. Each line references an item (product/service). Provide item_name OR item_id (name preferred). |
| memo | string | – | Private memo for the invoice (internal, not visible to customer) |
| sales_term_ref | string | – | Payment terms name (e.g., 'Net 30', 'Due on receipt'). Will be looked up to get ID. |
| txn_date | string | yes | Transaction date in YYYY-MM-DD format |
No output schema declared.
No examples provided.
create_journal_entry ~192
Create a journal entry. Accepts account/department/entity names (will lookup IDs automatically). Validates debits=credits before creating. Lines may carry an entity (vendor, customer, or employee) — QuickBooks requires one on any line posting to Accounts Receivable or Accounts Payable. Returns entry details and a link to view in QuickBooks.
| Name | Type | Req | Description |
|---|---|---|---|
| doc_number | string | – | Journal number (shown as 'Journal no.' in QuickBooks). If not specified, QuickBooks will auto-assign the next number. |
| draft | boolean | – | If true, validate and show preview without creating (default: true) |
| lines | array | yes | Array of line items. Provide account_name OR account_id (name preferred). Optionally provide department_name OR department_id. |
| memo | string | – | Private memo for the journal entry |
| txn_date | string | yes | Transaction date in YYYY-MM-DD format |
No output schema declared.
No examples provided.
create_sales_receipt ~288
Create a sales receipt. Accepts item/customer/department names (will lookup IDs automatically). Lines reference items (products/services) not accounts. Returns receipt details and a link to view in QuickBooks.
| Name | Type | Req | Description |
|---|---|---|---|
| customer_id | string | – | Customer ID (use if you already know it, otherwise use customer_name) |
| customer_name | string | – | Customer display name (e.g., 'Cash Sales'). Will be looked up to get ID. |
| department_id | string | – | Header-level department/location ID (use if you already know it, otherwise use department_name) |
| department_name | string | – | Header-level department/location name (e.g., '20358', 'Cotati'). Will be looked up to get ID. |
| deposit_to_account | string | – | Bank account name or number to deposit into (e.g., 'Undeposited Funds', '1000'). Will be looked up to get ID. |
| doc_number | string | – | Reference number for the sales receipt (optional) |
| draft | boolean | – | If true, validate and show preview without creating (default: true) |
| lines | array | yes | Array of line items. Each line references an item (product/service). Provide item_name OR item_id (name preferred). |
| memo | string | – | Private memo for the sales receipt |
| txn_date | string | yes | Transaction date in YYYY-MM-DD format |
No output schema declared.
No examples provided.
create_transfer ~210
Move money between two of the company's own accounts (QuickBooks 'Transfer') — bank to bank, or a credit-card paydown. Use this rather than create_expense, which would book the outflow as an expense and never touch the receiving account, or create_journal_entry, which posts the right result but does not read as a transfer in the register or the bank-feed match screen. Defaults to draft: true for a preview.
| Name | Type | Req | Description |
|---|---|---|---|
| amount | number | yes | Amount to move. Must be positive; reverse the accounts rather than passing a negative. |
| draft | boolean | – | Preview without recording. Default true. |
| from_account | string | yes | Account the money leaves. Bank or Credit Card only — name, number, or ID. |
| private_note | string | – | Private note on the transfer. |
| to_account | string | yes | Account the money arrives in. Bank or Credit Card only — name, number, or ID. |
| txn_date | string | yes | Transfer date, YYYY-MM-DD. |
No output schema declared.
No examples provided.
create_vendor_credit ~267
Create a vendor credit. Accepts vendor/account/department names (will lookup IDs automatically). Lines represent credit amounts applied to expense accounts. Returns credit details and a link to view in QuickBooks.
| Name | Type | Req | Description |
|---|---|---|---|
| ap_account | string | – | Accounts Payable account name or number (optional, defaults to standard AP). Only Accounts Payable-type accounts are matched. |
| department_id | string | – | Header-level department/location ID (use if you already know it, otherwise use department_name) |
| department_name | string | – | Header-level department/location name (e.g., '20358', 'Cotati'). Will be looked up to get ID. |
| doc_number | string | – | Reference number for the vendor credit (optional) |
| draft | boolean | – | If true, validate and show preview without creating (default: true) |
| lines | array | yes | Array of line items. Each line credits an expense account. |
| memo | string | – | Private memo for the vendor credit |
| txn_date | string | yes | Transaction date in YYYY-MM-DD format |
| vendor_id | string | – | Vendor ID (use if you already know it, otherwise use vendor_name) |
| vendor_name | string | – | Vendor display name (e.g., 'Acme Corp'). Will be looked up to get ID. |
No output schema declared.
No examples provided.
delete_entity ~133
Permanently delete a QuickBooks transaction. Supports journal entries, bills, invoices, deposits, sales receipts, expenses, vendor credits, bill payments, and attachments. Uses a two-step flow: first call previews what will be deleted, second call with confirm=true executes the deletion. Note: Customers cannot be deleted — use edit_customer with active=false to deactivate instead.
| Name | Type | Req | Description |
|---|---|---|---|
| confirm | boolean | – | If true, execute the deletion. If false (default), show a preview of what will be deleted. |
| entity_type | string | yes | The type of entity to delete. |
| id | string | yes | The entity ID to delete. |
No output schema declared.
No examples provided.
edit_bill ~256
Modify an existing bill. Can update vendor, date, due date, memo, and/or lines. For lines: provide line_id to update existing line, omit to add new line, set delete=true to remove. A line_id preserves the line's existing customer unless customer_name/customer_id is given; pass customer_name: "" to clear it. Note: DepartmentRef is header-level only — lines do not support department.
| Name | Type | Req | Description |
|---|---|---|---|
| department_name | string | – | Header-level department/location name (auto-resolved to ID) |
| doc_number | string | – | Reference number for the bill (optional) |
| draft | boolean | – | If true, validate and show preview without saving (default: true) |
| due_date | string | – | New due date in YYYY-MM-DD format (optional) |
| id | string | yes | Bill ID to edit |
| lines | array | – | Line modifications. Provide line_id to update existing, omit to add new. |
| memo | string | – | New private memo (optional) |
| txn_date | string | – | New transaction date in YYYY-MM-DD format (optional) |
| vendor_name | string | – | New vendor display name (e.g., 'Simplisafe', 'PG&E'). Auto-resolved to ID. |
No output schema declared.
No examples provided.
edit_customer ~369
Modify an existing customer. Can update name, contact info, addresses, notes, taxable status, active status, hierarchy (parent/sub-customer), delivery method, and payment terms. Set active=false to deactivate (QuickBooks equivalent of delete).
| Name | Type | Req | Description |
|---|---|---|---|
| active | boolean | – | Set to false to deactivate customer (QuickBooks equivalent of delete) |
| bill_address | object | – | New billing address |
| bill_with_parent | boolean | – | Bill this sub-customer with its parent |
| company_name | string | – | New company name |
| display_name | string | – | New display name (must be unique in QuickBooks) |
| draft | boolean | – | If true, validate and show preview without saving (default: true) |
| string | – | New primary email address | |
| family_name | string | – | New last/family name |
| given_name | string | – | New first/given name |
| id | string | yes | Customer ID to edit |
| job | boolean | – | Mark as a job (tracks work for a parent customer) |
| middle_name | string | – | New middle name |
| mobile | string | – | New mobile phone number |
| notes | string | – | New notes about the customer |
| parent_ref | string | – | Parent customer name or ID (makes this a sub-customer). Auto-resolved to ID. |
| phone | string | – | New primary phone number |
| preferred_delivery_method | string | – | How invoices are delivered: Print, Email, or None |
| sales_term_ref | string | – | Default payment terms name (e.g., 'Net 30'). Auto-resolved to ID. |
| ship_address | object | – | New shipping address |
| suffix | string | – | New name suffix |
| taxable | boolean | – | Whether the customer is taxable |
No output schema declared.
No examples provided.
edit_deposit ~352
Modify an existing deposit. Can update date, memo, deposit account, department, and/or lines. CRITICAL for line changes: The QB Deposit API does NOT replace lines - it merges them. Lines WITH line_id update existing lines. Lines WITHOUT line_id are ADDED as new. Lines NOT included are KEPT unchanged. To 'delete' a line, you must include ALL existing lines with their line_ids and set unwanted lines to amount: 0. Line amounts must sum to the original deposit total (use expected_total to override for corrupted deposits). Entity (vendor/customer/employee) can be set on any line, new or existing, via entity_name/entity_type; a line_id with no entity input keeps whatever entity the line already had.
| Name | Type | Req | Description |
|---|---|---|---|
| department_name | string | – | Header-level department/location name (auto-resolved to ID) |
| deposit_to_account | string | – | New deposit account name/number (Bank account) |
| draft | boolean | – | If true, validate and show preview without saving (default: true) |
| expected_total | number | – | Override total validation with this expected amount (for fixing corrupted deposits). Lines must sum to this value instead of current deposit total. |
| id | string | yes | Deposit ID to edit |
| lines | array | – | IMPORTANT: You MUST include ALL existing lines with their line_ids. Lines without line_id are ADDED (not replaced). Lines not included are KEPT (not deleted). To 'delete' a line, set its amount to 0.… |
| memo | string | – | New private memo (optional) |
| txn_date | string | – | New transaction date in YYYY-MM-DD format (optional) |
No output schema declared.
No examples provided.
edit_expense ~274
Modify an existing expense (Purchase). Can update date, memo, payment account, payee, and/or lines. The payee may be a vendor, customer, or employee — set entity_type to say which (defaults to Vendor). Note: PaymentType (Cash/Check/CreditCard) cannot be changed after creation.
| Name | Type | Req | Description |
|---|---|---|---|
| department_name | string | – | Header-level department/location name (auto-resolved to ID) |
| draft | boolean | – | If true, validate and show preview without saving (default: true) |
| entity_id | string | – | Payee ID (use if you already know it, otherwise use entity_name) |
| entity_name | string | – | Payee display name. Will be looked up to get ID; use entity_type to say which name list it belongs to. |
| entity_type | string | – | Which name list entity_name/entity_id refers to. Defaults to Vendor. |
| id | string | yes | Expense (Purchase) ID to edit |
| lines | array | – | Line modifications. Provide line_id to update existing, omit to add new. |
| memo | string | – | New private memo (optional) |
| payment_account | string | – | New payment account name/number (Bank or Credit Card account) |
| txn_date | string | – | New transaction date in YYYY-MM-DD format (optional) |
No output schema declared.
No examples provided.
edit_invoice ~306
Modify an existing invoice. Can update date, due date, memo, customer, department, terms, email, online payment settings, and/or lines. For lines: provide line_id to update existing line, omit line_id to add new line (requires item_name), set delete=true to remove.
| Name | Type | Req | Description |
|---|---|---|---|
| allow_online_ach_payment | boolean | – | Allow customer to pay via bank transfer (ACH) online |
| allow_online_credit_card_payment | boolean | – | Allow customer to pay with credit card online |
| bill_email | string | – | New email address to send the invoice to |
| customer_memo | string | – | New customer-facing message visible on the invoice |
| customer_name | string | – | New customer display name (auto-resolved to ID) |
| department_name | string | – | Header-level department/location name (auto-resolved to ID) |
| draft | boolean | – | If true, validate and show preview without saving (default: true) |
| due_date | string | – | New due date in YYYY-MM-DD format (optional) |
| id | string | yes | Invoice ID to edit |
| lines | array | – | Line modifications. Provide line_id to update existing line, omit to add new line. |
| memo | string | – | New private memo (optional) |
| sales_term_ref | string | – | Payment terms name (e.g., 'Net 30'). Auto-resolved to ID. |
| txn_date | string | – | New transaction date in YYYY-MM-DD format (optional) |
No output schema declared.
No examples provided.
edit_journal_entry ~189
Modify an existing journal entry. Can update date, memo, doc_number, and/or lines. For lines: provide line_id to update existing line, omit line_id to add new line, set delete=true to remove a line. A line_id preserves the line's existing entity unless entity_name/entity_id is given; pass entity_name: "" to clear it. Validates debits=credits before saving.
| Name | Type | Req | Description |
|---|---|---|---|
| doc_number | string | – | New journal number (optional) |
| draft | boolean | – | If true, validate and show preview without saving (default: true) |
| id | string | yes | Journal entry ID to edit |
| lines | array | – | Line modifications. Provide line_id to update existing line, omit to add new line. |
| memo | string | – | New private memo (optional) |
| txn_date | string | – | New transaction date in YYYY-MM-DD format (optional) |
No output schema declared.
No examples provided.
edit_sales_receipt ~214
Modify an existing sales receipt. Can update date, memo, customer, deposit account, department, and/or lines. For lines: provide line_id to update existing line, omit line_id to add new line (requires item_name), set delete=true to remove.
| Name | Type | Req | Description |
|---|---|---|---|
| customer_name | string | – | Customer name (auto-resolved to ID). Also used to restore a customer that was cleared by an earlier edit. |
| department_name | string | – | Header-level department/location name (auto-resolved to ID) |
| deposit_to_account | string | – | New deposit account name/number (Bank account) |
| draft | boolean | – | If true, validate and show preview without saving (default: true) |
| id | string | yes | Sales receipt ID to edit |
| lines | array | – | Line modifications. Provide line_id to update existing line, omit to add new line. |
| memo | string | – | New private memo (optional) |
| txn_date | string | – | New transaction date in YYYY-MM-DD format (optional) |
No output schema declared.
No examples provided.
edit_vendor_credit ~218
Modify an existing vendor credit. Can update vendor, date, memo, ref number, and/or lines. For lines: provide line_id to update existing line, omit line_id to add new line (requires amount and account_name), set delete=true to remove. A line_id preserves the line's existing customer unless customer_name/customer_id is given; pass customer_name: "" to clear it. Note: DepartmentRef is header-level only — lines do not support department.
| Name | Type | Req | Description |
|---|---|---|---|
| doc_number | string | – | New reference number (optional) |
| draft | boolean | – | If true, validate and show preview without saving (default: true) |
| id | string | yes | Vendor Credit ID to edit |
| lines | array | – | Line modifications. Provide line_id to update existing line, omit to add new line. |
| memo | string | – | New private memo (optional) |
| txn_date | string | – | New transaction date in YYYY-MM-DD format (optional) |
| vendor_name | string | – | New vendor display name (auto-resolved to ID) |
No output schema declared.
No examples provided.
get_balance_sheet ~275
Get a Balance Sheet report. Can be broken down by department/location.
| Name | Type | Req | Description |
|---|---|---|---|
| accounting_method | string | – | Accounting method: 'Accrual' (default) or 'Cash' |
| as_of_date | string | – | Report as of this date in YYYY-MM-DD format (defaults to today) |
| columns | string | – | 'total' (default) shows only the total column. 'all' renders every column as a table — use with summarize_by to see per-department (or per-month) values, which are otherwise absent from the rendered… |
| department | string | – | Filter to a specific department/location ID |
| detail_level | string | – | 'summary' (default) returns section totals only. 'account' also lists each account with its balance, so you do not have to open the full report file. |
| include_raw | boolean | – | Append the full raw report payload. Off by default: the rendered summary already carries the numbers, and the raw copy roughly doubles the response. Only needed for fields the summary does not render. |
| summarize_by | string | – | How to summarize columns: 'Total' (default), 'Month', 'Week', 'Days', 'Quarter', 'Year', 'Customers', 'Vendors', 'Classes', 'Departments', 'Employees', 'ProductsAndServices' |
No output schema declared.
No examples provided.
get_bill ~51
Fetch a single bill by ID with full details including SyncToken (needed for edits). Returns vendor, date, due date, amount, AP account, line details.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | The bill ID |
No output schema declared.
No examples provided.
get_bill_payment ~68
Fetch a single bill payment by ID with full details including SyncToken. Shows vendor, date, pay type, bank account, linked bills/credits with applied amounts, and flags any unapplied amount (payment total not matching net applied lines).
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | The bill payment ID |
No output schema declared.
No examples provided.
get_company_info ~18
Get information about the connected QuickBooks company.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
get_customer ~56
Fetch a single customer by ID with full details including SyncToken (needed for edits). Returns name, contact info, addresses, balance, hierarchy (parent/sub-customer), and active status.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | The customer ID |
No output schema declared.
No examples provided.
get_deposit ~53
Fetch a single deposit by ID with full details including SyncToken (needed for edits). Returns deposit account, date, memo, and line details showing source accounts and amounts.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | The deposit ID |
No output schema declared.
No examples provided.
get_expense ~61
Fetch a single expense (Purchase) by ID with full details including SyncToken. Covers Expenses, Checks, and Credit Card charges. Returns payment type, account, date, amount, line details.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | The expense (Purchase) ID |
No output schema declared.
No examples provided.
get_invoice ~56
Fetch a single invoice by ID with full details including SyncToken (needed for edits). Returns customer, date, due date, balance, department, line details with items/qty/price.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | The invoice ID |
No output schema declared.
No examples provided.
get_journal_entry ~50
Fetch a single journal entry by ID with full details including SyncToken (needed for edits). Returns formatted summary and writes full object to temp file.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | The journal entry ID |
No output schema declared.
No examples provided.
get_profit_loss ~287
Get a Profit and Loss (Income Statement) report. Can be broken down by department/location.
| Name | Type | Req | Description |
|---|---|---|---|
| accounting_method | string | – | Accounting method: 'Accrual' (default) or 'Cash' |
| columns | string | – | 'total' (default) shows only the total column. 'all' renders every column as a table — use with summarize_by to see per-department (or per-month) values, which are otherwise absent from the rendered… |
| department | string | – | Filter to a specific department/location ID |
| detail_level | string | – | 'summary' (default) returns section totals only. 'account' also lists each account with its balance, so you do not have to open the full report file. |
| end_date | string | – | End date in YYYY-MM-DD format |
| include_raw | boolean | – | Append the full raw report payload. Off by default: the rendered summary already carries the numbers, and the raw copy roughly doubles the response. Only needed for fields the summary does not render. |
| start_date | string | – | Start date in YYYY-MM-DD format |
| summarize_by | string | – | How to summarize columns: 'Total' (default), 'Month', 'Week', 'Days', 'Quarter', 'Year', 'Customers', 'Vendors', 'Classes', 'Departments', 'Employees', 'ProductsAndServices' |
No output schema declared.
No examples provided.
get_report ~355
Run a QuickBooks report that has no dedicated tool: A/R and A/P aging, customer and vendor balances, transaction lists, general ledger, journal, sales by customer/item/class/department, cash flow, and detail variants. Answers what is outstanding and how old it is, which the entity query tools cannot — a report sees postings that carry no account reference in entity JSON. Profit and Loss, Balance Sheet and Trial Balance have their own tools.
| Name | Type | Req | Description |
|---|---|---|---|
| accounting_method | string | – | Default Accrual. |
| customer | string | – | Customer name or ID. |
| date_macro | string | – | Named period instead of dates, e.g. 'Last Month'. |
| department | string | – | Department/location name or ID. |
| detail_level | string | – | 'summary' (default) prints section headers and subtotals; 'full' adds the leaf rows nested under them, which on a detail report is thousands. Top-level rows always print, so a flat report is complete… |
| end_date | string | – | YYYY-MM-DD. |
| include_raw | boolean | – | Append the raw report payload. Off by default; the table already carries the numbers. |
| max_rows | number | – | Rendered row cap, default 200, max 2000. |
| report | string | yes | QuickBooks' own spelling ('AgedPayables') is accepted too. |
| report_date | string | – | YYYY-MM-DD as-of date for the aging, balance and inventory reports; rejected on the rest. |
| start_date | string | – | YYYY-MM-DD. Range reports only. |
| summarize_by | string | – | Column breakdown, where the report supports it. |
| vendor | string | – | Vendor name or ID. |
No output schema declared.
No examples provided.
get_sales_receipt ~58
Fetch a single sales receipt by ID with full details including SyncToken (needed for edits). Returns customer, date, deposit account, department, line details with items/qty/price.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | The sales receipt ID |
No output schema declared.
No examples provided.
get_trial_balance ~231
Get a Trial Balance report. Useful for month-end close and reconciliation. Note: Trial Balance does not support department/location breakdown in QuickBooks Online.
| Name | Type | Req | Description |
|---|---|---|---|
| accounting_method | string | – | Accounting method: 'Accrual' (default) or 'Cash' |
| end_date | string | – | End date in YYYY-MM-DD format |
| flags | boolean | – | If true, append a close-review pass over the report: accounts carrying a balance on the wrong side (an asset or expense with a credit, a liability/equity/income with a debit), and uncategorized/suspe… |
| include_raw | boolean | – | Append the full raw report payload. Off by default: the rendered account/debit/credit table already carries the numbers, and the raw copy roughly doubles the response. |
| start_date | string | – | Start date in YYYY-MM-DD format |
No output schema declared.
No examples provided.
get_vendor_credit ~60
Fetch a single vendor credit by ID with full details including SyncToken (needed for edits). Returns vendor, date, memo, ref number, AP account, and line details showing expense accounts and amounts.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | The vendor credit ID |
No output schema declared.
No examples provided.
list_accounts ~116
List all accounts in the chart of accounts. Returns AcctNum (the user-facing account number), Name, AccountType, AccountSubType, and CurrentBalance. Use AcctNum to reference accounts in other queries or operations.
| Name | Type | Req | Description |
|---|---|---|---|
| account_type | string | – | Optional filter by account type (e.g., 'Bank', 'Expense', 'Income', 'Other Current Asset', 'Fixed Asset', 'Other Current Liability', 'Equity') |
| active_only | boolean | – | If true, only return active accounts (default: true) |
No output schema declared.
No examples provided.
qbo_authenticate ~128
Authenticate with QuickBooks using OAuth (local credential mode only). Step 1: Call with no arguments to get the authorization URL. Step 2: After authorizing in browser, call with authorization_code and realm_id from the callback URL. This tool only works when QBO_CREDENTIAL_MODE is 'local' (the default).
| Name | Type | Req | Description |
|---|---|---|---|
| authorization_code | string | – | Authorization code from the QuickBooks OAuth callback URL (the 'code' parameter) |
| realm_id | string | – | Company/realm ID from the callback URL (the 'realmId' parameter). Required when providing authorization_code. |
No output schema declared.
No examples provided.
query ~191
Execute a QuickBooks query using SQL-like syntax. Supports querying any entity type (Customer, Vendor, Invoice, Bill, Account, Item, Department, etc.). Results are written to a file to preserve context. Defaults to MAXRESULTS 1000 if not specified. Examples: 'SELECT * FROM Customer', 'SELECT * FROM SalesReceipt WHERE TxnDate >= \'2025-11-01\' AND TxnDate <= \'2025-11-30\''
| Name | Type | Req | Description |
|---|---|---|---|
| query | string | yes | The SQL-like query string, e.g. SELECT * FROM Bill WHERE TxnDate >= '2026-01-01'. Any queryable QBO entity works. Add MAXRESULTS N to limit results (default: 1000). Most transaction fields (Departmen… |
No output schema declared.
No examples provided.
query_account_transactions ~262
Query all transactions affecting a specific account, across all 13 posting transaction types. Returns a consolidated list with date, type, amount (debit/credit), and description. Useful for investigating account balance discrepancies. Note: the A/R side of invoices, credit memos, and payments has no account reference in QBO's data model and cannot appear here — use account_period_summary for A/R totals.
| Name | Type | Req | Description |
|---|---|---|---|
| account | string | yes | Account name, number (AcctNum), or ID. Examples: 'Tips', '2320', '116' |
| department | string | – | Filter to specific department/location (optional) |
| end_date | string | – | End date YYYY-MM-DD (default: today) |
| include_subaccounts | boolean | – | Also match transactions posting to sub-accounts of this account (default: false). Needed to reconcile against account_period_summary, which always rolls sub-accounts into the parent. |
| limit | number | – | Max transactions returned in detail. Totals always cover the whole period regardless of this. |
| offset | number | – | Skip this many transactions (default: 0). Page through long results using the offset the previous call reports. |
| start_date | string | – | Start date YYYY-MM-DD (default: start of year) |
No output schema declared.
No examples provided.
receive_payment ~320
Record a customer payment against one or more open invoices (QuickBooks 'Receive Payment'), clearing Accounts Receivable. This is the A/R counterpart to create_bill_payment. Not a deposit — create_deposit banks money without settling an invoice — and not a sales receipt, which records a sale that was paid outright and never had an invoice. Defaults to draft: true for a preview.
| Name | Type | Req | Description |
|---|---|---|---|
| amount | number | – | Payment total. Defaults to the sum applied to invoices. A larger figure is allowed and leaves the difference as an unapplied credit on the customer; a smaller one is rejected. |
| customer_id | string | – | Customer ID. Either this or customer_name. |
| customer_name | string | – | Customer display name. Either this or customer_id. |
| deposit_to_account | string | – | Bank account, or Undeposited Funds. Omit to let QuickBooks use its own default, which is normally Undeposited Funds. |
| draft | boolean | – | Preview without recording. Default true — shows each invoice's open balance, what is being applied, and what remains. |
| invoices | array | yes | Invoices to settle. Each amount defaults to that invoice's open balance, so the common case needs only the id. |
| memo | string | – | Private note on the payment. |
| payment_method | string | – | Payment method name or ID, e.g. 'Check', 'Cash', 'EFT'. |
| reference_no | string | – | Check number or ACH reference. |
| txn_date | string | yes | Payment date, YYYY-MM-DD. |
No output schema declared.
No examples provided.
What is the io.github.laf-rge/quickbooks-mcp server?
io.github.laf-rge/quickbooks-mcp is listed in the public MCP registry as io.github.laf-rge/quickbooks-mcp. MCP server for QuickBooks Online API integration. This page covers its npm package (quickbooks-mcp).
Is the io.github.laf-rge/quickbooks-mcp server safe to use?
io.github.laf-rge/quickbooks-mcp scores 77 out of 100 on VerifyMCP. We recorded 4 known advisories against it as of 20 September 2026. It declares no install or post-install scripts. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.
What tools does the io.github.laf-rge/quickbooks-mcp server expose?
io.github.laf-rge/quickbooks-mcp exposes 39 tools: qbo_authenticate, get_company_info, query, list_accounts, get_profit_loss, and 34 more. Their descriptions and schemas cost roughly 8,241 tokens of context every time the server is loaded.
Is the io.github.laf-rge/quickbooks-mcp server still maintained?
io.github.laf-rge/quickbooks-mcp is still listed as active in the MCP registry. We last reached this channel on 20 September 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.
What licence is the io.github.laf-rge/quickbooks-mcp server under?
io.github.laf-rge/quickbooks-mcp declares the MIT licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.