atmon docs

REFERENCE/TOOLKITS/QUICKBOOKS.MD

QuickBooks

Accounting. Manage customers, vendors, items, and accounts, send invoices and bills, record payments, and pull financial reports.

PropertyValue
Slugquickbooks
Definition version0.1.0
Base URLhttps://quickbooks.api.intuit.com
Auth schemesoauth2
Action tools39
By class19 read, 14 write, 6 destructive
Triggers0
Provider rate limit500 requests per 1m, per account

Measured routing accuracy

53 golden cases replayed through the router over the whole index: measured over corpus ea4f12ad2948 (65 toolkits, 2283 tools indexed and 13 declared uncallable), 39 cases written by hand and 14 cases from the paraphrase pass. A case counts as top-1 when its gold tool ranked first and top-8 when it reached the slate at all.

MeasureCasesShare
top-140/5375.5%
top-846/5386.8%

The sweep is offline: the reranker is a deterministic identity fake that returns candidates in the order retrieval produced them, so top-1 measures retrieval order rather than a reranked slate. just eval-live measures the same cases through the live reranker.

Authentication

Connect an entity with ConnectionsService.InitiateConnection, naming this toolkit's slug. Credentials stay in the connections vault; callers hold connected-account ids only.

oauth2

PropertyValue
Authorization URLhttps://appcenter.intuit.com/connect/oauth2
Token URLhttps://oauth.platform.intuit.com/oauth2/v1/tokens/bearer
Default scopescom.intuit.quickbooks.accounting
Refresh tokensyes, the refresh daemon renews ahead of expiry

Tools

39 action tools. The catalog-wide slug is quickbooks.<tool>, which is what search_tools returns and call_tool takes.

quickbooks.create_customer

Create a new QuickBooks customer: someone you invoice or collect payment from. Use when the user wants to add, register, or set up a new customer or client before billing them. Requires a display name; email, phone, company name, and billing address are optional.

Class write (writes, no confirmation needed). No scopes beyond the connection's defaults. Calls POST /v3/company/{{params.realm_id}}/customer.

Arguments:

ArgumentTypeRequiredNotes
billing_addressobjectnoBilling address, e.g. {"line1": "500 Elm St", "city": "Austin", "region": "TX", "postal_code": "78701"}.
company_namestringnoCompany name, for a business customer.
display_namestringyesName shown on invoices and lists, e.g. "Jane Doe" or "Acme Co".
emailstringnoCustomer's email address, e.g. "jane@example.com".
family_namestringnoCustomer's last name, for an individual.
given_namestringnoCustomer's first name, for an individual.
phonestringnoCustomer's phone number.
realm_idstringyesQuickBooks company id (realm id) the request is scoped to.

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
Activeboolean
Balancenumber
DisplayNamestring
Idstring
PrimaryEmailAddrobject
PrimaryEmailAddr.Addressstring
SyncTokenstring

Also retrieved by: "add jane doe as a new client we can bill", "set up this buyer's contact card", "I need a record for someone before I invoice them", "onboard a new account into the books", "start a file for a new client".

quickbooks.get_customer

Get one QuickBooks customer's record by id: name, contact details, billing address, and open balance. Use when the user names a specific customer or client. For finding one by name or browsing all of them, use list_customers.

Class read (reads only). No scopes beyond the connection's defaults. Calls GET /v3/company/{{params.realm_id}}/customer/{{params.customer_id}}.

Arguments:

ArgumentTypeRequiredNotes
customer_idstringyesQuickBooks customer id, e.g. "24".
realm_idstringyesQuickBooks company id (realm id) the request is scoped to.

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
Activeboolean
Balancenumber
BillAddrobject
BillAddr.Citystring
BillAddr.Line1string
CompanyNamestring
DisplayNamestring
Idstring
PrimaryEmailAddrobject
PrimaryEmailAddr.Addressstring
PrimaryPhoneobject
PrimaryPhone.FreeFormNumberstring
SyncTokenstring

Also retrieved by: "pull up what we have on file for this client", "what does this buyer still owe us", "check their contact details in the books", "look up one specific client's record".

quickbooks.list_customers

Search or list QuickBooks customers using QuickBooks' own query language, e.g. "SELECT * FROM Customer WHERE Active = true MAXRESULTS 20". Use when the user asks who our customers are, wants to find one by name, or browses the customer list. For one known customer, use get_customer.

Class read (reads only). No scopes beyond the connection's defaults. Calls GET /v3/company/{{params.realm_id}}/query.

Arguments:

ArgumentTypeRequiredNotes
querystringyesFull QuickBooks query statement against the Customer table, e.g. "SELECT * FROM Customer WHERE Balance > '0' MAXRESULTS 20".
realm_idstringyesQuickBooks company id (realm id) the request is scoped to.

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
QueryResponseobject
QueryResponse.Customerarray of object
QueryResponse.Customer[].Activeboolean
QueryResponse.Customer[].Balancenumber
QueryResponse.Customer[].CompanyNamestring
QueryResponse.Customer[].DisplayNamestring
QueryResponse.Customer[].Idstring

Also retrieved by: "who are our clients right now", "find the buyer with this name", "show everyone we bill", "search the client list", "which of our clients still have money owed to us".

quickbooks.update_customer

Edit an existing QuickBooks customer's name, contact details, or billing address. Use when the user wants to update, correct, or change a customer's record, not add a new one. Requires the customer's current sync_token, from get_customer or list_customers, to prevent overwriting a concurrent change.

Class write (writes, no confirmation needed). No scopes beyond the connection's defaults. Calls POST /v3/company/{{params.realm_id}}/customer.

Arguments:

ArgumentTypeRequiredNotes
billing_addressobjectnoNew billing address, replacing the one on file.
customer_idstringyesQuickBooks customer id to update.
display_namestringnoNew display name.
emailstringnoNew email address.
phonestringnoNew phone number.
realm_idstringyesQuickBooks company id (realm id) the request is scoped to.
sync_tokenstringyesCurrent SyncToken on the customer record, e.g. "3".

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
DisplayNamestring
Idstring
SyncTokenstring

Also retrieved by: "fix the email we have for this client", "their phone number changed", "correct the mailing address on file", "change what's saved for this account".

quickbooks.deactivate_customer

Deactivate a QuickBooks customer, hiding it from lists and dropdowns without deleting its transaction history. QuickBooks does not support hard-deleting a customer with open transactions; this is the irreversible-in-practice way to remove one. Use when the user wants to delete, remove, or get rid of a customer record. Requires the customer's current sync_token.

Class destructive (held by the mutation gate until the call's own arguments carry "confirm": true). No scopes beyond the connection's defaults. Calls POST /v3/company/{{params.realm_id}}/customer.

Arguments:

ArgumentTypeRequiredNotes
customer_idstringyesQuickBooks customer id to deactivate.
realm_idstringyesQuickBooks company id (realm id) the request is scoped to.
sync_tokenstringyesCurrent SyncToken on the customer record.

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
Activeboolean
Idstring

Also retrieved by: "hide this client, we're done working with them", "remove them from the active client list", "archive an old account we no longer bill", "take this buyer off our books for good", "we're not doing business with this account anymore, hide it from view".

quickbooks.create_vendor

Create a new QuickBooks vendor: a supplier or contractor you owe bills to. Use when the user wants to add, register, or set up a new vendor or supplier before billing against them. Requires a display name; email, phone, company name, and billing address are optional.

Class write (writes, no confirmation needed). No scopes beyond the connection's defaults. Calls POST /v3/company/{{params.realm_id}}/vendor.

Arguments:

ArgumentTypeRequiredNotes
billing_addressobjectnoVendor's billing address, e.g. {"line1": "12 Dock Rd", "city": "Reno", "region": "NV", "postal_code": "89501"}.
company_namestringnoCompany name, for a business vendor.
display_namestringyesName shown on bills and lists, e.g. "Acme Supply Co".
emailstringnoVendor's email address.
phonestringnoVendor's phone number.
realm_idstringyesQuickBooks company id (realm id) the request is scoped to.

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
Activeboolean
Balancenumber
DisplayNamestring
Idstring
PrimaryEmailAddrobject
PrimaryEmailAddr.Addressstring
SyncTokenstring

Also retrieved by: "add a new supplier we'll owe money to", "register a contractor before we get their first bill", "set up a new supplier's contact card", "onboard a company we're going to pay".

quickbooks.get_vendor

Get one QuickBooks vendor's record by id: name, contact details, billing address, and amount owed. Use when the user names a specific vendor or supplier. For finding one by name or browsing all of them, use list_vendors.

Class read (reads only). No scopes beyond the connection's defaults. Calls GET /v3/company/{{params.realm_id}}/vendor/{{params.vendor_id}}.

Arguments:

ArgumentTypeRequiredNotes
realm_idstringyesQuickBooks company id (realm id) the request is scoped to.
vendor_idstringyesQuickBooks vendor id, e.g. "56".

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
Activeboolean
Balancenumber
CompanyNamestring
DisplayNamestring
Idstring
PrimaryEmailAddrobject
PrimaryEmailAddr.Addressstring
SyncTokenstring

Also retrieved by: "what do we owe this supplier", "pull up a contractor's contact details", "check the record for one specific supplier".

quickbooks.list_vendors

Search or list QuickBooks vendors using QuickBooks' own query language, e.g. "SELECT * FROM Vendor WHERE Active = true MAXRESULTS 20". Use when the user asks who our vendors or suppliers are, wants to find one by name, or browses the vendor list. For one known vendor, use get_vendor.

Class read (reads only). No scopes beyond the connection's defaults. Calls GET /v3/company/{{params.realm_id}}/query.

Arguments:

ArgumentTypeRequiredNotes
querystringyesFull QuickBooks query statement against the Vendor table, e.g. "SELECT * FROM Vendor WHERE Active = true MAXRESULTS 20".
realm_idstringyesQuickBooks company id (realm id) the request is scoped to.

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
QueryResponseobject
QueryResponse.Vendorarray of object
QueryResponse.Vendor[].Activeboolean
QueryResponse.Vendor[].Balancenumber
QueryResponse.Vendor[].DisplayNamestring
QueryResponse.Vendor[].Idstring

Also retrieved by: "who do we buy from", "find the supplier with this name", "show every contractor we pay".

quickbooks.update_vendor

Edit an existing QuickBooks vendor's name, contact details, or billing address. Use when the user wants to update, correct, or change a vendor's record, not add a new one. Requires the vendor's current sync_token, from get_vendor or list_vendors.

Class write (writes, no confirmation needed). No scopes beyond the connection's defaults. Calls POST /v3/company/{{params.realm_id}}/vendor.

Arguments:

ArgumentTypeRequiredNotes
billing_addressobjectnoNew billing address, replacing the one on file.
display_namestringnoNew display name.
emailstringnoNew email address.
phonestringnoNew phone number.
realm_idstringyesQuickBooks company id (realm id) the request is scoped to.
sync_tokenstringyesCurrent SyncToken on the vendor record.
vendor_idstringyesQuickBooks vendor id to update.

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
DisplayNamestring
Idstring
SyncTokenstring

Also retrieved by: "fix the contact info for a supplier", "this contractor's address changed", "correct what's saved for a vendor account".

quickbooks.deactivate_vendor

Deactivate a QuickBooks vendor, hiding it from lists and dropdowns without deleting its bill history. QuickBooks does not support hard-deleting a vendor with existing bills; this is the irreversible-in-practice way to remove one. Use when the user wants to delete, remove, or get rid of a vendor record. Requires the vendor's current sync_token.

Class destructive (held by the mutation gate until the call's own arguments carry "confirm": true). No scopes beyond the connection's defaults. Calls POST /v3/company/{{params.realm_id}}/vendor.

Arguments:

ArgumentTypeRequiredNotes
realm_idstringyesQuickBooks company id (realm id) the request is scoped to.
sync_tokenstringyesCurrent SyncToken on the vendor record.
vendor_idstringyesQuickBooks vendor id to deactivate.

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
Activeboolean
Idstring

Also retrieved by: "hide this supplier, we stopped using them", "archive a contractor we no longer pay", "remove this vendor from the active list", "we're not placing orders with this account anymore, hide it from view".

quickbooks.create_item

Create a new QuickBooks item: a product or service line you sell, shown on invoices and bills. Use when the user wants to add a new product, service, or SKU to the price list. Requires a name, item type, and the income account it posts sales to.

Class write (writes, no confirmation needed). No scopes beyond the connection's defaults. Calls POST /v3/company/{{params.realm_id}}/item.

Arguments:

ArgumentTypeRequiredNotes
descriptionstringnoText shown on invoices and bills for this item.
expense_account_idstringnoQuickBooks expense account id purchases of this item post to.
income_account_idstringyesQuickBooks income account id sales of this item post to.
namestringyesItem name, e.g. "Consulting - Hourly".
realm_idstringyesQuickBooks company id (realm id) the request is scoped to.
typestring, one of Service, Inventory, NonInventoryyesWhat kind of item this is.
unit_pricenumbernoDefault sales price per unit.

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
Activeboolean
Idstring
Namestring
SyncTokenstring
Typestring
UnitPricenumber

Also retrieved by: "add a new service to the price list", "set up a product we sell with its price", "register a new SKU customers can be billed for", "add a line we can put on invoices".

quickbooks.get_item

Get one QuickBooks item by id: its type, sales price, and linked income account. Use when the user names a specific product, service, or SKU. For finding one by name or browsing the price list, use list_items.

Class read (reads only). No scopes beyond the connection's defaults. Calls GET /v3/company/{{params.realm_id}}/item/{{params.item_id}}.

Arguments:

ArgumentTypeRequiredNotes
item_idstringyesQuickBooks item id, e.g. "19".
realm_idstringyesQuickBooks company id (realm id) the request is scoped to.

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
Activeboolean
Descriptionstring
Idstring
Namestring
SyncTokenstring
Typestring
UnitPricenumber

Also retrieved by: "what's the price on this service", "pull up one product's details", "check a specific SKU's info".

quickbooks.list_items

Search or list QuickBooks items using QuickBooks' own query language, e.g. "SELECT * FROM Item WHERE Type = 'Service'". Use when the user asks what products or services are on the price list, or wants to find one by name. For one known item, use get_item.

Class read (reads only). No scopes beyond the connection's defaults. Calls GET /v3/company/{{params.realm_id}}/query.

Arguments:

ArgumentTypeRequiredNotes
querystringyesFull QuickBooks query statement against the Item table, e.g. "SELECT * FROM Item WHERE Active = true MAXRESULTS 20".
realm_idstringyesQuickBooks company id (realm id) the request is scoped to.

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
QueryResponseobject
QueryResponse.Itemarray of object
QueryResponse.Item[].Activeboolean
QueryResponse.Item[].Idstring
QueryResponse.Item[].Namestring
QueryResponse.Item[].Typestring
QueryResponse.Item[].UnitPricenumber

Also retrieved by: "what's on our price list", "show every service we offer", "find a product by its name".

quickbooks.update_item

Edit an existing QuickBooks item's name, price, or description. Use when the user wants to reprice, rename, or update a product or service, not add a new one. Requires the item's current sync_token, from get_item or list_items.

Class write (writes, no confirmation needed). No scopes beyond the connection's defaults. Calls POST /v3/company/{{params.realm_id}}/item.

Arguments:

ArgumentTypeRequiredNotes
descriptionstringnoNew text shown on invoices and bills for this item.
item_idstringyesQuickBooks item id to update.
namestringnoNew item name.
realm_idstringyesQuickBooks company id (realm id) the request is scoped to.
sync_tokenstringyesCurrent SyncToken on the item record.
unit_pricenumbernoNew default sales price per unit.

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
Idstring
Namestring
SyncTokenstring
UnitPricenumber

Also retrieved by: "change the price on this service", "rename a product on the price list", "fix the description for a SKU".

quickbooks.create_account

Create a new account on the QuickBooks chart of accounts. Use when the user wants to add a new bank, income, expense, or other ledger account to book transactions against. Requires a name and account type.

Class write (writes, no confirmation needed). No scopes beyond the connection's defaults. Calls POST /v3/company/{{params.realm_id}}/account.

Arguments:

ArgumentTypeRequiredNotes
account_sub_typestringnoMore specific QuickBooks sub-type, e.g. "SuppliesMaterials".
account_typestringyesQuickBooks account type, e.g. "Bank", "Accounts Receivable", "Expense", "Income", "Cost of Goods Sold", "Other Current Asset", "Credit Card", "Equity".
descriptionstringnoInternal note describing what this account is for.
namestringyesAccount name, e.g. "Office Supplies".
realm_idstringyesQuickBooks company id (realm id) the request is scoped to.

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
AccountTypestring
Activeboolean
CurrentBalancenumber
Idstring
Namestring
SyncTokenstring

Also retrieved by: "add a new ledger line for tracking spend", "open a new bank account in the books", "set up a fresh expense category".

quickbooks.get_account

Get one QuickBooks chart-of-accounts entry by id: its type, sub-type, and current balance. Use when the user names a specific account. For browsing the whole chart of accounts, use list_accounts.

Class read (reads only). No scopes beyond the connection's defaults. Calls GET /v3/company/{{params.realm_id}}/account/{{params.account_id}}.

Arguments:

ArgumentTypeRequiredNotes
account_idstringyesQuickBooks account id, e.g. "35".
realm_idstringyesQuickBooks company id (realm id) the request is scoped to.

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
AccountSubTypestring
AccountTypestring
Activeboolean
CurrentBalancenumber
Idstring
Namestring
SyncTokenstring

Also retrieved by: "what's the balance on this ledger entry", "pull up one specific account's details", "check the current balance on a bank account".

quickbooks.list_accounts

Search or list the QuickBooks chart of accounts using QuickBooks' own query language, e.g. "SELECT * FROM Account WHERE AccountType = 'Expense'". Use when the user asks what accounts exist, wants the chart of accounts, or needs an account's balance. For one known account, use get_account.

Class read (reads only). No scopes beyond the connection's defaults. Calls GET /v3/company/{{params.realm_id}}/query.

Arguments:

ArgumentTypeRequiredNotes
querystringyesFull QuickBooks query statement against the Account table, e.g. "SELECT * FROM Account WHERE Active = true MAXRESULTS 50".
realm_idstringyesQuickBooks company id (realm id) the request is scoped to.

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
QueryResponseobject
QueryResponse.Accountarray of object
QueryResponse.Account[].AccountTypestring
QueryResponse.Account[].Activeboolean
QueryResponse.Account[].CurrentBalancenumber
QueryResponse.Account[].Idstring
QueryResponse.Account[].Namestring

Also retrieved by: "show the chart of accounts", "what accounts exist in the books", "find a ledger entry by its type".

quickbooks.create_invoice

Create a new QuickBooks invoice billing a customer for one or more line items. Use when the user wants to invoice, bill, or charge a customer for goods or services sold. Requires a customer and at least one line item with an amount.

Class write (writes, no confirmation needed). No scopes beyond the connection's defaults. Calls POST /v3/company/{{params.realm_id}}/invoice.

Arguments:

ArgumentTypeRequiredNotes
billing_emailstringnoEmail address the invoice will be sent to, if sent later.
customer_idstringyesQuickBooks customer id being billed.
doc_numberstringnoCustom invoice number, if not left to auto-numbering.
due_datestringnoPayment due date, "YYYY-MM-DD".
line_itemsarray of objectyesInvoice lines. Each needs an amount, e.g. [{"item_id": "5", "quantity": 2, "unit_price": 75, "amount": 150, "description": "Consulting hours"}].
line_items[].amountnumberyesLine total.
line_items[].descriptionstringno
line_items[].item_idstringnoQuickBooks item id billed on this line.
line_items[].quantitynumberno
line_items[].unit_pricenumberno
memostringnoPrivate memo, not shown to the customer.
realm_idstringyesQuickBooks company id (realm id) the request is scoped to.
txn_datestringnoInvoice date, "YYYY-MM-DD". Defaults to today.

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
Balancenumber
CustomerRefobject
CustomerRef.valuestring
DocNumberstring
DueDatestring
Idstring
SyncTokenstring
TotalAmtnumber

Also retrieved by: "bill this client for the hours worked", "charge a customer for goods delivered", "draft a bill for services rendered", "start a new bill for a client with line items".

quickbooks.get_invoice

Get one QuickBooks invoice by id: its line items, total, balance due, and due date. Use when the user names a specific invoice or asks whether it has been paid. For a customer's open invoices generally, use list_invoices.

Class read (reads only). No scopes beyond the connection's defaults. Calls GET /v3/company/{{params.realm_id}}/invoice/{{params.invoice_id}}.

Arguments:

ArgumentTypeRequiredNotes
invoice_idstringyesQuickBooks invoice id, e.g. "142".
realm_idstringyesQuickBooks company id (realm id) the request is scoped to.

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
Balancenumber
CustomerRefobject
CustomerRef.namestring
CustomerRef.valuestring
DocNumberstring
DueDatestring
Idstring
Linearray of object
Line[].Amountnumber
Line[].Descriptionstring
SyncTokenstring
TotalAmtnumber

Also retrieved by: "has this bill been paid yet", "pull up one specific bill sent to a client", "what's still owed on this bill".

quickbooks.list_invoices

Search or list QuickBooks invoices using QuickBooks' own query language, e.g. "SELECT * FROM Invoice WHERE Balance > '0' ORDER BY DueDate". Use when the user asks about a customer's invoices, unpaid bills owed to us, or overall invoice history. For one known invoice, use get_invoice.

Class read (reads only). No scopes beyond the connection's defaults. Calls GET /v3/company/{{params.realm_id}}/query.

Arguments:

ArgumentTypeRequiredNotes
querystringyesFull QuickBooks query statement against the Invoice table, e.g. "SELECT * FROM Invoice WHERE CustomerRef = '24' MAXRESULTS 20".
realm_idstringyesQuickBooks company id (realm id) the request is scoped to.

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
QueryResponseobject
QueryResponse.Invoicearray of object
QueryResponse.Invoice[].Balancenumber
QueryResponse.Invoice[].DocNumberstring
QueryResponse.Invoice[].DueDatestring
QueryResponse.Invoice[].Idstring
QueryResponse.Invoice[].TotalAmtnumber

Also retrieved by: "what's outstanding from our clients", "show every unpaid bill we've sent", "pull up a client's billing history".

quickbooks.update_invoice

Edit an existing QuickBooks invoice's line items, due date, or memo. Use when the user wants to correct or change an invoice that has not been paid. Requires the invoice's current sync_token, from get_invoice or list_invoices. To email it, use send_invoice; to kill it entirely, use void_invoice or delete_invoice.

Class write (writes, no confirmation needed). No scopes beyond the connection's defaults. Calls POST /v3/company/{{params.realm_id}}/invoice.

Arguments:

ArgumentTypeRequiredNotes
due_datestringnoNew payment due date, "YYYY-MM-DD".
invoice_idstringyesQuickBooks invoice id to update.
line_itemsarray of objectnoReplacement line items for the whole invoice.
line_items[].amountnumberyes
line_items[].descriptionstringno
line_items[].item_idstringno
line_items[].quantitynumberno
line_items[].unit_pricenumberno
memostringnoNew private memo, not shown to the customer.
realm_idstringyesQuickBooks company id (realm id) the request is scoped to.
sync_tokenstringyesCurrent SyncToken on the invoice record.

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
Balancenumber
Idstring
SyncTokenstring
TotalAmtnumber

Also retrieved by: "fix the line items on a bill we sent", "change the due date on an open bill", "correct a mistake on a client's bill".

quickbooks.send_invoice

Email a QuickBooks invoice to the customer for payment. Use when the user wants to send, deliver, mail, or email an invoice to whoever owes it. Defaults to the email on the customer's record; give send_to to override it for this send only.

Class write (writes, no confirmation needed). No scopes beyond the connection's defaults. Calls POST /v3/company/{{params.realm_id}}/invoice/{{params.invoice_id}}/send.

Arguments:

ArgumentTypeRequiredNotes
invoice_idstringyesQuickBooks invoice id to email.
realm_idstringyesQuickBooks company id (realm id) the request is scoped to.
send_tostringnoEmail address to send to instead of the invoice's billing email.

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
EmailStatusstring
Idstring

Also retrieved by: "email this bill to the client", "get the invoice out to whoever owes it", "deliver the bill so they can pay".

quickbooks.void_invoice

Void a QuickBooks invoice, zeroing its amount while keeping it on record for the audit trail. Irreversible; the invoice number is not reused. Use when the user wants to void, cancel, or invalidate an invoice that was sent by mistake but should stay on the books at zero. To remove it from the books entirely, use delete_invoice instead. Requires the invoice's current sync_token.

Class destructive (held by the mutation gate until the call's own arguments carry "confirm": true). No scopes beyond the connection's defaults. Calls POST /v3/company/{{params.realm_id}}/invoice.

Arguments:

ArgumentTypeRequiredNotes
invoice_idstringyesQuickBooks invoice id to void.
realm_idstringyesQuickBooks company id (realm id) the request is scoped to.
sync_tokenstringyesCurrent SyncToken on the invoice record.

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
Idstring
SyncTokenstring
TotalAmtnumber

Also retrieved by: "zero out a bill we sent by mistake but keep it on record", "kill a bill's amount without erasing the paper trail", "invalidate this invoice, keep it for the audit".

quickbooks.delete_invoice

Permanently delete a QuickBooks invoice from the books. Irreversible. Use when the user wants to delete or completely remove an invoice that should never have existed, not just cancel one that stays on record. For that, use void_invoice instead. Requires the invoice's current sync_token.

Class destructive (held by the mutation gate until the call's own arguments carry "confirm": true). No scopes beyond the connection's defaults. Calls POST /v3/company/{{params.realm_id}}/invoice.

Arguments:

ArgumentTypeRequiredNotes
invoice_idstringyesQuickBooks invoice id to delete.
realm_idstringyesQuickBooks company id (realm id) the request is scoped to.
sync_tokenstringyesCurrent SyncToken on the invoice record.

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
Idstring
deletedboolean

Also retrieved by: "scrap a bill that never should have existed", "get rid of this invoice completely", "erase a bill entered by accident".

quickbooks.create_bill

Record a new QuickBooks bill: money owed to a vendor for goods or services received. Use when the user wants to enter, log, or record a bill from a supplier or contractor, before paying it. Requires a vendor and at least one line item with an amount.

Class write (writes, no confirmation needed). No scopes beyond the connection's defaults. Calls POST /v3/company/{{params.realm_id}}/bill.

Arguments:

ArgumentTypeRequiredNotes
doc_numberstringnoVendor's own bill or reference number.
due_datestringnoPayment due date, "YYYY-MM-DD".
line_itemsarray of objectyesBill lines. Each needs an amount, e.g. [{"account_id": "64", "amount": 250, "description": "Office supplies"}].
line_items[].account_idstringnoQuickBooks expense account id this line posts to.
line_items[].amountnumberyes
line_items[].descriptionstringno
line_items[].item_idstringnoQuickBooks item id this line is for, instead of an account.
memostringnoPrivate memo about this bill.
realm_idstringyesQuickBooks company id (realm id) the request is scoped to.
txn_datestringnoBill date, "YYYY-MM-DD". Defaults to today.
vendor_idstringyesQuickBooks vendor id the bill is owed to.

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
Balancenumber
DocNumberstring
DueDatestring
Idstring
SyncTokenstring
TotalAmtnumber
VendorRefobject
VendorRef.valuestring

Also retrieved by: "log what we owe this supplier", "enter a charge from a contractor before we pay it", "record money owed for materials received", "jot down a dollar amount we owe a supplier for office supplies".

quickbooks.get_bill

Get one QuickBooks bill by id: its line items, total, balance due, and due date. Use when the user names a specific bill or asks whether it has been paid. For what we owe in general, use list_bills.

Class read (reads only). No scopes beyond the connection's defaults. Calls GET /v3/company/{{params.realm_id}}/bill/{{params.bill_id}}.

Arguments:

ArgumentTypeRequiredNotes
bill_idstringyesQuickBooks bill id, e.g. "88".
realm_idstringyesQuickBooks company id (realm id) the request is scoped to.

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
Balancenumber
DocNumberstring
DueDatestring
Idstring
Linearray of object
Line[].Amountnumber
Line[].Descriptionstring
SyncTokenstring
TotalAmtnumber
VendorRefobject
VendorRef.namestring
VendorRef.valuestring

Also retrieved by: "has this supplier's charge been paid", "pull up what we owe on one specific bill", "check the due date on a charge from a contractor".

quickbooks.list_bills

Search or list QuickBooks bills using QuickBooks' own query language, e.g. "SELECT * FROM Bill WHERE Balance > '0' ORDER BY DueDate". Use when the user asks what we owe, which vendor bills are unpaid, or wants a bill history. For one known bill, use get_bill.

Class read (reads only). No scopes beyond the connection's defaults. Calls GET /v3/company/{{params.realm_id}}/query.

Arguments:

ArgumentTypeRequiredNotes
querystringyesFull QuickBooks query statement against the Bill table, e.g. "SELECT * FROM Bill WHERE VendorRef = '56' MAXRESULTS 20".
realm_idstringyesQuickBooks company id (realm id) the request is scoped to.

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
QueryResponseobject
QueryResponse.Billarray of object
QueryResponse.Bill[].Balancenumber
QueryResponse.Bill[].DocNumberstring
QueryResponse.Bill[].DueDatestring
QueryResponse.Bill[].Idstring
QueryResponse.Bill[].TotalAmtnumber

Also retrieved by: "what do we currently owe our suppliers", "show every unpaid charge from vendors", "pull up our accounts payable".

quickbooks.update_bill

Edit an existing QuickBooks bill's line items, due date, or memo. Use when the user wants to correct or change a bill that has not been paid. Requires the bill's current sync_token, from get_bill or list_bills.

Class write (writes, no confirmation needed). No scopes beyond the connection's defaults. Calls POST /v3/company/{{params.realm_id}}/bill.

Arguments:

ArgumentTypeRequiredNotes
bill_idstringyesQuickBooks bill id to update.
due_datestringnoNew payment due date, "YYYY-MM-DD".
line_itemsarray of objectnoReplacement line items for the whole bill.
line_items[].account_idstringno
line_items[].amountnumberyes
line_items[].descriptionstringno
line_items[].item_idstringno
memostringnoNew private memo about this bill.
realm_idstringyesQuickBooks company id (realm id) the request is scoped to.
sync_tokenstringyesCurrent SyncToken on the bill record.

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
Balancenumber
Idstring
SyncTokenstring
TotalAmtnumber

Also retrieved by: "fix the due date on a charge from a supplier", "correct the amount owed on this bill", "change the line items on a charge from a contractor".

quickbooks.delete_bill

Permanently delete a QuickBooks bill from the books. Irreversible. Use when the user wants to delete, remove, or scrap a bill entered by mistake, whether or not it has been paid. Requires the bill's current sync_token.

Class destructive (held by the mutation gate until the call's own arguments carry "confirm": true). No scopes beyond the connection's defaults. Calls POST /v3/company/{{params.realm_id}}/bill.

Arguments:

ArgumentTypeRequiredNotes
bill_idstringyesQuickBooks bill id to delete.
realm_idstringyesQuickBooks company id (realm id) the request is scoped to.
sync_tokenstringyesCurrent SyncToken on the bill record.

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
Idstring
deletedboolean

Also retrieved by: "scrap a charge that was entered by mistake", "get rid of this vendor bill completely", "erase a supplier's charge that shouldn't exist".

quickbooks.create_payment

Record a QuickBooks payment received from a customer, optionally applied against one or more open invoices. Use when the user wants to record, log, or apply a payment, deposit, or check received from a customer. For paying a vendor's bill instead, use create_bill_payment.

Class write (writes, no confirmation needed). No scopes beyond the connection's defaults. Calls POST /v3/company/{{params.realm_id}}/payment.

Arguments:

ArgumentTypeRequiredNotes
applied_invoicesarray of objectnoInvoices this payment pays down, e.g. [{"invoice_id": "142", "amount": 150}]. Omit to leave the payment unapplied.
applied_invoices[].amountnumberyesAmount of this payment applied to that invoice.
applied_invoices[].invoice_idstringyesQuickBooks invoice id being paid.
customer_idstringyesQuickBooks customer id the payment came from.
deposit_to_account_idstringnoQuickBooks account id the money is deposited to, e.g. a bank account or Undeposited Funds. Defaults to Undeposited Funds.
payment_datestringnoDate the payment was received, "YYYY-MM-DD". Defaults to today.
payment_methodstringnoFree-text payment method, e.g. "Check", "Credit Card".
realm_idstringyesQuickBooks company id (realm id) the request is scoped to.
total_amountnumberyesTotal amount received.

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
Idstring
SyncTokenstring
TotalAmtnumber
TxnDatestring
UnappliedAmtnumber

Also retrieved by: "log a check we got from a client", "record money a customer sent us", "apply what a client paid against their open bill", "mark a deposit as received from a buyer".

quickbooks.get_payment

Get one QuickBooks customer payment by id: amount, date, and which invoices it was applied to. Use when the user asks whether a specific payment was recorded or how it was applied. For a customer's payment history generally, use list_payments.

Class read (reads only). No scopes beyond the connection's defaults. Calls GET /v3/company/{{params.realm_id}}/payment/{{params.payment_id}}.

Arguments:

ArgumentTypeRequiredNotes
payment_idstringyesQuickBooks payment id, e.g. "201".
realm_idstringyesQuickBooks company id (realm id) the request is scoped to.

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
CustomerRefobject
CustomerRef.valuestring
Idstring
SyncTokenstring
TotalAmtnumber
TxnDatestring
UnappliedAmtnumber

Also retrieved by: "did this client's payment actually go through", "pull up details on money we received", "check whether a deposit cleared".

quickbooks.list_payments

Search or list QuickBooks customer payments using QuickBooks' own query language, e.g. "SELECT * FROM Payment WHERE CustomerRef = '24'". Use when the user asks what a customer has paid, or wants recent payment history. For one known payment, use get_payment.

Class read (reads only). No scopes beyond the connection's defaults. Calls GET /v3/company/{{params.realm_id}}/query.

Arguments:

ArgumentTypeRequiredNotes
querystringyesFull QuickBooks query statement against the Payment table, e.g. "SELECT * FROM Payment WHERE TotalAmt > '100'".
realm_idstringyesQuickBooks company id (realm id) the request is scoped to.

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
QueryResponseobject
QueryResponse.Paymentarray of object
QueryResponse.Payment[].Idstring
QueryResponse.Payment[].TotalAmtnumber
QueryResponse.Payment[].TxnDatestring
QueryResponse.Payment[].UnappliedAmtnumber

Also retrieved by: "what has this client paid us so far", "show recent money coming in from customers", "pull a buyer's deposit history".

quickbooks.delete_payment

Permanently delete a QuickBooks customer payment, un-applying it from any invoices it was linked to. Irreversible; those invoices become unpaid again. Use when the user wants to delete, remove, or undo a payment entered by mistake or duplicated. Requires the payment's current sync_token.

Class destructive (held by the mutation gate until the call's own arguments carry "confirm": true). No scopes beyond the connection's defaults. Calls POST /v3/company/{{params.realm_id}}/payment.

Arguments:

ArgumentTypeRequiredNotes
payment_idstringyesQuickBooks payment id to delete.
realm_idstringyesQuickBooks company id (realm id) the request is scoped to.
sync_tokenstringyesCurrent SyncToken on the payment record.

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
Idstring
deletedboolean

Also retrieved by: "undo a payment that was entered twice", "remove a deposit logged by mistake, the bill goes back to unpaid", "reverse money we recorded from a client in error".

quickbooks.create_bill_payment

Pay a QuickBooks vendor bill, in full or in part, from a bank account. Use when the user wants to pay a vendor, settle a bill, or cut a check against money owed to a supplier. For recording a payment a customer sent us instead, use create_payment.

Class write (writes, no confirmation needed). No scopes beyond the connection's defaults. Calls POST /v3/company/{{params.realm_id}}/billpayment.

Arguments:

ArgumentTypeRequiredNotes
applied_billsarray of objectnoBills this payment pays down, e.g. [{"bill_id": "88", "amount": 250}]. Omit to leave the payment unapplied.
applied_bills[].amountnumberyesAmount of this payment applied to that bill.
applied_bills[].bill_idstringyesQuickBooks bill id being paid.
bank_account_idstringyesQuickBooks account id the payment is drawn from.
pay_typestring, one of Check, CreditCardnoHow the vendor was paid. Defaults to Check.
payment_datestringnoPayment date, "YYYY-MM-DD". Defaults to today.
realm_idstringyesQuickBooks company id (realm id) the request is scoped to.
total_amountnumberyesTotal amount paid.
vendor_idstringyesQuickBooks vendor id being paid.

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
Idstring
PayTypestring
SyncTokenstring
TotalAmtnumber
TxnDatestring

Also retrieved by: "pay this supplier from the checking account", "cut a check to settle what we owe a contractor", "send money to a vendor for their charge".

quickbooks.get_bill_payment

Get one QuickBooks vendor bill payment by id: amount, date, and which bills it was applied to. Use when the user asks whether a specific vendor payment went out or how it was applied. For a vendor's payment history generally, use list_bill_payments.

Class read (reads only). No scopes beyond the connection's defaults. Calls GET /v3/company/{{params.realm_id}}/billpayment/{{params.bill_payment_id}}.

Arguments:

ArgumentTypeRequiredNotes
bill_payment_idstringyesQuickBooks bill payment id, e.g. "310".
realm_idstringyesQuickBooks company id (realm id) the request is scoped to.

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
Idstring
PayTypestring
SyncTokenstring
TotalAmtnumber
TxnDatestring
VendorRefobject
VendorRef.valuestring

Also retrieved by: "did the money to this supplier actually go out", "pull up details on a payment we sent a vendor", "check whether a check to a contractor cleared".

quickbooks.list_bill_payments

Search or list QuickBooks vendor bill payments using QuickBooks' own query language, e.g. "SELECT * FROM BillPayment WHERE VendorRef = '56'". Use when the user asks what we have paid a vendor, or wants recent outgoing payment history. For one known bill payment, use get_bill_payment.

Class read (reads only). No scopes beyond the connection's defaults. Calls GET /v3/company/{{params.realm_id}}/query.

Arguments:

ArgumentTypeRequiredNotes
querystringyesFull QuickBooks query statement against the BillPayment table, e.g. "SELECT * FROM BillPayment WHERE TotalAmt > '100'".
realm_idstringyesQuickBooks company id (realm id) the request is scoped to.

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
QueryResponseobject
QueryResponse.BillPaymentarray of object
QueryResponse.BillPayment[].Idstring
QueryResponse.BillPayment[].PayTypestring
QueryResponse.BillPayment[].TotalAmtnumber
QueryResponse.BillPayment[].TxnDatestring

Also retrieved by: "what have we sent this supplier lately", "show recent money going out to vendors", "pull a contractor's outgoing payment history".

quickbooks.get_profit_and_loss_report

Run a QuickBooks profit and loss (income statement) report for a date range: income, expenses, and net income. Use when the user asks how the business is doing, what our profit or margin looks like, or for a P&L. For assets and liabilities instead, use get_balance_sheet_report.

Class read (reads only). No scopes beyond the connection's defaults. Calls GET /v3/company/{{params.realm_id}}/reports/ProfitAndLoss.

Arguments:

ArgumentTypeRequiredNotes
end_datestringnoReport period end, "YYYY-MM-DD". Defaults to today.
realm_idstringyesQuickBooks company id (realm id) the request is scoped to.
start_datestringnoReport period start, "YYYY-MM-DD". Defaults to the start of the current fiscal year.
summarize_column_bystring, one of Total, Month, Week, Quarter, Year, Customers, Vendors, ClassesnoHow to break the columns down. Defaults to Total.

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
Headerobject
Header.Currencystring
Header.EndPeriodstring
Header.ReportNamestring
Header.StartPeriodstring
Rowsobject
Rows.Rowarray of object
Rows.Row[].ColDataarray of object
Rows.Row[].Summaryobject

Also retrieved by: "how much did we make last quarter", "pull a P&L for the business", "what's our margin looking like this year".

quickbooks.get_balance_sheet_report

Run a QuickBooks balance sheet report as of a date: assets, liabilities, and equity. Use when the user asks what the business owns and owes, wants a snapshot of net worth, or asks for a balance sheet. For income and expenses over a period instead, use get_profit_and_loss_report.

Class read (reads only). No scopes beyond the connection's defaults. Calls GET /v3/company/{{params.realm_id}}/reports/BalanceSheet.

Arguments:

ArgumentTypeRequiredNotes
end_datestringnoAs-of date for the balance sheet, "YYYY-MM-DD". Defaults to today.
realm_idstringyesQuickBooks company id (realm id) the request is scoped to.
start_datestringnoComparison period start, "YYYY-MM-DD". Defaults to the start of the current fiscal year.
summarize_column_bystring, one of Total, Month, Week, Quarter, YearnoHow to break the columns down. Defaults to Total.

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
Headerobject
Header.Currencystring
Header.EndPeriodstring
Header.ReportNamestring
Header.StartPeriodstring
Rowsobject
Rows.Rowarray of object
Rows.Row[].ColDataarray of object
Rows.Row[].Summaryobject

Also retrieved by: "what do we own versus owe right now", "give me a snapshot of our net worth", "pull the assets and liabilities summary".

quickbooks.get_aged_receivables_report

Run a QuickBooks aged receivables report: unpaid customer invoices grouped by how overdue they are (current, 1-30, 31-60, 61-90, 90+ days). Use when the user asks who owes us money, what is overdue, or wants an accounts receivable aging summary.

Class read (reads only). No scopes beyond the connection's defaults. Calls GET /v3/company/{{params.realm_id}}/reports/AgedReceivables.

Arguments:

ArgumentTypeRequiredNotes
realm_idstringyesQuickBooks company id (realm id) the request is scoped to.
report_datestringnoAs-of date for aging, "YYYY-MM-DD". Defaults to today.

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
Headerobject
Header.Currencystring
Header.EndPeriodstring
Header.ReportNamestring
Rowsobject
Rows.Rowarray of object
Rows.Row[].ColDataarray of object
Rows.Row[].Summaryobject

Also retrieved by: "who's behind on paying us", "show what's overdue from our clients", "give me an AR aging summary".