Guide - Integrations

How do you analyze FreshBooks data in Metabase?

FreshBooks analytics turns finance operations into shared, queryable models. FreshBooks combines invoicing, expenses, payments, projects, clients, and time tracking. In Metabase, those records can show collection health, client concentration, project economics, and expense trends without relying on one-off accounting exports. Metabase connects to the database that holds the synced data; it does not connect natively to FreshBooks.

TL;DR - Use the MCP + CLI route for a scoped, short-lived analysis. Use the official API or approved connector route for recurring dashboards, history, permissions, and reconciliation.

How do you connect FreshBooks to Metabase?

1 - MCP + CLI route (AI-assisted)

Explore a scoped snapshot quickly

Good Samaritan Software maintains an open-source FreshBooks MCP package with OAuth support and broad API coverage. It is third-party and includes write tools, so review the source and restrict the client to approved read operations. Pair the approved server with the Metabase CLI to load a focused CSV as a table and model.

Best for
  • Quick questions about FreshBooks data
  • Validating fields and dashboard ideas before building a pipeline
  • Loading a minimal, permissioned snapshot into Metabase
Trade-offs
  • A CSV is a point-in-time snapshot, not governed reporting
  • Finance data needs least-privilege credentials and an explicit tool allowlist
  • Move recurring dashboards to the warehouse-backed route
2 - Pipeline route (warehouse-backed)

Durable dashboards with history

Use the FreshBooks API with OAuth 2.0 or a managed connector to sync invoices, payments, expenses, clients, projects, and time entries into a database.

Best for
  • Recurring finance and leadership dashboards
  • Historical aging, lifecycle, and period reporting
  • Joining finance data with sales, product, and operations data
Trade-offs
  • Requires a destination database and maintained sync
  • You own currency, status, accounting period, and reconciliation definitions
  • Every modeled total should reconcile to the source system

What can you analyze from FreshBooks?

  • Invoice collection and aging
  • Revenue by client and service
  • Expense by category and vendor
  • Project profitability and billable utilization
  • Payment timing and cash inflow

Which FreshBooks dashboards should you build in Metabase?

For: Finance leaders

Finance overview

A compact view of cash, exposure, and operating performance.

  • Invoiced vs. collected
  • Open AR by age
  • Revenue by client
  • Expense trend
For: Finance operations

Operations

The work that needs attention before the next close.

  • Invoices due this week
  • Unbilled time
  • Late-paying clients
  • Projects over budget
For: Controllers

Controls and reconciliation

Find exceptions before they become close surprises.

  • Payment-to-invoice exceptions
  • Missing expense categories
  • Duplicate expenses
  • Unbilled completed work
For: FP&A

Planning and trends

Compare actuals with the plan and explain the variance.

  • Collection forecast
  • Client revenue concentration
  • Project margin trend
  • Expense budget variance

How do you use FreshBooks MCP with the Metabase CLI?

The FreshBooks API MCP server is a communityMCP option for AI-assisted exploration. Good Samaritan Software maintains an open-source FreshBooks MCP package with OAuth support and broad API coverage. It is third-party and includes write tools, so review the source and restrict the client to approved read operations. The Metabase CLI can then upload a sanitized CSV and create a ready-to-query table and model.

  • Start with a narrow read-only question and the minimum required objects.
  • Remove secrets, bank details, and personal fields before exporting.
  • Use mb upload csv for a first snapshot and mb upload replace for a controlled refresh.
  • Move to an API or connector sync when the dashboard becomes recurring.

How do you set up FreshBooks MCP and the Metabase CLI?

FreshBooks API MCP servercommunity

Data source
FreshBooks API
Auth
OAuth 2.0 app with the minimum required read scopes
Access
Read-only, least privilege
Use for
Exploration and scoped exports

Metabase CLIofficial

Install
npm install -g @metabase/cli
Auth
mb auth login
Load data
mb upload csv --file data.csv
Requires
An uploads database in Metabase
MCP clientExample MCP configuration - verify before use
{
  "mcpServers": {
    "freshbooks": {
      "command": "npx",
      "args": ["@goodsamsoftware/freshbooks-mcp"],
      "env": {
        "FRESHBOOKS_CLIENT_ID": "your-client-id",
        "FRESHBOOKS_CLIENT_SECRET": "your-client-secret",
        "FRESHBOOKS_REDIRECT_URI": "https://freshbooks.goodsamsoftware.com/callback"
      }
    }
  }
}
TerminalLoad a FreshBooks CSV with the Metabase CLI
# Install the Metabase CLI
npm install -g @metabase/cli

# Log in (opens your browser; requires Metabase v62+)
mb auth login --url https://your-metabase.example.com

# Load a scoped FreshBooks export - creates a table and a model
mb upload csv --file freshbooks-export.csv --collection "Finance & Accounting"

# Refresh the same table later
mb upload replace <table-id> --file freshbooks-export.csv
Verify before connecting: check the current FreshBooks API MCP server documentation, review every MCP tool, and enable an uploads database under Admin > Settings > Uploads. This is a third-party server: review its source, pin its version, and restrict it to the minimum read tools and credentials.

Can you generate a FreshBooks finance dashboard with AI?

Yes. Use the prompt below with an assistant that can access an approved data route and the Metabase CLI. It tells the assistant to inspect the real schema, reconcile totals, and skip cards that the available data cannot support.

Prompt for a FreshBooks finance dashboard
Create a polished Metabase dashboard for FreshBooks finance analytics.
Work end to end: find existing modeled data first; if none exists, load a minimal
read-only snapshot or describe the warehouse sync required.

Goal: Connect FreshBooks to Metabase for invoice collections, client revenue, expenses, profitability, time tracking, and cash-flow dashboards.

Inspect before querying:
- Inspect actual tables, column names, currencies, status values, and timestamps.
- Do not assume the source schema matches this guide exactly.
- Reconcile source totals before publishing any finance KPI.

Important:
- Do not claim Metabase connects natively to FreshBooks; it reads a
  supported database or CLI-uploaded tables.
- Keep native amount, native currency, and reporting-currency amount separate.
- Distinguish authorization, posting, payment, settlement, and reconciliation
  states where the source exposes them.
- Use stable business keys and apply updates/deletes during incremental syncs.
- Exclude account numbers, personal data, and secrets from broad dashboards.
- Only build cards whose required fields and history are actually present.

Dashboard sections:
1. Finance overview: Invoiced vs. collected; Open AR by age; Revenue by client; Expense trend.
2. Operations: Invoices due this week; Unbilled time; Late-paying clients; Projects over budget.
3. Controls and reconciliation: Payment-to-invoice exceptions; Missing expense categories; Duplicate expenses; Unbilled completed work.
4. Planning and trends: Collection forecast; Client revenue concentration; Project margin trend; Expense budget variance.

Suggested models: modeled_freshbooks_invoices, modeled_freshbooks_payments, modeled_freshbooks_expenses, modeled_freshbooks_project_margin.

Output: Build the dashboard if you have permission; otherwise provide the exact
questions, SQL, model definitions, and layout. State refresh time, reporting
currency, accounting basis, and any reconciliation caveats.

How do you sync FreshBooks into a database or warehouse?

Use the FreshBooks API with OAuth 2.0 or a managed connector to sync invoices, payments, expenses, clients, projects, and time entries into a database.

FreshBooks API or data service

Start from FreshBooks's official interface and authentication documentation. Extract only the finance objects required by the models below.

dlt FreshBooks REST pipeline

Load clients, invoices, expenses, projects, time entries, and payments with documented OAuth and pagination.

Implementation checklist

  1. Create a dedicated read-only integration identity and document its scopes.
  2. Land raw records with source IDs, source timestamps, extraction time, and currency fields intact.
  3. Apply updates and deletes idempotently; keep lifecycle history when aging or process metrics depend on it.
  4. Reconcile modeled totals to FreshBooks for a closed period before exposing the models broadly.
  5. Connect Metabase to the destination database and schedule model refreshes.

Source documentation

What data model should you use?

EntityGrainUse
invoicesone row per invoicebilling, due dates, and amount outstanding
paymentsone row per paymentcollection timing and allocation
expensesone row per expensespend analysis
time_entriesone row per time entrybillable utilization and project cost
projectsone row per projectbudget and profitability

Build reusable models such as modeled_freshbooks_invoices, modeled_freshbooks_payments, modeled_freshbooks_expenses, modeled_freshbooks_project_margin.

Which finance metrics are useful?

Practical SQL patterns

Invoice collection rate by monthPostgreSQL
SELECT
  date_trunc('month', issue_date) AS invoice_month,
  SUM(invoice_total) AS invoiced,
  SUM(amount_paid) AS collected,
  ROUND(100.0 * SUM(amount_paid) / NULLIF(SUM(invoice_total), 0), 1) AS collection_rate_pct
FROM modeled_freshbooks_invoices
GROUP BY 1
ORDER BY 1;
Unbilled project valuePostgreSQL

Surface approved billable work that has not reached a customer invoice.

SELECT
  project_name,
  client_name,
  SUM(billable_hours * billing_rate) AS unbilled_value
FROM modeled_freshbooks_time_entries
WHERE is_billable = TRUE
  AND invoice_id IS NULL
  AND approval_status = 'approved'
GROUP BY 1, 2
ORDER BY unbilled_value DESC;

Common mistakes

Using current invoice balance to recreate historical aging.→ Snapshot open invoices daily or retain payment allocation history.
Calling billed revenue collected cash.→ Separate invoice issue date from payment date and report both views.
Ignoring unbilled time.→ Join approved time entries to projects and invoices to expose work waiting to be billed.

Dashboards

Integrations

Analytics

FAQ

Does FreshBooks have an official MCP server?
FreshBooks provides an official API, but the MCP servers found in public registries are community implementations. Review them before use.
Can FreshBooks support project profitability?
Yes when time entries, billing rates, expenses, projects, and invoices are modeled at compatible grains.
Does Metabase connect natively to FreshBooks?
No. Metabase reads supported databases and uploaded tables. Sync FreshBooks data into a database or load a scoped CSV snapshot first.