Zoho Books
Accounting
FloConnector is a hosted QuickBooks MCP server. Securely connect Claude, ChatGPT and other AI clients to QuickBooks. Ask in plain English; it runs the 163 tools for you, behind one endpoint, with you deciding what it can touch.
Beta. Connect it today and every tool below is live. It is new enough that we are still testing it against real QuickBooks accounts, so tell us if something looks off and we will fix it fast.
Premium connector. Included on the Pro and Scale plans.
Built in-house. We wrote this connector ourselves and call QuickBooks directly, with no third party in the path. Nothing in a request or response is retained by anyone but QuickBooks.
Single connection. One QuickBooks organisation per workspace. Connect another in a separate workspace.
Tools
163 tools your agent gets the moment QuickBooks is connected.
163 tools
List invoices, newest first if you order by TxnDate desc. Filter on DocNumber, TxnDate or MetaData.LastUpdatedTime (for incremental sync). Use quickbooks_run_query for filters this does not offer.
Get one invoice by Id, including its line items, balance and linked payments.
Create an invoice for a customer. Needs CustomerRef and at least one Line. QuickBooks assigns DocNumber unless you supply one.
Update an invoice. Patches only the fields you pass, leaving everything else intact.
Void an invoice: QuickBooks keeps the record and its number but zeroes the amounts and marks it Voided. This is the correct way to cancel an invoice, and unlike a delete it leaves the audit trail intact. Cannot be undone.
Email a invoice to the customer from QuickBooks. Sends to the invoice's own billing email unless send_to is given, in which case QuickBooks also updates the stored billing email. This puts a real email in the customer's inbox and cannot be undone. Sets EmailStatus to EmailSent.
List estimates (quotes). Filter on DocNumber, TxnDate or MetaData.LastUpdatedTime.
Get one estimate by Id, including its lines and status.
Create an estimate (quote) for a customer. Needs CustomerRef and at least one Line.
Update an estimate. Patches only the fields you pass. Set TxnStatus to Accepted or Rejected to move it through its lifecycle.
Delete an estimate permanently. Safe to expose because an estimate is a proposal that never posts to the general ledger — unlike an invoice, deleting one changes no financial record. Cannot be undone.
Email a estimate to the customer from QuickBooks. Sends to the estimate's own billing email unless send_to is given, in which case QuickBooks also updates the stored billing email. This puts a real email in the customer's inbox and cannot be undone. Sets EmailStatus to EmailSent.
List sales receipts — sales that were paid at the point of sale, so there is no invoice and no receivable.
Get one sales receipt by Id.
Create a sales receipt for a sale already paid for. Needs at least one Line. CustomerRef is optional for a counter sale.
Update a sales receipt. Patches only the fields you pass. QuickBooks accepts neither delete nor void on sales receipts through the API, so reversing one means zeroing its lines with this tool or issuing an offsetting refund receipt.
Email a sales receipt to the customer from QuickBooks. Sends to the sales receipt's own billing email unless send_to is given, in which case QuickBooks also updates the stored billing email. This puts a real email in the customer's inbox and cannot be undone. Sets EmailStatus to EmailSent.
List credit memos — credits issued to a customer, which can be applied against their invoices.
Get one credit memo by Id, including how much of it remains unapplied.
Create a credit memo for a customer. Needs CustomerRef and at least one Line.
Update a credit memo. Patches only the fields you pass. QuickBooks supports neither delete nor void on credit memos, so correcting one means updating it or issuing an offsetting document.
Email a credit memo to the customer from QuickBooks. Sends to the credit memo's own billing email unless send_to is given, in which case QuickBooks also updates the stored billing email. This puts a real email in the customer's inbox and cannot be undone. Sets EmailStatus to EmailSent.
List refund receipts — money actually paid back to a customer.
Get one refund receipt by Id.
Create a refund receipt, recording money paid back to a customer. Needs CustomerRef and at least one Line.
Update a refund receipt. Patches only the fields you pass.
Void a refund receipt: the record survives, the amounts go to zero. Keeps the audit trail. Cannot be undone.
Email a refund receipt to the customer from QuickBooks. Sends to the refund receipt's own billing email unless send_to is given, in which case QuickBooks also updates the stored billing email. This puts a real email in the customer's inbox and cannot be undone. Sets EmailStatus to EmailSent.
List customer payments received. Filter on TxnDate or MetaData.LastUpdatedTime.
Get one customer payment by Id, including which invoices it was applied to.
Record a payment received from a customer. Needs CustomerRef and TotalAmt. Add Line entries with LinkedTxn to apply it against specific invoices, or omit them to leave it as an unapplied credit.
Update a customer payment — most often to change which invoices it is applied against. Patches only the fields you pass. QuickBooks accepts neither delete nor void on payments through the API, so unapplying one means clearing its Line entries with this tool, which returns the invoices to outstanding.
Email a customer payment to the customer from QuickBooks. Sends to the customer payment's own billing email unless send_to is given, in which case QuickBooks also updates the stored billing email. This puts a real email in the customer's inbox and cannot be undone. Sets EmailStatus to EmailSent.
List bills owed to suppliers (accounts payable). Filter on DocNumber, TxnDate or MetaData.LastUpdatedTime.
Get one bill by Id, including its lines and outstanding balance.
Record a bill from a supplier. Needs VendorRef and at least one Line. Creates a payable — use quickbooks_create_bill_payment to pay it.
Update a bill. Patches only the fields you pass. QuickBooks supports neither delete nor void on bills, so correcting one means updating it or offsetting it with a vendor credit.
List payments made to suppliers against bills.
Get one bill payment by Id, including which bills it settled.
Pay one or more supplier bills. Needs VendorRef, TotalAmt and PayType, plus the matching CheckPayment or CreditCardPayment object. Link the bills via Line entries.
Update a bill payment — usually to change which bills it is applied against. Patches only the fields you pass. QuickBooks accepts neither delete nor void on bill payments through the API, so unwinding one means removing the Line that links the bill with this tool, which returns the bill to outstanding.
List purchase orders raised with suppliers. Filter on DocNumber, TxnDate or MetaData.LastUpdatedTime.
Get one purchase order by Id, including its lines and open/closed status.
Raise a purchase order with a supplier. Needs VendorRef and at least one Line.
Update a purchase order. Patches only the fields you pass. Set POStatus to Closed once it is fulfilled.
Delete a purchase order permanently. Safe to expose because a purchase order is a commitment document that never posts to the general ledger — deleting one changes no financial record. Cannot be undone.
Email a purchase order to the supplier from QuickBooks. Sends to the order's own POEmail unless send_to is given, in which case QuickBooks also updates the stored address. This puts a real email in the supplier's inbox and cannot be undone.
List expenses — money spent directly, without a supplier bill first (card purchases, cash, cheques).
Get one expense by Id, including its lines and funding account.
Record an expense paid directly. Needs PaymentType, AccountRef and at least one Line. Use a bill instead when the supplier invoiced you and you will pay later.
Update an expense. Patches only the fields you pass. QuickBooks supports neither delete nor void on expenses.
List vendor credits — credits a supplier has issued you, which can be applied against their bills.
Get one vendor credit by Id.
Record a credit from a supplier. Needs VendorRef and at least one Line. Apply it by linking it from a bill payment.
Update a vendor credit. Patches only the fields you pass. QuickBooks supports neither delete nor void on vendor credits.
List journal entries. Filter on DocNumber, TxnDate or MetaData.LastUpdatedTime.
Get one journal entry by Id, including every debit and credit line.
Post a journal entry. Needs at least two Lines whose debits and credits balance exactly. This writes directly to the general ledger — prefer a purpose-built transaction (invoice, bill, expense) where one fits.
Update a journal entry. Patches only the fields you pass; debits must still balance credits. QuickBooks supports neither delete nor void on journal entries.
List bank deposits.
Get one deposit by Id, including everything banked in it.
Record a bank deposit. Needs DepositToAccountRef and at least one Line. Use LinkedTxn lines to bank payments sitting in undeposited funds.
Update a deposit. Patches only the fields you pass. QuickBooks supports neither delete nor void on deposits.
List transfers between the company's own accounts.
Get one transfer by Id.
Move money between two of the company's own accounts. Needs FromAccountRef, ToAccountRef and Amount.
Update a transfer. Patches only the fields you pass. QuickBooks supports neither delete nor void on transfers.
List the chart of accounts. Filter by Name, or use quickbooks_run_query for AccountType.
Get one account by Id, including its type, balance and parent.
Add an account to the chart of accounts. Needs Name and AccountType (or AccountSubType).
Update an account. Patches only the fields you pass.
Make an account inactive. QuickBooks does not allow accounts to be deleted, so this is the only way to retire one. Every historical transaction posted to it stays intact and correct; it simply stops appearing in pickers. Reversible by updating the account with Active true.
List budgets defined in QuickBooks. Read-only — the QuickBooks API exposes no way to create or change a budget.
Get one budget by Id, including its per-period amounts by account.
List customers. Filter by name parts or BalanceWithJobs; use quickbooks_run_query for anything else.
Get one customer by Id, including their balance, addresses and terms.
Create a customer. Needs DisplayName (or name parts QuickBooks can build one from), which must be unique.
Update a customer. Patches only the fields you pass.
Make a customer inactive. QuickBooks does not allow customers to be deleted, so this is the only way to retire one. Their invoices and payment history stay intact; they simply stop appearing in pickers. Reversible by updating with Active true.
List vendors and suppliers. Filter by name parts; use quickbooks_run_query for anything else.
Get one vendor by Id, including their balance, terms and tax identifier.
Create a vendor. Needs DisplayName (or name parts), which must be unique.
Update a vendor. Patches only the fields you pass.
Make a vendor inactive. QuickBooks does not allow vendors to be deleted, so this is the only way to retire one. Their bills and payment history stay intact. Reversible by updating with Active true.
List employees recorded in QuickBooks. Filter by name parts.
Get one employee by Id, including their address and billing rate.
Create an employee record. Needs GivenName and FamilyName. This is the QuickBooks name-list record used for time tracking and expenses — it is not payroll enrolment.
Update an employee. Patches only the fields you pass.
Make an employee inactive. QuickBooks does not allow employees to be deleted, so this is the only way to retire one. Their time entries and expense history stay intact. Reversible by updating with Active true. If this fails with 'the release date cannot come before the hire date', the employee has a HiredDate and QuickBooks is refusing the release date it derives — set ReleasedDate explicitly with update_employee first, then retry.
List customer types — the categories customers can be grouped into for reporting. Read-only: QuickBooks exposes no API to create or change a customer type, so they must be set up in QuickBooks itself.
Get one customer type by Id.
List products and services. Filter by Name, Sku, Description or Type.
Get one item by Id, including its price, cost, accounts and stock level.
Create a product or service. Needs Name and Type. An Inventory item also needs IncomeAccountRef, ExpenseAccountRef, AssetAccountRef and InvStartDate; a Service or NonInventory item needs only IncomeAccountRef.
Update an item. Patches only the fields you pass. Type cannot meaningfully change once transactions reference the item.
Make an item inactive. QuickBooks does not allow items to be deleted, so this is the only way to retire one. Every past transaction using it stays intact; it just stops appearing in pickers. Reversible by updating with Active true.
List classes — the cost-centre style tags transactions can be split by. Filter by Active.
Get one class by Id.
Create a class. Needs a unique Name. Class tracking should be switched on in the company's settings for classes to appear in QuickBooks, though the API accepts a create either way.
Update a class. Patches only the fields you pass.
Make a class inactive. QuickBooks does not allow classes to be deleted; transactions already tagged with it keep the tag. Reversible by updating with Active true.
List departments — what QuickBooks shows as Locations in most regions.
Get one department by Id.
Create a department (location). Needs a unique Name. Location tracking should be switched on in the company's settings for departments to appear in QuickBooks, though the API accepts a create either way.
Update a department. Patches only the fields you pass.
Make a department inactive. QuickBooks does not allow deletion; transactions already assigned to it keep the assignment. Reversible by updating with Active true.
List payment terms. Filter by Name or Active.
Get one payment term by Id, including its due and discount days.
Create a payment term. Needs a unique Name, plus DueDays for a standard term or DayOfMonthDue for a date-driven one.
Update a payment term. Patches only the fields you pass.
Make a payment term inactive. QuickBooks does not allow deletion; documents already using it keep it. Reversible by updating with Active true.
List payment methods — how money comes in and goes out (cash, cheque, bank transfer, card).
Get one payment method by Id.
Create a payment method. Needs a unique Name.
Update a payment method. Patches only the fields you pass.
Make a payment method inactive. QuickBooks does not allow deletion; transactions already using it keep it. Reversible by updating with Active true.
List the company's tax codes. Read these before setting SalesTaxCodeRef on an item or TxnTaxDetail on a transaction — the ids are company-specific. Read-only: QuickBooks creates tax codes through a separate service, and this connector deliberately does not expose it because a wrong tax code silently mistreats every transaction that uses it.
Get one tax code by Id, including the sales and purchase tax rates it applies.
List the company's tax rates, including the percentage each applies and which agency it is remitted to. Read-only for the same reason as tax codes.
Get one tax rate by Id, including its percentage and agency.
List tax agencies — the bodies the company remits tax to.
Get one tax agency by Id.
Create a tax agency. Needs a unique DisplayName. An agency must exist before a tax code can be set up to remit to it.
Read the connected QuickBooks company: legal and trading name, addresses, fiscal year start, country and the QuickBooks edition. Useful for confirming which company file the connection points at.
Read the company's QuickBooks settings: accounting method (cash or accrual), whether class and location tracking are on, tax setup, default terms, and which features are enabled. Read this before assuming a feature is available — many fields elsewhere only work when the matching preference is on. Read-only by design; changing these is setup-admin work best done in QuickBooks itself.
List the currencies enabled on this company. Multi-currency companies only.
Get one enabled currency by Id.
Enable a currency on the company. Needs an ISO 4217 Code. Multi-currency must be switched on in the company's settings first, and once enabled a currency cannot be removed.
Update an enabled currency. Patches only the fields you pass.
Make a currency inactive. Transactions already recorded in it are unaffected. Reversible by updating with Active true.
List exchange rates QuickBooks holds. ALWAYS filter — filter on SourceCurrencyCode (e.g. 'USD') and AsOfDate ('YYYY-MM-DD'), because unfiltered this returns every rate for every currency, oldest first (the first page comes back years out of date). Note this returns rows even on a SINGLE-currency company, where they are Intuit's own reference table and mean nothing for the books. Rates carry no Id, so there is no read-by-id.
List journal codes. France-only feature — this returns nothing on companies in other regions.
Get one journal code by Id.
List attachments and standalone notes recorded against records in this company.
Get one attachment by Id, including what it is attached to.
Create an attachment record or a standalone note, and link it to a transaction via AttachableRef. This records the METADATA only — uploading file bytes is not supported by this connector yet, so use it for notes or for linking records rather than for sending documents.
Update an attachment's note, category or what it is attached to. Patches only the fields you pass.
List recurring transaction templates — the scheduled invoices, bills and journal entries QuickBooks generates automatically.
Get one recurring transaction template by Id, including its schedule.
Delete a recurring transaction template permanently. Safe to expose because this is a TEMPLATE, not a transaction: deleting it stops future occurrences and changes nothing already posted. Cannot be undone.
List reimbursable charges — billable costs waiting to be passed on to a customer.
Get one reimbursable charge by Id.
List time entries recorded against employees and contractors.
Get one time entry by Id, including hours, customer and billable status.
Record time worked. Needs NameOf plus the matching EmployeeRef or VendorRef, and TxnDate. Give either Hours and Minutes, or StartTime and EndTime. Set CustomerRef, ItemRef and BillableStatus to make it billable.
Update a time entry. Patches only the fields you pass. QuickBooks time entries have no delete here — a time entry may already have been billed to a customer or paid to an employee.
Profit and loss for a period: income, cost of sales, expenses and net profit. The headline 'how did we do' report. Use summarize_column_by 'Month' to get a monthly trend in one call.
Profit and loss broken down to individual transactions under each account. Use when a P&L figure needs explaining.
Assets, liabilities and equity as at a date. Pass end_date for the as-at date.
Cash movements for a period, grouped by operating, investing and financing activity.
Debit and credit balance of every account as at a date. The standard starting point for reconciliation and year end.
Every transaction with its debits and credits, grouped by account. Large — filter with account and a tight date range.
The chart of accounts with balances and account types.
Who owes the company money, bucketed by how overdue it is. The 'who do we chase' report.
Who the company owes money to, bucketed by how overdue it is.
Outstanding balance per customer.
Outstanding balance owed to each supplier.
Sales totals per customer for a period — who actually buys. Use summarize_column_by 'Month' for a trend. For revenue AND cost per customer instead, run get_report with 'CustomerIncome'.
Sales totals per item for a period — what actually sells, with quantity, average price and, for stocked items, COGS and gross margin.
Every transaction in a period, across all types. Filter with customer, vendor, account or a tight date range.
Run any QuickBooks report by name. Use this for reports without a dedicated tool — inventory valuation, journal, aged detail breakdowns, and the sales-by-class ('ClassSales') and sales-by-department ('DepartmentSales') cuts. Returns the raw QuickBooks report structure: Header, Columns, and a recursive Rows tree with Summary subtotal rows. Note 'TaxSummary' is a GST/VAT report and is refused on US companies.
Run a read-only QuickBooks query for filters the typed list tools do not offer. The language is SQL-like but limited: SELECT * or COUNT(*) FROM one entity, WHERE with = != < > <= >= IN LIKE, ORDERBY, STARTPOSITION (1-based) and MAXRESULTS (max 1000). No JOINs. String literals use single quotes, doubled to escape. Only fields QuickBooks marks filterable can appear in WHERE — an unfilterable one returns an error, which is how you discover what works.
Change Data Capture: everything of the given types created, updated or DELETED since a timestamp. This is the only way to learn about deletions — an ordinary query only ever returns records that still exist, so a sync built on list tools alone silently keeps rows QuickBooks has removed. The timestamp can be at most 30 days ago.
No tools match your search.
Create a FloConnector workspace, connect QuickBooks once from the dashboard, then add your FloConnector endpoint to Claude as a custom connector. Claude handles the sign-in prompt; there is no server to host and no code to write. The same endpoint works in ChatGPT.
163 tools: 88 that read QuickBooks data and 75 that change it. Every tool is listed on this page, so you can see exactly what the model is able to call before you connect.
No. FloConnector holds the QuickBooks credential, encrypted before it is stored, and calls QuickBooks on the model's behalf. The AI client only ever sees the tools and their results, never the credential behind them.
Yes. Each connection is exposed through a profile, and a profile carries only the tools you switch on. Leave the 75 write tools off and the connection is read-only.
Yes. The endpoint is a standard hosted MCP server, so it works in any client that supports MCP connectors, including Claude and ChatGPT.