# FreshBooks setup for PopMCP

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

- Auth: OAuth authorization
- Setup time: 6 min
- API base URL: https://api.freshbooks.com
- Credentials screen: https://my.freshbooks.com/#/developer
- Provider docs: https://www.freshbooks.com/api/authentication

## 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

### 1. 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.

### 2. 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.

Screen: https://my.freshbooks.com/#/developer

### 3. Create a Private App

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

Screen: https://my.freshbooks.com/#/developer

### 4. 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.

Screen: https://my.freshbooks.com/#/developer

### 5. 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.

Screen: https://my.freshbooks.com/#/developer

## Fields PopMCP asks for

- Auth type (connectionType): Create 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 ID (clientId) [required]: Your app's "Client ID" from the FreshBooks Developer Portal.
- Client secret (clientSecret) [required]: Your app's "Client Secret". Stored encrypted; used server-side only and never shown again.

## Callback URL to register

https://app.popmcp.com/api/providers/freshbooks/callback

## Verify

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

Cause: 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

Cause: 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

Cause: 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

Cause: 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.

---

Source: https://www.docs.popmcp.com/docs/integrations/freshbooks/