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

# Freshbooks

## Overview

> [card] [Pre-built tooling](#pre-built-tooling)

> [card] [Pre-built integrations](#pre-built-integrations)

> [card] [Access requirements](#access-requirements)

> [card] [Setup guide](#setup-guide)

> [card] [Useful links](#useful-links)

> [card] [API gotchas](#api-gotchas)

## Pre-built tooling

> [accordion] ✅ Authorization
>
> | Tools | Status |
> | - | - |
> | Pre-built authorization (OAuth) | ✅ |
> | Credentials auto-refresh | ✅ |
> | Auth parameters validation | ✅ |
> | Pre-built authorization UI | ✅ |
> | Custom authorization UI | ✅ |
> | Expired credentials detection | ✅ |

> [accordion] ✅ Read & write data
>
> | Tools | Status |
> | - | - |
> | Pre-built integrations | ✅ |
> | API unification | ✅ |
> | 2-way sync | ✅ |
> | Webhooks from Nango on data modifications | ✅ |
> | Real-time webhooks from 3rd-party API | 🚫 (time to contribute: \<48h) |
> | Proxy requests | ✅ |

> [accordion] ✅ Observability & data quality
>
> | Tools | Status |
> | - | - |
> | HTTP request logging | ✅ |
> | End-to-end type safety | ✅ |
> | Data runtime validation | ✅ |
> | OpenTelemetry export | ✅ |
> | Slack alerts on errors | ✅ |
> | Integration status API | ✅ |

> [accordion] ✅ Customization
>
> | Tools | Status |
> | - | - |
> | Create or customize use-cases | ✅ |
> | Pre-configured pagination | 🚫 (time to contribute: \<48h) |
> | Pre-configured rate-limit handling | 🚫 (time to contribute: \<48h) |
> | Per-customer configurations | ✅ |

### Others

| Function name | Description | Type |
| - | - | - |
| `create-client` | Create a client. | [Tool](https://nango.dev/docs/guides/functions/tools.md) |
| `create-estimate` | Create an estimate. | [Tool](https://nango.dev/docs/guides/functions/tools.md) |
| `create-expense` | Create an expense. | [Tool](https://nango.dev/docs/guides/functions/tools.md) |
| `create-invoice` | Create an invoice. | [Tool](https://nango.dev/docs/guides/functions/tools.md) |
| `create-payment` | Create a payment against an invoice. | [Tool](https://nango.dev/docs/guides/functions/tools.md) |
| `create-project` | Create a project. | [Tool](https://nango.dev/docs/guides/functions/tools.md) |
| `create-time-entry` | Create a time entry. | [Tool](https://nango.dev/docs/guides/functions/tools.md) |
| `delete-client` | Archive (soft-delete) a client | [Tool](https://nango.dev/docs/guides/functions/tools.md) |
| `delete-estimate` | Archive (soft-delete) an estimate | [Tool](https://nango.dev/docs/guides/functions/tools.md) |
| `delete-expense` | Archive (soft-delete) an expense. | [Tool](https://nango.dev/docs/guides/functions/tools.md) |
| `delete-invoice` | Archive (soft-delete) an invoice. | [Tool](https://nango.dev/docs/guides/functions/tools.md) |
| `delete-payment` | Archive (soft-delete) a payment. | [Tool](https://nango.dev/docs/guides/functions/tools.md) |
| `delete-project` | Delete a project. | [Tool](https://nango.dev/docs/guides/functions/tools.md) |
| `delete-time-entry` | Delete a time entry. | [Tool](https://nango.dev/docs/guides/functions/tools.md) |
| `get-account-id` | Retrieve the FreshBooks accountId and businessId for the authenticated user. | [Tool](https://nango.dev/docs/guides/functions/tools.md) |
| `get-client` | Retrieve a single client. | [Tool](https://nango.dev/docs/guides/functions/tools.md) |
| `get-expense` | Retrieve a single expense. | [Tool](https://nango.dev/docs/guides/functions/tools.md) |
| `get-invoice` | Retrieve a single invoice. | [Tool](https://nango.dev/docs/guides/functions/tools.md) |
| `get-payment` | Retrieve a single payment. | [Tool](https://nango.dev/docs/guides/functions/tools.md) |
| `get-project` | Retrieve a single project. | [Tool](https://nango.dev/docs/guides/functions/tools.md) |
| `get-time-entry` | Retrieve a single time entry. | [Tool](https://nango.dev/docs/guides/functions/tools.md) |
| `list-clients` | List clients. | [Tool](https://nango.dev/docs/guides/functions/tools.md) |
| `list-estimates` | List estimates. | [Tool](https://nango.dev/docs/guides/functions/tools.md) |
| `list-expenses` | List expenses. | [Tool](https://nango.dev/docs/guides/functions/tools.md) |
| `list-invoices` | List invoices. | [Tool](https://nango.dev/docs/guides/functions/tools.md) |
| `list-payments` | List payments. | [Tool](https://nango.dev/docs/guides/functions/tools.md) |
| `list-projects` | List projects. | [Tool](https://nango.dev/docs/guides/functions/tools.md) |
| `list-time-entries` | List time entries. | [Tool](https://nango.dev/docs/guides/functions/tools.md) |
| `send-invoice` | Send an invoice by email or mark it as sent. | [Tool](https://nango.dev/docs/guides/functions/tools.md) |
| `update-client` | Update a client | [Tool](https://nango.dev/docs/guides/functions/tools.md) |
| `update-estimate` | Update an estimate. | [Tool](https://nango.dev/docs/guides/functions/tools.md) |
| `update-expense` | Update an expense. | [Tool](https://nango.dev/docs/guides/functions/tools.md) |
| `update-invoice` | Update an invoice. | [Tool](https://nango.dev/docs/guides/functions/tools.md) |
| `update-project` | Update a project. | [Tool](https://nango.dev/docs/guides/functions/tools.md) |
| `update-time-entry` | Update a time entry. | [Tool](https://nango.dev/docs/guides/functions/tools.md) |
| `clients` | Sync clients. | [Sync](https://nango.dev/docs/guides/functions/syncs/sync-functions.md) |
| `estimates` | Sync estimates. | [Sync](https://nango.dev/docs/guides/functions/syncs/sync-functions.md) |
| `expenses` | Sync expenses. | [Sync](https://nango.dev/docs/guides/functions/syncs/sync-functions.md) |
| `invoices` | Sync invoices. | [Sync](https://nango.dev/docs/guides/functions/syncs/sync-functions.md) |
| `payments` | Sync payments. | [Sync](https://nango.dev/docs/guides/functions/syncs/sync-functions.md) |
| `projects` | Sync projects. | [Sync](https://nango.dev/docs/guides/functions/syncs/sync-functions.md) |
| `time-entries` | Sync time entries. | [Sync](https://nango.dev/docs/guides/functions/syncs/sync-functions.md) |

## Access requirements

| Pre-Requisites | Status | Comment |
| - | - | - |
| Paid dev account | ✅ Not required | Free FreshBooks account is sufficient for development. |
| Paid test account | ✅ Not required | Free FreshBooks account is sufficient for testing. |
| Partnership | ✅ Not required | |
| App review | ✅ Not required | No review process for OAuth apps. |
| Security audit | ✅ Not required | |

## Setup guide

**1. Create a FreshBooks account**

1. If you don't already have a FreshBooks account, go to [FreshBooks' signup page](https://www.freshbooks.com/signup) and create one.
2. Sign in to your FreshBooks account.

**2. Access the developer portal**

1. Go to the [FreshBooks developer page](https://www.freshbooks.com/api/start).
2. Click on the "sign up" link to access your FreshBooks account.
3. Navigate to the developer portal by clicking on "the developer page" link.

**3. Create a new OAuth application**

1. In the developer portal, click on **Create Application**.
2. Fill in the required information for your application:
   * **Application Name**: Enter a name for your application.
   * **Application Description**: Provide a brief description of what your application does.
   * **Company Name**: Enter your company name.
   * **Application Website**: Enter the URL of your application's website.

**4. Configure OAuth settings**

1. In the OAuth settings section, add the following redirect URI:
   * `https://api.nango.dev/oauth/callback`

2. Select the appropriate scopes for your application based on your needs. Common scopes include:
   * `user:profile:read` - Read user profile information
   * `user:clients:read` - Read client information
   * `user:invoices:read` - Read invoice information
   * `user:invoices:write` - Create and update invoices
   * `user:estimates:read` - Read estimate information
   * `user:estimates:write` - Create and update estimates
   * `user:expenses:read` - Read expense information
   * `user:expenses:write` - Create and update expenses

3. Save your application settings.

**5. Obtain your OAuth credentials**

After creating your application, you'll receive:

* **Client ID**: A unique identifier for your application
* **Client Secret**: A secret key for your application

Make sure to store these securely, especially the Client Secret, as you'll need them when configuring your integration in Nango.

**6. Configure your integration in Nango**

When setting up your FreshBooks integration in Nango:

* Use your **Client ID** and **Client Secret** from the previous step

**7. Next**

Follow the [*Quickstart*](https://nango.dev/docs/getting-started/quickstart.md).

> [!TIP]
>
> Need help getting started? Get help in the [community](https://nango.dev/slack).

## Useful links

* [FreshBooks API Documentation](https://www.freshbooks.com/api/start)
* [FreshBooks API Reference](https://www.freshbooks.com/api/start)
* [Authentication Documentation](https://www.freshbooks.com/api/authentication)
* [OAuth 2.0 Protocol](https://www.freshbooks.com/api/authentication#oauth-2.0-protocol)
* [Basic Flow](https://www.freshbooks.com/api/authentication#basic-flow)
* [API Endpoints](https://www.freshbooks.com/api/start)
* [API Rate Limits](https://www.freshbooks.com/api/start)

## Common Scopes

| Scope | Description |
| - | - |
| `user:profile:read` | Read user profile information |
| `user:clients:read` | Read client information |
| `user:clients:write` | Create and update clients |
| `user:invoices:read` | Read invoice information |
| `user:invoices:write` | Create and update invoices |
| `user:estimates:read` | Read estimate information |
| `user:estimates:write` | Create and update estimates |
| `user:expenses:read` | Read expense information |
| `user:expenses:write` | Create and update expenses |
| `user:payments:read` | Read payment information |
| `user:payments:write` | Create and update payments |
| `user:projects:read` | Read project information |
| `user:projects:write` | Create and update projects |
| `user:time_entries:read` | Read time entry information |
| `user:time_entries:write` | Create and update time entries |

## API gotchas

* FreshBooks API endpoints are account-specific. The account ID is required for most API calls and is included in the URL path.

> [!NOTE]
>
> Contribute API gotchas by [editing this page](https://github.com/nangohq/nango/tree/master/docs/integrations/all/freshbooks.mdx)


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.