> ## Documentation Index
> Fetch the complete documentation index at: https://docs.atako.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# QuickBooks Online

> Connect QuickBooks Online to your Atako agents — 13 read and 4 write actions.

Let your agents read customers, invoices, payments, bills and financial reports in QuickBooks Online, and create customers, invoices and payments.

## Connection

* **Authentication**: OAuth 2.0 — you authorize Atako via QuickBooks Online's consent screen; no key to copy.
* **Required settings**:
  * **Environment** — quickbooks for a real company; sandbox-quickbooks for a developer sandbox test company.
* **Scopes requested**:
  * `com.intuit.quickbooks.accounting`

<Note>
  Nothing to paste: pick the environment (quickbooks for a real company, sandbox-quickbooks for a developer sandbox test company), click Connect, sign in to Intuit and choose the company to connect. Prerequisite on the Atako side — an administrator creates an app on [https://developer.intuit.com](https://developer.intuit.com) → Dashboard → Create an app → QuickBooks Online and Payments (scope com.intuit.quickbooks.accounting), adds the Redirect URI \$\{API\_URL}/integrations/oauth/callback under Keys & credentials (Development and Production), and puts the Client ID and Client Secret in INTEGRATION\_OAUTH\_QUICKBOOKS\_CLIENT\_ID / \_CLIENT\_SECRET. Development keys only connect sandbox companies; production keys need Intuit's app assessment.

  See [QuickBooks Online's documentation](https://developer.intuit.com/app/developer/qbo/docs/get-started).
</Note>

## Read actions (13)

| Action                   | Description                                                                                                                                                                                                                                                                                                                                                                    |
| ------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `get_company_info`       | Fetch the connected company (CompanyName, LegalName, addresses, Country, FiscalYearStartMonth, email).                                                                                                                                                                                                                                                                         |
| `get_customer`           | Fetch a customer by Id (DisplayName, contact details, addresses, Balance).                                                                                                                                                                                                                                                                                                     |
| `get_invoice`            | Fetch an invoice by Id (lines, CustomerRef, TxnDate, DueDate, TotalAmt, Balance, EmailStatus).                                                                                                                                                                                                                                                                                 |
| `list_accounts`          | List chart-of-accounts accounts (SELECT \* FROM Account). Optional where clause in QuickBooks query syntax, e.g. "AccountType = 'Bank'" or "Classification = 'Revenue'" (AND only — OR is not supported; Id filters support only = and IN). max\_results 1–1000 (default 100); paginate with start\_position (1-based).                                                        |
| `list_bills`             | List bills (supplier invoices to pay) (SELECT \* FROM Bill). Optional where clause in QuickBooks query syntax, e.g. "DueDate \< '2026-10-01' AND Balance > '0'" (AND only — OR is not supported; Id filters support only = and IN). max\_results 1–1000 (default 100); paginate with start\_position (1-based).                                                                |
| `list_customers`         | List customers (SELECT \* FROM Customer). Optional where clause in QuickBooks query syntax, e.g. "Active = true AND DisplayName LIKE 'Acme%'" (AND only — OR is not supported; Id filters support only = and IN). max\_results 1–1000 (default 100); paginate with start\_position (1-based).                                                                                  |
| `list_invoices`          | List invoices (SELECT \* FROM Invoice). Optional where clause in QuickBooks query syntax, e.g. "TxnDate >= '2026-01-01' AND Balance > '0'" or "CustomerRef = '42'" (AND only — OR is not supported; Id filters support only = and IN). max\_results 1–1000 (default 100); paginate with start\_position (1-based).                                                             |
| `list_items`             | List products and services (items) (SELECT \* FROM Item). Optional where clause in QuickBooks query syntax, e.g. "Type = 'Service' AND Active = true" (AND only — OR is not supported; Id filters support only = and IN). max\_results 1–1000 (default 100); paginate with start\_position (1-based).                                                                          |
| `list_payments`          | List customer payments (SELECT \* FROM Payment). Optional where clause in QuickBooks query syntax, e.g. "TxnDate >= '2026-01-01'" or "CustomerRef = '42'" (AND only — OR is not supported; Id filters support only = and IN). max\_results 1–1000 (default 100); paginate with start\_position (1-based).                                                                      |
| `list_vendors`           | List vendors (suppliers) (SELECT \* FROM Vendor). Optional where clause in QuickBooks query syntax, e.g. "Active = true" (AND only — OR is not supported; Id filters support only = and IN). max\_results 1–1000 (default 100); paginate with start\_position (1-based).                                                                                                       |
| `query`                  | Run a QuickBooks query: SELECT \* \| count(\*) FROM \<Entity> \[WHERE …] \[ORDERBY …] \[STARTPOSITION n] \[MAXRESULTS n], e.g. "select \* from Invoice where TxnDate > '2026-01-01' maxresults 50". Entities: Customer, Invoice, Item, Payment, Bill, Vendor, Account, Estimate, SalesReceipt, Purchase, Employee, TaxCode… AND only (no OR); MAXRESULTS ≤ 1000 (default 100). |
| `report_balance_sheet`   | Balance Sheet report: assets, liabilities and equity over start\_date–end\_date (or a date\_macro), Cash or Accrual basis.                                                                                                                                                                                                                                                     |
| `report_profit_and_loss` | Profit and Loss (income statement) report: income, cost of goods sold, expenses, net income over start\_date–end\_date (or a date\_macro), Cash or Accrual basis.                                                                                                                                                                                                              |

## Write actions (4)

| Action            | Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
| ----------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `create_customer` | Create a customer. DisplayName (required) must be unique across customers, vendors and employees and contain no colon, tab or newline. Optional: GivenName, FamilyName, CompanyName, PrimaryEmailAddr \{ Address }, PrimaryPhone \{ FreeFormNumber }, BillAddr \{ Line1, Line2, Line3, City, CountrySubDivisionCode, PostalCode, Country }, Notes.                                                                                                                                                                                                                                            |
| `create_invoice`  | Create an invoice. CustomerRef \{ value: Customer.Id } and at least one Line are required; each Line is \{ Amount, DetailType: "SalesItemLineDetail", SalesItemLineDetail: \{ ItemRef \{ value: Item.Id }, Qty?, UnitPrice? }, Description? } (Amount = Qty × UnitPrice when both are given). Optional TxnDate / DueDate (YYYY-MM-DD; DueDate defaults from the sales terms), BillEmail \{ Address } (needed by send\_invoice when the customer has no email), PrivateNote (internal memo, not shown to the customer). Some US companies auto-email new invoices when online payments are on. |
| `create_payment`  | Record a customer payment. CustomerRef \{ value: Customer.Id } and TotalAmt are required. To apply it to invoices, add Line \[\{ Amount, LinkedTxn: \[\{ TxnId: Invoice.Id, TxnType: "Invoice" }] }]; without Line it stays unapplied (credit). Optional TxnDate (YYYY-MM-DD) and PaymentRefNum (e.g. check number). Records the payment in the books — it moves no money.                                                                                                                                                                                                                    |
| `send_invoice`    | Email an invoice to the customer (to Invoice.BillEmail, or to sendTo, which then also replaces BillEmail on the invoice). Returns the invoice.                                                                                                                                                                                                                                                                                                                                                                                                                                                |

## Permissions

Every action above must be explicitly granted to an agent before it can be used. See [Permissions](/integrations/permissions) for the grant model and [Security](/integrations/security) for how credentials are protected.
