Integrations

FreshBooks

Connect FreshBooks to manage clients, invoices, estimates, expenses, payments, projects, time tracking, and reports.

OAuth authorizationFinance & BillingFreshBooks API docs

You end up pasting the Client ID and Client Secret of a Private App you register in the FreshBooks Developer Portal.

Setup time
6 min
Auth
OAuth authorization
API base URL
https://api.freshbooks.com
Rate limits
FreshBooks does not publish a numeric rate limit on its authentication docs. Access tokens are short-lived and PopMCP refreshes them at https://api.freshbooks.com/auth/oauth/token.

Before you begin

  • A FreshBooks account on any plan, including a trial
  • Signed in as the account owner or an admin who can open the Developer Portal
  • The PopMCP callback URL from the connect screen, because FreshBooks only accepts HTTPS redirect URIs with no query string

Get your credentials

Copy the PopMCP callback URL

On the PopMCP FreshBooks connect screen, copy the Callback URL printed above the credential fields. Paste it later exactly as PopMCP prints it.

Open the Developer Portal

Sign in at my.freshbooks.com, click the cog icon at the bottom of the left sidebar, and choose Developer Portal.

Open this screen →

my.freshbooks.com/#/developer
SearchAcme Studio
Settings / Developer Portal

Developer Portal

OAuth applications registered on this FreshBooks account.

All AppsAuthorized Apps
Create New App
ApplicationTypeClient IDCreated
Internal reportingOwned by youPrivate Appa1b2****9f3cMar 4, 2026

The portal also opens directly at my.freshbooks.com/#/developer.

Create a Private App

Click Create New App, type a name into Application Name, and set Application Type to Private App.

Open this screen →

Add the redirect URI and the scopes

Paste the PopMCP callback URL into Redirect URIs and click the checkmark to add it. Tick the boxes you need in the Read Scopes and Write Scopes columns, then click Save.

Open this screen →

my.freshbooks.com/#/developer/new
SearchAcme Studio
Settings / Developer Portal / Create New App

Create New App

The name you enter here appears on the FreshBooks authorization screen.

Redirect URIs must use HTTPS and cannot contain a query string. Put multiple URIs on separate lines.
Application details
Application Name
PopMCP
Application Type
Private App
Redirect URIs
https://app.popmcp.io/oauth/callback
Save
Scopes
user:profile:readResolves your account and business ID.
user:clients:readClient lookup and listing tools.
user:invoices:writeCreate, send and update invoices.
user:expenses:writeRecord and categorise expenses.
user:time_entries:writeLog and edit tracked time.

Read Scopes and Write Scopes sit in two columns on this form.

Copy the Client ID and Client Secret into PopMCP

Open the app from the All Apps list and scroll to the bottom of the page. Copy the Client ID and Client Secret into PopMCP, click Connect, and approve the FreshBooks authorization screen.

Open this screen →

my.freshbooks.com/#/developer/app/popmcp
SearchAcme Studio
Settings / Developer Portal / PopMCP

PopMCP

Private App

All AppsAuthorized Apps
Client ID & Secret
Client ID
b7f2****41ac
Client Secret
0f9c****d5e8
Application Type
Private App
Status
Active
CopyDelete App

Expand the arrow next to the app name if the credential block is collapsed.

Connect in PopMCP

Open your workspace, choose FreshBooks in the marketplace, and fill in the connect dialog:

FieldWhat to enter
Auth typepresetCreate an app in the FreshBooks Developer Portal (my.freshbooks.com → Settings → Developer Portal). Enable all scopes for full coverage. The OAuth flow keeps your FreshBooks login on FreshBooks' side.
Client IDtextYour app's "Client ID" from the FreshBooks Developer Portal.
Client secretsecretYour app's "Client Secret". Stored encrypted; used server-side only and never shown again.Encrypted with AES-256-GCM on save and never shown again.
Redirect URI
https://app.popmcp.com/api/providers/freshbooks/callback

Add this exact URL to your FreshBooks app's "Redirect URIs" (Developer Portal → your app → OAuth). It must use HTTPS, contain no query string, and match exactly, or FreshBooks rejects the authorization.

PopMCP verifies the credential against FreshBooks immediately. On success the connection flips to Verified and its MCP tools are provisioned.

Verify it worked

PopMCP shows the FreshBooks connection as Connected with your business name, and asking it to list your most recent clients or invoices returns real rows from your account.

Troubleshooting

invalid_redirect_uri when you click Connect

Why: The redirect URI on the FreshBooks app does not match the PopMCP callback URL exactly, or it uses http:// or carries a query string.

Fix: Re-copy the callback URL from the PopMCP connect screen into Redirect URIs, one per line, HTTPS only, then save.

403 on some tools but not others

Why: The token was issued without the matching scope. FreshBooks cannot add scopes to an already-issued access token.

Fix: Tick the missing scope on the app, disconnect in PopMCP, then reconnect so a fresh token is issued.

401 Unauthorized on every tool call

Why: The refresh token was revoked, which happens when the app is deleted or a new secret is generated.

Fix: Re-copy the Client Secret from the bottom of the app page into PopMCP and reconnect to run the OAuth flow again.

The Developer Portal link is missing from the cog menu

Why: You are signed in as a team member rather than the account owner or an admin.

Fix: Sign in as the account owner, or open my.freshbooks.com/#/developer directly with an admin login.

Reference

On this page