# FreshBooks integrations: invoices and clients

> Create an invoice, create a client and create an expense in FreshBooks, and start a workflow when FreshBooks sends “Invoice created”.

**Canonical page:** https://tray.ai/connectors/freshbooks-integrations/
**Categories:** Finance
**Connects through:** HTTP Connector

## Overview

FreshBooks is accounting software for small businesses that covers invoicing, expenses, time tracking, projects, payments and financial reports. Tray.ai connects to FreshBooks through the HTTP Connector, so your workflows can call the FreshBooks API alongside the rest of your stack.

## Use cases

### Invoices

Read, create, update, and delete invoices in FreshBooks from any Tray.ai workflow. The FreshBooks API covers calls such as list invoices and get an invoice.

- List invoices
- Get an invoice
- Create an invoice

### Clients

Read and create clients in FreshBooks from any Tray.ai workflow. The FreshBooks API covers calls such as list clients and create a client.

- List clients
- Create a client

### Expenses

Read, create, update, and delete expenses in FreshBooks from any Tray.ai workflow. The FreshBooks API covers calls such as list expenses and get an expense.

- List expenses
- Get an expense
- Create an expense

### Time entries

Read, create, update, and delete time entries in FreshBooks from any Tray.ai workflow. The FreshBooks API covers calls such as list time entries and get a time entry.

- List time entries
- Get a time entry
- Create a time entry

### FreshBooks events

Start a Tray.ai workflow the moment something happens in FreshBooks. FreshBooks sends events such as invoice created and invoice updated to a Tray.ai webhook trigger.

- Invoice created
- Invoice updated
- Invoice sent by email

## Challenges Tray.ai solves

### Keeping FreshBooks credentials out of logs

A raw API call usually means pasting a key or token into the request, where it ends up in step inputs, logs, and screenshots.

**How Tray.ai helps:** Store FreshBooks credentials once as a Tray.ai authentication and reference them from the HTTP Connector. Tray.ai masks authentication values in logs, so the secret never shows up in a step's input or output.

### Going from the FreshBooks API docs to a working call

Translating an example request from API docs into a workflow step means copying the method, URL, headers, and body by hand.

**How Tray.ai helps:** Paste a cURL example from the FreshBooks API docs into the HTTP Connector and Tray.ai fills in the method, URL, headers, and body for you.

### Handling files and non-JSON responses

Not every API answers in JSON. Some return XML, files, or binary data, or expect a multipart upload.

**How Tray.ai helps:** The HTTP Connector parses JSON and XML responses, returns files you can pass to the next step, and sends multipart form data for uploads.

## Frequently asked questions

### Does Tray.ai connect to FreshBooks?

Yes. Tray.ai connects to FreshBooks through the HTTP Connector, which calls the FreshBooks API directly. Any call the FreshBooks API documents can run as a step in a Tray.ai workflow.

### How does Tray.ai authenticate with FreshBooks?

The FreshBooks API uses OAuth 2.0. You save it once as a Tray.ai authentication, and the HTTP Connector adds it to every request.

### Can I get a dedicated FreshBooks connector?

FreshBooks runs through the HTTP Connector rather than a dedicated connector. If your team wants one, the Tray.ai connector SDK can build a dedicated FreshBooks connector from the FreshBooks API.

## Learn more

- Intelligent Integration: https://tray.ai/platform/intelligent-ipaas/
- Merlin Agent Builder: https://tray.ai/platform/merlin-agent-builder/
- Agent Gateway for MCP: https://tray.ai/platform/agent-gateway/
- Book a demo: https://tray.ai/contact/
