Freshbooks

Overview

Pre-built tooling

✅ Authorization
ToolsStatus
Pre-built authorization (OAuth)✅
Credentials auto-refresh✅
Auth parameters validation✅
Pre-built authorization UI✅
Custom authorization UI✅
Expired credentials detection✅
✅ Read & write data
ToolsStatus
Pre-built integrations✅
API unification✅
2-way sync✅
Webhooks from Tenklo on data modifications✅
Real-time webhooks from 3rd-party API🚫 (time to contribute: <48h)
Proxy requests✅
✅ Observability & data quality
ToolsStatus
HTTP request logging✅
End-to-end type safety✅
Data runtime validation✅
OpenTelemetry export✅
Slack alerts on errors✅
Integration status API✅
✅ Customization
ToolsStatus
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 nameDescriptionTypeSource code
create-clientCreate a client.Action🔗 Github
create-estimateCreate an estimate.Action🔗 Github
create-expenseCreate an expense.Action🔗 Github
create-invoiceCreate an invoice.Action🔗 Github
create-paymentCreate a payment against an invoice.Action🔗 Github
create-projectCreate a project.Action🔗 Github
create-time-entryCreate a time entry.Action🔗 Github
delete-clientArchive (soft-delete) a clientAction🔗 Github
delete-estimateArchive (soft-delete) an estimateAction🔗 Github
delete-expenseArchive (soft-delete) an expense.Action🔗 Github
delete-invoiceArchive (soft-delete) an invoice.Action🔗 Github
delete-paymentArchive (soft-delete) a payment.Action🔗 Github
delete-projectDelete a project.Action🔗 Github
delete-time-entryDelete a time entry.Action🔗 Github
get-account-idRetrieve the FreshBooks accountId and businessId for the authenticated user.Action🔗 Github
get-clientRetrieve a single client.Action🔗 Github
get-expenseRetrieve a single expense.Action🔗 Github
get-invoiceRetrieve a single invoice.Action🔗 Github
get-paymentRetrieve a single payment.Action🔗 Github
get-projectRetrieve a single project.Action🔗 Github
get-time-entryRetrieve a single time entry.Action🔗 Github
list-clientsList clients.Action🔗 Github
list-estimatesList estimates.Action🔗 Github
list-expensesList expenses.Action🔗 Github
list-invoicesList invoices.Action🔗 Github
list-paymentsList payments.Action🔗 Github
list-projectsList projects.Action🔗 Github
list-time-entriesList time entries.Action🔗 Github
send-invoiceSend an invoice by email or mark it as sent.Action🔗 Github
update-clientUpdate a clientAction🔗 Github
update-estimateUpdate an estimate.Action🔗 Github
update-expenseUpdate an expense.Action🔗 Github
update-invoiceUpdate an invoice.Action🔗 Github
update-projectUpdate a project.Action🔗 Github
update-time-entryUpdate a time entry.Action🔗 Github
clientsSync clients.Sync🔗 Github
estimatesSync estimates.Sync🔗 Github
expensesSync expenses.Sync🔗 Github
invoicesSync invoices.Sync🔗 Github
paymentsSync payments.Sync🔗 Github
projectsSync projects.Sync🔗 Github
time-entriesSync time entries.Sync🔗 Github

Access requirements

Pre-RequisitesStatusComment
Paid dev account✅ Not requiredFree FreshBooks account is sufficient for development.
Paid test account✅ Not requiredFree FreshBooks account is sufficient for testing.
Partnership✅ Not required
App review✅ Not requiredNo review process for OAuth apps.
Security audit✅ Not required

Setup guide

Create a FreshBooks account

  1. If you don't already have a FreshBooks account, go to FreshBooks' signup page and create one.
  2. Sign in to your FreshBooks account.

Access the developer portal

  1. Go to the FreshBooks developer page.
  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.

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.

Configure OAuth settings

  1. In the OAuth settings section, add the following redirect URI:

    • https://api.tenklo.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.

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 Tenklo.

Configure your integration in Tenklo

When setting up your FreshBooks integration in Tenklo:

  • Use your Client ID and Client Secret from the previous step
Need help getting started? Get help in the community.

Common Scopes

ScopeDescription
user:profile:readRead user profile information
user:clients:readRead client information
user:clients:writeCreate and update clients
user:invoices:readRead invoice information
user:invoices:writeCreate and update invoices
user:estimates:readRead estimate information
user:estimates:writeCreate and update estimates
user:expenses:readRead expense information
user:expenses:writeCreate and update expenses
user:payments:readRead payment information
user:payments:writeCreate and update payments
user:projects:readRead project information
user:projects:writeCreate and update projects
user:time_entries:readRead time entry information
user:time_entries:writeCreate 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.
Contribute API gotchas by editing this page

On this page