# FreshBooks

FreshBooks is a cloud-based accounting software service designed for small and medium-sized businesses, offering features like invoicing, expense tracking, and time management.

- **Category:** accounting
- **Auth:** OAUTH2
- **Composio Managed App Available?** Yes
- **Tools:** 10
- **Triggers:** 0
- **Slug:** `FRESHBOOKS`
- **Version:** 20260312_00

## Tools

### Create Webhook

**Slug:** `FRESHBOOKS_CREATE_WEBHOOK`

Register a new webhook callback for a FreshBooks account. Webhooks notify your application when specified events occur (e.g., when invoices are created, clients are updated, or payments are received). **Prerequisites:** Obtain a valid account_id using the List Businesses action first. **Important Notes:** - FreshBooks implements a verification mechanism to ensure you own the callback URI. The 'verified' field will initially be false. - Your webhook endpoint must respond with a 2xx HTTP status code. Any other status code (including 3xx redirects) is treated as a failure. - Webhook requests have a 10-second timeout. - Requires 'user:webhooks:write' OAuth scope. **Common Event Types:** client.create, client.update, client.delete, invoice.create, invoice.update, invoice.delete, payment.create, payment.update, payment.delete, expense.create, expense.update, expense.delete.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `uri` | string | Yes | URL endpoint to receive webhook notifications. Must be a valid HTTPS URL that can receive POST requests. FreshBooks will send webhook payloads to this URI when the subscribed event occurs. The endpoint must respond with a 2xx status code (redirects and other codes are treated as failures). |
| `event` | string | Yes | Event type to subscribe to. Specifies which FreshBooks events will trigger the webhook. Common events include: client.create, client.update, client.delete, invoice.create, invoice.update, invoice.delete, payment.create, payment.update, payment.delete, expense.create, expense.update, expense.delete. |
| `account_id` | string | Yes | Unique identifier of the FreshBooks account to register the webhook for. Obtain this from the account_id field in the List Businesses action response. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Delete Webhook

**Slug:** `FRESHBOOKS_DELETE_WEBHOOK`

Delete a webhook callback from a FreshBooks account. Use when you need to remove an existing webhook subscription that is no longer needed.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `account_id` | string | Yes | The unique FreshBooks account identifier. Obtain this from the account details or business information. |
| `callback_id` | string | Yes | The unique identifier of the webhook callback to delete. Obtain this from the list webhooks response. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Business Users

**Slug:** `FRESHBOOKS_GET_BUSINESS_USERS`

Retrieves staff identities and members for a specific FreshBooks business. This action returns detailed information about all staff members (owners, admins, employees) in a business group, including their roles, email addresses, and active status. Use this to discover team members before assigning time entries or tasks.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `business_id` | integer | Yes | The unique identifier of the business whose staff identities you want to retrieve. Obtain this from the List Businesses action. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Businesses

**Slug:** `FRESHBOOKS_LIST_BUSINESSES`

List all businesses associated with the authenticated user. This action retrieves business membership information from the FreshBooks Identity endpoint, showing all businesses the user has access to along with their role in each business. The business_id from this response is required for many other FreshBooks API calls.

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Clients

**Slug:** `FRESHBOOKS_LIST_CLIENTS`

Retrieves all clients for a FreshBooks account. Clients are entities you send invoices to. Supports pagination, filtering by email/user ID/visibility state, sorting, and includes optional balance data (outstanding, credit, draft, overdue).

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `page` | integer | No | Page number for pagination. Pages are 1-indexed. |
| `sort` | string | No | Sort results by field: client_id, organization_name, email, updated, fullname, or outstanding. |
| `include` | array | No | Include additional balance data in response. Options: outstanding_balance, credit_balance, draft_balance, overdue_balance. |
| `per_page` | integer | No | Number of results per page. Default is 15. |
| `account_id` | string | Yes | Unique identifier of the FreshBooks account. Obtain this from the List Businesses action (use the account_id field from the business object). |
| `search_email` | string | No | Filter by exact email address match. |
| `search_userid` | integer | No | Filter by exact user ID match. |
| `search_vis_state` | string ("active" | "deleted" | "archived") | No | Visibility state for clients. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Journal Entries

**Slug:** `FRESHBOOKS_LIST_JOURNAL_ENTRIES2`

Retrieves all journal entries for a FreshBooks business account. Journal entries are the building blocks of financial accounting, recording all business transactions including invoices, payments, credits, and expenses. Use this action to get a comprehensive view of your accounting records.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `page_size` | integer | No | Number of journal entries to return per page. Use to control response size. Defaults to 30 if not specified. |
| `page_number` | integer | No | The page number to retrieve. Use for pagination when there are many journal entries. Defaults to 1 if not specified. |
| `business_uuid` | string | Yes | The UUID of the business whose journal entries you want to list. Obtain this from the List Businesses action. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Projects

**Slug:** `FRESHBOOKS_LIST_PROJECTS`

Retrieves all projects associated with a FreshBooks business account. This action returns a paginated list of projects with comprehensive details including client information, billing rates, budget, completion status, team members, and associated services. Use this to discover available projects before performing project-specific operations. **Prerequisites:** Obtain a valid business_id using the List Businesses action first. **Use Cases:** - Get all projects for time tracking or invoicing - Find projects by client, status, or date range - Monitor project completion and budget tracking - Retrieve team assignments and project groups **Response:** Returns an empty list if no projects exist or match the filters.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `active` | boolean | No | Filter by active status. Set to true to return only active projects, false for inactive projects. Omit to return all projects regardless of active status. |
| `sort_by` | string ("created_at" | "due_date" | "title") | No | Sort order for the returned projects. Choose 'created_at' for creation date, 'due_date' for project due date, or 'title' for alphabetical order. Omit for default API ordering. |
| `complete` | boolean | No | Filter by completion status. Set to true to return only completed projects, false for incomplete projects. Omit to return all projects regardless of completion status. |
| `skip_group` | boolean | No | Exclude group membership data. Set to true to omit the group field (which contains team member and invitation details) from each project to reduce response size. |
| `business_id` | integer | Yes | The unique identifier of the business whose projects you want to list. Obtain this from the List Businesses action. |
| `updated_since` | string | No | Filter by last update time. Only returns projects updated at or after this UTC datetime. Must be in RFC3339 format (e.g., '2023-01-01T00:00:00Z'). |
| `include_logged_duration` | boolean | No | Include time tracking data. Set to true to include the total logged duration (in seconds) for each project in the response. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Webhooks

**Slug:** `FRESHBOOKS_LIST_WEBHOOKS`

List all webhook callbacks registered for a FreshBooks account. Webhooks notify your application when events occur (e.g., invoice creation, payment received). Use this to discover what webhook callbacks are currently active for an account before creating or managing webhook subscriptions.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `account_id` | string | Yes | Unique identifier of the FreshBooks account. Obtain this from the List Businesses action (corresponds to account_id field in the business object). |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Register as a New User

**Slug:** `FRESHBOOKS_REGISTER_AS_A_NEW_USER`

Register a new user account in FreshBooks. Returns an access token upon successful registration. Use this action when you need to create a new FreshBooks user account programmatically with their business information.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `email` | string | Yes | Valid email address for the new user. Must use a real domain (e.g., gmail.com, outlook.com). This will be the user's login email. |
| `password` | string | Yes | Password for the new user account. Should be strong and meet security requirements. |
| `last_name` | string | Yes | Last name of the user being registered. |
| `first_name` | string | Yes | First name of the user being registered. |
| `business_name` | string | Yes | Name of the business to register for the new user. This will be associated with their FreshBooks account. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Update Webhook

**Slug:** `FRESHBOOKS_UPDATE_WEBHOOK`

Update or verify a FreshBooks webhook callback. Use this to verify a newly created webhook by providing the verification code, or to request a new verification code be sent to the callback URI. **Prerequisites:** You need the account_id (from List Businesses as business_uuid) and callback_id (from webhook creation). **Use Cases:** - Verify a webhook after creation by providing the verifier code received at your callback URI - Request a new verification code if the original was lost or expired (set resend=true) **Important:** The verifier and resend parameters are mutually exclusive - provide only one per request.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `resend` | boolean | No | Set to true to resend the verification code to the callback URI. Mutually exclusive with verifier. Only use when you need a new verification code. |
| `verifier` | string | No | Verification code received at the callback URI. Provide this to verify a newly created webhook. Mutually exclusive with resend. |
| `account_id` | string | Yes | The account ID for the FreshBooks account. Obtain this from the List Businesses action as business_uuid. |
| `callback_id` | string | Yes | The unique identifier of the webhook callback to update. Obtain this from the list or create callbacks endpoints. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |
