- Documentation
FreshBooks integration
Create invoices, clients, and expenses, and react to bookkeeping updates for your clients' FreshBooks accounts.
What it does
The FreshBooks integration lets your agency run bookkeeping operations on behalf of your clients without leaving TaskJuice. Connect a client's FreshBooks business once and you can create and read clients, draft and send invoices, log expenses, and trigger downstream workflows the moment an invoice changes status. Each connection is scoped to a single FreshBooks business so you can keep one workspace clean across many clients.
Connect a FreshBooks account
- Open your workspace in TaskJuice and navigate to Connections.
- Choose FreshBooks and click Connect.
- Sign in to the FreshBooks account that has access to your client's business and approve the requested scopes (profile, clients read/write, invoices read/write, expenses read/write, time entries read).
- After FreshBooks returns you to TaskJuice, paste the FreshBooks accountId for the business you want to operate on. You can list every authorized business by calling
GET https://api.freshbooks.com/auth/api/v1/users/mewith the access token and readingbusiness_memberships[].business.account_id. - TaskJuice returns you to the workspace with the connection ready to use in any workflow.
To revoke access, open my.freshbooks.com, navigate to Settings, Apps and Integrations, find the TaskJuice app, and disconnect it. See the FreshBooks Authentication guide for the full OAuth grant flow.
Triggers
freshbooks/invoice-updatedpolls the FreshBooks invoices endpoint on a configurable interval (default 5 minutes) and fires one workflow activation per cycle. Theitemsarray carries every invoice whoseupdatedtimestamp is greater than the previous watermark. FreshBooks first-party callbacks authenticate by echoing a verifier token in the request body rather than a signed header, so polling the invoices endpoint with thesearch[updated_min]watermark is the supported trigger shape.
Actions
freshbooks/list-clientslists clients in the connected business with optional email and updated-since filters.freshbooks/create-clientcreates a new client record with email, name, organization, and primary address.freshbooks/list-invoiceslists invoices filtered by client, updated-since timestamp, and v3 status.freshbooks/create-invoicedrafts a new invoice with line items, currency, due offset, PO number, notes, and terms.freshbooks/create-expenserecords an expense with amount, category, date, vendor, and optional client and project bill-back.
Known limitations
- The FreshBooks API enforces a per-account rate limit and returns HTTP 429 with a
Retry-Afterheader on burst. TaskJuice surfaces those responses as retryable errors and honors the header. - Connections are scoped to a single FreshBooks business (accountId). To work across multiple client businesses, create one connection per business.
- The
invoice-updatedtrigger uses polling rather than FreshBooks callbacks because the callback verifier scheme is in the request body and does not fit the platform's declarative inbound-auth envelope. The default 5 minute interval is configurable per workflow. - The FreshBooks Accounting API expects monetary amounts as
{ "amount": "125.50", "code": "USD" }objects with decimal strings. Action input fields accept decimal strings and the integration wraps them on the wire.
Was this helpful?