Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
217 changes: 217 additions & 0 deletions app/en/references/auth-providers/intuit/page.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,217 @@
import { Tabs, Callout, Steps } from "nextra/components";

# Intuit

The Intuit auth provider enables tools and agents to call the [Intuit QuickBooks Online API](https://developer.intuit.com/) on behalf of a user, using OAuth 2.0.

### What's documented here

This page describes how to use and configure Intuit (QuickBooks) auth with Arcade.

This auth provider is used by:

- Your [app code](#using-intuit-auth-in-app-code) that needs to call Intuit/QuickBooks APIs
- Or, your [custom tools](#using-intuit-auth-in-custom-tools) that need to call Intuit/QuickBooks APIs

Arcade offers a default Intuit auth provider for getting started quickly. In production you will most likely want to use your own Intuit app credentials, so your users see your application's name on the consent screen.

## Scopes

Intuit splits its scopes into the QuickBooks API scopes and the OpenID Connect scopes. Request only the scopes your tools need.

| Scope | Description |
| --- | --- |
| `com.intuit.quickbooks.accounting` | Read and write QuickBooks Online accounting data (customers, invoices, accounts, etc.) |
| `com.intuit.quickbooks.payment` | Process payments via the QuickBooks Payments API |
| `openid` | Authenticate the user and return an ID token |
| `profile` | The user's given and family name |
| `email` | The user's email address |
| `phone` | The user's phone number |
| `address` | The user's physical address |

## Configuring Intuit auth

<Callout type="info">
When using your own app credentials, make sure you configure your project to
use a [custom user
verifier](/guides/user-facing-agents/secure-auth-production#build-a-custom-user-verifier).
Without this, your end-users will not be able to use your app or agent in
production.
</Callout>

Before configuring your Intuit credentials in Arcade, create an app on the Intuit Developer portal.

### Create an Intuit app

<Steps>

#### Create the app

- Sign in to the [Intuit Developer portal](https://developer.intuit.com/) and open **My Hub &gt; App dashboard** (or [developer.intuit.com/app/developer/dashboard](https://developer.intuit.com/app/developer/dashboard)).
- Open (or create) a **workspace**, then select the **+** tile to create a new app.
- Select **QuickBooks Online and Payments**, give the app a name (letters, numbers, and spaces only), choose the scopes your integration needs, and create the app.

#### Add the redirect URI

- Open your app's **Keys & OAuth** (a.k.a. **Keys & credentials**) page.
- Under **Redirect URIs**, click **Add URI** and paste the redirect URL generated by Arcade (see below), then **Save**.
- Intuit allows `http://localhost` redirect URIs for development; production redirect URIs must be HTTPS.

#### Copy the credentials

- On the **Keys & OAuth** page, toggle **Show credentials** to reveal the **Client ID** and **Client Secret** for the environment you are using (Development/sandbox or Production).

</Steps>

<Callout type="info">
Intuit issues **Development** (sandbox) keys immediately. **Production** keys
require completing Intuit's production app assessment and accepting Intuit's
production terms before the production Client ID/Secret are issued.
</Callout>

### Configuring your own Intuit Auth Provider in Arcade

<Tabs items={["Dashboard GUI"]}>
<Tabs.Tab>

#### Configure Intuit Auth Using the Arcade Dashboard GUI

<Steps>

#### Access the Arcade Dashboard

To access the Arcade Cloud dashboard, go to [api.arcade.dev/dashboard](https://api.arcade.dev/dashboard). If you are self-hosting, by default the dashboard will be available at http://localhost:9099/dashboard. Adjust the host and port number to match your environment.

#### Navigate to the OAuth Providers page

- Under the **Connections** section of the Arcade Dashboard left-side menu, click **Connected Apps**.
- Click **Add OAuth Provider** in the top right corner.
- Select the **Included Providers** tab at the top.
- In the **Provider** dropdown, select **Intuit**.

#### Enter the provider details

- Choose a unique **ID** for your provider (e.g. "my-intuit-provider").
- Optionally enter a **Description**.
- Enter the **Client ID** and **Client Secret** from your Intuit app.
- Note the **Redirect URL** generated by Arcade. This must be added to your Intuit app's Redirect URIs.

#### Create the provider

Hit the **Create** button and the provider will be ready to be used.

</Steps>

When you use tools that require Intuit auth using your Arcade account credentials, Arcade will automatically use this Intuit OAuth provider. If you have multiple Intuit providers, see [using multiple auth providers of the same type](/references/auth-providers#using-multiple-providers-of-the-same-type) for more information.

</Tabs.Tab>
</Tabs>

## Using Intuit auth in app code

Use the Intuit auth provider in your own agents and AI apps to get a user token for the Intuit/QuickBooks API. See [authorizing agents with Arcade](/get-started/about-arcade) to understand how this works.

Use `client.auth.start()` to get a user token for the Intuit API:

<Tabs items={["Python", "JavaScript"]} storageKey="preferredLanguage">
<Tabs.Tab>

```python {8-12}
from arcadepy import Arcade

client = Arcade() # Automatically finds the `ARCADE_API_KEY` env variable

user_id = "{arcade_user_id}"

# Start the authorization process
auth_response = client.auth.start(
user_id=user_id,
provider="intuit",
scopes=["com.intuit.quickbooks.accounting", "openid", "profile", "email"],
)

if auth_response.status != "completed":
print("Please complete the authorization challenge in your browser:")
print(auth_response.url)

# Wait for the authorization to complete
auth_response = client.auth.wait_for_completion(auth_response)

token = auth_response.context.token
# Do something interesting with the token...
```

</Tabs.Tab>

<Tabs.Tab>

```javascript {8-10}
import { Arcade } from "@arcadeai/arcadejs";

const client = new Arcade();

const userId = "{arcade_user_id}";

// Start the authorization process
const authResponse = await client.auth.start(userId, "intuit", {
scopes: ["com.intuit.quickbooks.accounting", "openid", "profile", "email"],
});

if (authResponse.status !== "completed") {
console.log("Please complete the authorization challenge in your browser:");
console.log(authResponse.url);
}

// Wait for the authorization to complete
authResponse = await client.auth.waitForCompletion(authResponse);

const token = authResponse.context.token;
// Do something interesting with the token...
```

</Tabs.Tab>

</Tabs>

## Using Intuit auth in custom tools

You can author your own [custom tools](/guides/create-tools/tool-basics/build-mcp-server) that interact with the Intuit/QuickBooks API.

Use the `Intuit()` auth class to specify that a tool requires authorization with Intuit. The `context.authorization.token` field will be automatically populated with the user's Intuit token. The user's QuickBooks company (realm) id is returned on the authorization context and is required for most accounting API calls:

```python {5-6,9-13}
from typing import Annotated

import httpx

from arcade_tdk import ToolContext, tool
from arcade_tdk.auth import Intuit


@tool(
requires_auth=Intuit(
scopes=["com.intuit.quickbooks.accounting"],
)
)
async def get_company_info(
context: ToolContext,
realm_id: Annotated[str, "The QuickBooks company (realm) id to query."],
) -> Annotated[dict, "The QuickBooks CompanyInfo resource"]:
"""Get the authenticated user's QuickBooks company information."""
url = f"https://quickbooks.api.intuit.com/v3/company/{realm_id}/companyinfo/{realm_id}"
headers = {
"Authorization": f"Bearer {context.authorization.token}",
"Accept": "application/json",
}

async with httpx.AsyncClient() as client:
response = await client.get(url, headers=headers)
response.raise_for_status()
return response.json()
```

<Callout type="info">
Development (sandbox) keys call the sandbox base URL
`https://sandbox-quickbooks.api.intuit.com`; production keys call
`https://quickbooks.api.intuit.com`.
</Callout>
7 changes: 7 additions & 0 deletions app/en/references/auth-providers/page.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -78,6 +78,13 @@ For more information on how to customize your auth provider, select an auth prov
link="/references/auth-providers/hubspot"
category="Auth"
/>
<ToolCard
name="Intuit"
image="quickbooks"
summary="Authorize tools and agents with Intuit (QuickBooks)"
link="/references/auth-providers/intuit"
category="Auth"
/>
<ToolCard
name="Linear"
image="linear.svg"
Expand Down
3 changes: 2 additions & 1 deletion public/llms.txt
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
<!-- git-sha: 168dbe9f1ea2583887eac41a6f20344ffa661b9c generation-date: 2026-06-10T18:11:23.362Z -->
<!-- git-sha: 7627c9c01724f38d86ff1653a4c60a505281f4d5 generation-date: 2026-06-14T04:51:16.068Z -->

# Arcade

Expand Down Expand Up @@ -34,6 +34,7 @@ Arcade delivers three core capabilities: Deploy agents even your security team w
- [GitHub](https://docs.arcade.dev/en/references/auth-providers/github): This documentation page provides guidance on using and configuring the GitHub auth provider with Arcade, enabling users to call GitHub APIs securely on behalf of users. It emphasizes the necessity of using GitHub Apps over OAuth Apps for enhanced security, granular permissions, and
- [Google](https://docs.arcade.dev/en/references/auth-providers/google): This documentation page provides guidance on using and configuring Google authentication with Arcade, enabling users to access Google/Google Workspace APIs through their applications. It outlines the benefits of using Arcade's default Google OAuth provider for quick integration, as well as instructions for setting up
- [Hubspot](https://docs.arcade.dev/en/references/auth-providers/hubspot): This documentation page provides guidance on using and configuring the Hubspot authentication provider within the Arcade platform, enabling users to call Hubspot APIs on behalf of their applications. It outlines the steps for utilizing Arcade's default Hubspot auth provider, as well as instructions
- [Intuit](https://docs.arcade.dev/en/references/auth-providers/intuit): Documentation page
- [Linear](https://docs.arcade.dev/en/references/auth-providers/linear): This documentation page provides guidance on configuring and using the Linear authentication provider with Arcade, enabling users to call Linear APIs on behalf of users in their applications. It outlines the steps to create a Linear app, set up OAuth2 credentials, and integrate Linear auth
- [LinkedIn](https://docs.arcade.dev/en/references/auth-providers/linkedin): This documentation page provides guidance on configuring and using the LinkedIn authentication provider within Arcade, enabling applications and custom tools to access LinkedIn APIs on behalf of users. It outlines the necessary steps to create a LinkedIn app, set up app credentials, and
- [Mailchimp](https://docs.arcade.dev/en/references/auth-providers/mailchimp): This documentation page provides guidance on configuring the Mailchimp authentication provider for use with Arcade, enabling users to access Mailchimp Marketing APIs through OAuth 2.0. It includes steps for creating a Mailchimp app, registering it, and integrating it with Arcade
Expand Down
Loading