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

# QuickBooks

> QuickBooks Online Accounting API for managing invoices, customer payments recorded in the accounting ledger, customers, vendors, accounts, and financial reports.

QuickBooks Online Accounting API for managing invoices, customer payments recorded in the accounting ledger, customers, vendors, accounts, and financial reports. Best for automating bookkeeping, syncing transactions from other systems, generating financial reports, or building integrations that read and write accounting data. Requires OAuth 2.0 with a connected QuickBooks company. API URLs follow the pattern /v3/company/{realmId}/{entity}: leave the literal {realmId} placeholder in the path and the gateway fills in the connected company automatically. This does not cover Intuit Payroll or the separate Intuit Payments API.

12 example endpoints available through Lava's AI Gateway. See the [QuickBooks API docs](https://developer.intuit.com/app/developer/qbo/docs/api/accounting/all-entities/account) for full documentation.

<Warning>This provider requires your own credentials — connect your API key or OAuth account before use.</Warning>

<Info>This is a **catch-all provider** — any valid URL under `https://quickbooks.api.intuit.com` is supported. Any QuickBooks Online Accounting API endpoint. URLs follow the pattern [https://quickbooks.api.intuit.com/v3/company/\&#123;realmId\&#125;/\&#123;entity\&#125](https://quickbooks.api.intuit.com/v3/company/\&#123;realmId\&#125;/\&#123;entity\&#125);. Leave the literal \{realmId} placeholder in the path: the gateway automatically substitutes the connected company's realmId (captured during OAuth connection) from the stored credential, so you never need to look it up. Common accounting entities: invoice, customer, account, payment, bill, vendor, estimate, purchase, journalentry. Use query endpoint for SQL-like queries: /v3/company/\{realmId}/query?query=SELECT \* FROM Invoice. This provider is scoped to QuickBooks Online Accounting, not Intuit Payroll or the separate Intuit Payments API. See [https://developer.intuit.com/app/developer/qbo/docs/api/accounting/all-entities/account](https://developer.intuit.com/app/developer/qbo/docs/api/accounting/all-entities/account) for full reference. The endpoints below are curated examples.</Info>

## Endpoints

### Query entities using SQL-like syntax. Supports SELECT, WHERE, ORDER BY, STARTPOSITION, MAXRESULTS.

**GET** `https://quickbooks.api.intuit.com/v3/company/{realmId}/query?query=SELECT * FROM Invoice WHERE TotalAmt > '100.00'&minorversion=75` — Free

<Tabs>
  <Tab title="SDK">
    ```typescript theme={null}
    const data = await lava.gateway('https://quickbooks.api.intuit.com/v3/company/{realmId}/query?query=SELECT * FROM Invoice WHERE TotalAmt > '100.00'&minorversion=75', { method: 'GET' });
    ```
  </Tab>

  <Tab title="cURL">
    ```bash theme={null}
    curl "https://api.lava.so/v1/forward?u=https%3A%2F%2Fquickbooks.api.intuit.com%2Fv3%2Fcompany%2F%7BrealmId%7D%2Fquery%3Fquery%3DSELECT%20*%20FROM%20Invoice%20WHERE%20TotalAmt%20%3E%20'100.00'%26minorversion%3D75" \
      -H "Authorization: Bearer $LAVA_SECRET_KEY"
    ```
  </Tab>
</Tabs>

### Retrieve a list of invoices.

**GET** `https://quickbooks.api.intuit.com/v3/company/{realmId}/invoice?minorversion=75` — Free

<Tabs>
  <Tab title="SDK">
    ```typescript theme={null}
    const data = await lava.gateway('https://quickbooks.api.intuit.com/v3/company/{realmId}/invoice?minorversion=75', { method: 'GET' });
    ```
  </Tab>

  <Tab title="cURL">
    ```bash theme={null}
    curl "https://api.lava.so/v1/forward?u=https%3A%2F%2Fquickbooks.api.intuit.com%2Fv3%2Fcompany%2F%7BrealmId%7D%2Finvoice%3Fminorversion%3D75" \
      -H "Authorization: Bearer $LAVA_SECRET_KEY"
    ```
  </Tab>
</Tabs>

### Create a new invoice. Requires at minimum a CustomerRef and at least one Line item.

**POST** `https://quickbooks.api.intuit.com/v3/company/{realmId}/invoice?minorversion=75` — Free

<Tabs>
  <Tab title="SDK">
    ```typescript theme={null}
    const data = await lava.gateway('https://quickbooks.api.intuit.com/v3/company/{realmId}/invoice?minorversion=75', {
      body: {
    "CustomerRef": {
      "value": "1"
    },
    "Line": [
      {
        "Amount": 100,
        "DetailType": "SalesItemLineDetail",
        "SalesItemLineDetail": {
          "ItemRef": {
            "value": "1"
          }
        }
      }
    ]
    },
    });
    ```
  </Tab>

  <Tab title="cURL">
    ```bash theme={null}
    curl -X POST "https://api.lava.so/v1/forward?u=https%3A%2F%2Fquickbooks.api.intuit.com%2Fv3%2Fcompany%2F%7BrealmId%7D%2Finvoice%3Fminorversion%3D75" \
      -H "Authorization: Bearer $LAVA_SECRET_KEY" \
      -H "Content-Type: application/json" \
      -d '{"CustomerRef":{"value":"1"},"Line":[{"Amount":100,"DetailType":"SalesItemLineDetail","SalesItemLineDetail":{"ItemRef":{"value":"1"}}}]}'
    ```
  </Tab>
</Tabs>

### Read a single invoice by ID.

**GET** `https://quickbooks.api.intuit.com/v3/company/{realmId}/invoice/{invoiceId}?minorversion=75` — Free

<Tabs>
  <Tab title="SDK">
    ```typescript theme={null}
    const data = await lava.gateway('https://quickbooks.api.intuit.com/v3/company/{realmId}/invoice/{invoiceId}?minorversion=75', { method: 'GET' });
    ```
  </Tab>

  <Tab title="cURL">
    ```bash theme={null}
    curl "https://api.lava.so/v1/forward?u=https%3A%2F%2Fquickbooks.api.intuit.com%2Fv3%2Fcompany%2F%7BrealmId%7D%2Finvoice%2F%7BinvoiceId%7D%3Fminorversion%3D75" \
      -H "Authorization: Bearer $LAVA_SECRET_KEY"
    ```
  </Tab>
</Tabs>

### Retrieve a list of customers.

**GET** `https://quickbooks.api.intuit.com/v3/company/{realmId}/customer?minorversion=75` — Free

<Tabs>
  <Tab title="SDK">
    ```typescript theme={null}
    const data = await lava.gateway('https://quickbooks.api.intuit.com/v3/company/{realmId}/customer?minorversion=75', { method: 'GET' });
    ```
  </Tab>

  <Tab title="cURL">
    ```bash theme={null}
    curl "https://api.lava.so/v1/forward?u=https%3A%2F%2Fquickbooks.api.intuit.com%2Fv3%2Fcompany%2F%7BrealmId%7D%2Fcustomer%3Fminorversion%3D75" \
      -H "Authorization: Bearer $LAVA_SECRET_KEY"
    ```
  </Tab>
</Tabs>

### Create a new customer. DisplayName must be unique.

**POST** `https://quickbooks.api.intuit.com/v3/company/{realmId}/customer?minorversion=75` — Free

<Tabs>
  <Tab title="SDK">
    ```typescript theme={null}
    const data = await lava.gateway('https://quickbooks.api.intuit.com/v3/company/{realmId}/customer?minorversion=75', {
      body: {
    "DisplayName": "Ada Lovelace",
    "PrimaryEmailAddr": {
      "Address": "ada@example.com"
    }
    },
    });
    ```
  </Tab>

  <Tab title="cURL">
    ```bash theme={null}
    curl -X POST "https://api.lava.so/v1/forward?u=https%3A%2F%2Fquickbooks.api.intuit.com%2Fv3%2Fcompany%2F%7BrealmId%7D%2Fcustomer%3Fminorversion%3D75" \
      -H "Authorization: Bearer $LAVA_SECRET_KEY" \
      -H "Content-Type: application/json" \
      -d '{"DisplayName":"Ada Lovelace","PrimaryEmailAddr":{"Address":"ada@example.com"}}'
    ```
  </Tab>
</Tabs>

### Retrieve a list of accounts from the chart of accounts.

**GET** `https://quickbooks.api.intuit.com/v3/company/{realmId}/account?minorversion=75` — Free

<Tabs>
  <Tab title="SDK">
    ```typescript theme={null}
    const data = await lava.gateway('https://quickbooks.api.intuit.com/v3/company/{realmId}/account?minorversion=75', { method: 'GET' });
    ```
  </Tab>

  <Tab title="cURL">
    ```bash theme={null}
    curl "https://api.lava.so/v1/forward?u=https%3A%2F%2Fquickbooks.api.intuit.com%2Fv3%2Fcompany%2F%7BrealmId%7D%2Faccount%3Fminorversion%3D75" \
      -H "Authorization: Bearer $LAVA_SECRET_KEY"
    ```
  </Tab>
</Tabs>

### Retrieve payments recorded in the accounting ledger.

**GET** `https://quickbooks.api.intuit.com/v3/company/{realmId}/payment?minorversion=75` — Free

<Tabs>
  <Tab title="SDK">
    ```typescript theme={null}
    const data = await lava.gateway('https://quickbooks.api.intuit.com/v3/company/{realmId}/payment?minorversion=75', { method: 'GET' });
    ```
  </Tab>

  <Tab title="cURL">
    ```bash theme={null}
    curl "https://api.lava.so/v1/forward?u=https%3A%2F%2Fquickbooks.api.intuit.com%2Fv3%2Fcompany%2F%7BrealmId%7D%2Fpayment%3Fminorversion%3D75" \
      -H "Authorization: Bearer $LAVA_SECRET_KEY"
    ```
  </Tab>
</Tabs>

### Record a customer payment in the accounting ledger. This is the QuickBooks Online Accounting Payment entity, not the separate Intuit Payments API.

**POST** `https://quickbooks.api.intuit.com/v3/company/{realmId}/payment?minorversion=75` — Free

<Tabs>
  <Tab title="SDK">
    ```typescript theme={null}
    const data = await lava.gateway('https://quickbooks.api.intuit.com/v3/company/{realmId}/payment?minorversion=75', { body: {"CustomerRef":{"value":"1"},"TotalAmt":100} });
    ```
  </Tab>

  <Tab title="cURL">
    ```bash theme={null}
    curl -X POST "https://api.lava.so/v1/forward?u=https%3A%2F%2Fquickbooks.api.intuit.com%2Fv3%2Fcompany%2F%7BrealmId%7D%2Fpayment%3Fminorversion%3D75" \
      -H "Authorization: Bearer $LAVA_SECRET_KEY" \
      -H "Content-Type: application/json" \
      -d '{"CustomerRef":{"value":"1"},"TotalAmt":100}'
    ```
  </Tab>
</Tabs>

### Update a QuickBooks Online Accounting entity through catch-all routing. Use the entity-specific request body required by Intuit.

**PUT** `https://quickbooks.api.intuit.com/v3/company/{realmId}/{entity}/{entityId}?minorversion=75` — Free

<Tabs>
  <Tab title="SDK">
    ```typescript theme={null}
    const data = await lava.gateway('https://quickbooks.api.intuit.com/v3/company/{realmId}/{entity}/{entityId}?minorversion=75', { method: 'PUT' });
    ```
  </Tab>

  <Tab title="cURL">
    ```bash theme={null}
    curl -X PUT "https://api.lava.so/v1/forward?u=https%3A%2F%2Fquickbooks.api.intuit.com%2Fv3%2Fcompany%2F%7BrealmId%7D%2F%7Bentity%7D%2F%7BentityId%7D%3Fminorversion%3D75" \
      -H "Authorization: Bearer $LAVA_SECRET_KEY" \
      -H "Content-Type: application/json"
    ```
  </Tab>
</Tabs>

### Delete a QuickBooks Online Accounting entity through catch-all routing when the upstream endpoint supports DELETE.

**DELETE** `https://quickbooks.api.intuit.com/v3/company/{realmId}/{entity}/{entityId}?minorversion=75` — Free

<Tabs>
  <Tab title="SDK">
    ```typescript theme={null}
    const data = await lava.gateway('https://quickbooks.api.intuit.com/v3/company/{realmId}/{entity}/{entityId}?minorversion=75', { method: 'DELETE' });
    ```
  </Tab>

  <Tab title="cURL">
    ```bash theme={null}
    curl -X DELETE "https://api.lava.so/v1/forward?u=https%3A%2F%2Fquickbooks.api.intuit.com%2Fv3%2Fcompany%2F%7BrealmId%7D%2F%7Bentity%7D%2F%7BentityId%7D%3Fminorversion%3D75" \
      -H "Authorization: Bearer $LAVA_SECRET_KEY" \
      -H "Content-Type: application/json"
    ```
  </Tab>
</Tabs>

### Read company info. Useful for verifying the connected company.

**GET** `https://quickbooks.api.intuit.com/v3/company/{realmId}/companyinfo/{realmId}?minorversion=75` — Free

<Tabs>
  <Tab title="SDK">
    ```typescript theme={null}
    const data = await lava.gateway('https://quickbooks.api.intuit.com/v3/company/{realmId}/companyinfo/{realmId}?minorversion=75', { method: 'GET' });
    ```
  </Tab>

  <Tab title="cURL">
    ```bash theme={null}
    curl "https://api.lava.so/v1/forward?u=https%3A%2F%2Fquickbooks.api.intuit.com%2Fv3%2Fcompany%2F%7BrealmId%7D%2Fcompanyinfo%2F%7BrealmId%7D%3Fminorversion%3D75" \
      -H "Authorization: Bearer $LAVA_SECRET_KEY"
    ```
  </Tab>
</Tabs>

## Next Steps

<CardGroup cols={2}>
  <Card title="All Providers" icon="grid" href="/gateway/supported-providers">
    Browse all supported AI providers
  </Card>

  <Card title="Forward Proxy" icon="route" href="/gateway/forward-proxy">
    Learn how to construct proxy URLs and authenticate requests
  </Card>
</CardGroup>
