Accounting
FreshBooks
API integration
Ship Accounting features without building the integration. Full FreshBooks API access via Proxy and 90+ MCP-ready tools for AI agents — extend models and mappings to fit your product.
Talk to usUse Cases
Why integrate with FreshBooks
Common scenarios for SaaS companies building FreshBooks integrations for their customers.
Automate invoice creation from job completion workflows
Field service, project management, or freelancer platforms can automatically generate and send FreshBooks invoices when work is marked complete, eliminating manual data entry for their small-business users.
Sync billable time entries into FreshBooks for end-of-month invoicing
Time tracking and project management SaaS products can push logged hours directly into FreshBooks as billable time entries, so service-based users see accurate draft invoices without re-entering data.
Push categorized expenses and receipts into FreshBooks automatically
Expense management and corporate card platforms can create FreshBooks expenses with attached receipt images, giving consultants and freelancers clean books without manual uploads.
Trigger downstream workflows from FreshBooks payment events
CRMs and client management tools can listen for FreshBooks payment webhooks to automatically update deal stages, unlock onboarding flows, or notify account managers when invoices are paid.
Keep client records in sync between your platform and FreshBooks
Any SaaS product that manages customer or client data can bidirectionally sync contacts with FreshBooks, ensuring invoices always go to the right person with the right details.
What You Can Build
Ship these features with Truto + FreshBooks
Concrete product features your team can ship faster by leveraging Truto’s FreshBooks integration instead of building from scratch.
One-click invoice generation from closed deals
Automatically create a FreshBooks client and draft invoice with line items when a deal is marked won in your platform.
Billable hours push to FreshBooks projects
Sync time entries logged in your app directly to FreshBooks projects as billable time, tagged to the correct client and service.
Real-time payment status updates via webhooks
Subscribe to FreshBooks payment.create events to instantly reflect invoice payment status inside your product's UI.
Expense creation with receipt attachment
Push expenses into FreshBooks with categorized vendor data and digitally attached receipt images using the two-step upload flow.
Client and contact directory sync
Keep your platform's customer list in sync with FreshBooks clients so users never have to manually reconcile contact information across systems.
Estimate-to-invoice lifecycle tracking
Create FreshBooks estimates from your quoting workflow and track their conversion into invoices without leaving your product.
SuperAI
FreshBooks AI agent tools
Comprehensive AI agent toolset with fine-grained control. Integrates with MCP clients like Cursor and Claude, or frameworks like LangChain.
get_single_fresh_books_client_by_id
Get a single FreshBooks client by id. Returns the full client object including id, email, organization, fname, lname, currency_code, language, vis_state, uuid, and billing/shipping address fields. Required: account_id, id.
list_all_fresh_books_clients
List FreshBooks clients with optional search filters and includes. Returns: accounting_systemid, allow_email_include_pdf, allow_late_fees, allow_late_notifications, bus_phone, company_industry, company_size, currency_code, direct_link_token, email, exceeds_client_limit, fax, fname, has_retainer, home_phone, id, language, last_activity, last_login, level, lname, mob_phone, note, notified,…
create_a_fresh_books_client
Create a new FreshBooks client with contact details, billing/shipping address, currency, language, and optional secondary contacts. Returns the created client object including id, email, organization, fname, lname, currency_code, uuid, and vis_state. Required: account_id.
update_a_fresh_books_client_by_id
Update a FreshBooks client by id with a partial client object. Returns the updated client including id, email, fname, lname, organization, currency_code, vis_state, uuid, and address fields. Required: account_id, id.
list_all_fresh_books_credit_notes
List all FreshBooks credit notes for an account, including goodwill credits and prepayments. Returns each credit note with id, credit_number, credit_type, amount, clientid, status, create_date, payment_status, and billing address fields.
get_single_fresh_books_credit_note_by_id
Get a single FreshBooks credit note by id. Returns: accounting_systemid, amount, city, clientid, code, country, create_date, credit_number, credit_type, creditid, current_organization, description, display_status, dispute_status, ext_archive, fname, id, language, last_order_status, lines, lname, notes, organization, paid, payment_status, province, sentid, status, street, street2, template, terms,…
create_a_fresh_books_credit_note
Create a FreshBooks credit note or prepayment for a client. Returns the created credit note including id, credit_number, credit_type, amount, clientid, status, create_date, and vis_state. Required: account_id, clientid.
delete_a_fresh_books_credit_note_by_id
Delete (archive) a FreshBooks credit note by setting its vis_state to 1. Returns the archived credit note object including id, credit_number, clientid, amount, status, and vis_state. Required: account_id, id.
list_all_fresh_books_journal_entries
List journal entry details for a FreshBooks account. Returns each entry's entryid, date, description, entry_type, name, total_credit, total_debit, and transactions with sub-account and credit/debit breakdowns. Required: account_id.
create_a_fresh_books_journal_entry
Create a journal entry in FreshBooks with debit and credit transaction lines. Returns: id, name. Required: account_id.
get_single_fresh_books_expense_by_id
Get a single FreshBooks expense by id. Returns the full expense object including expenseid, vendor, amount, date, categoryid, staffid, status, notes, and tax details. Required: account_id, id.
create_a_fresh_books_expense
Create a new FreshBooks expense. Returns the created expense object including expenseid, vendor, amount, date, categoryid, staffid, status, notes, and tax details. Required: account_id, expense.
update_a_fresh_books_expense_by_id
Update a FreshBooks expense by id. Returns the full expense object including expenseid, vendor, amount, date, categoryid, status, staffid, and notes. Required: account_id, id. Expense status is not directly modifiable.
list_all_fresh_books_expenses
List FreshBooks expenses for an account, with filters by expense id, client, staff, category, project, date range, amount range, vendor, and more. Returns: account_name, accountid, accounting_systemid, amount, background_jobid, bank_name, bill_matches, billable, categoryid, clientid, compounded_tax, converse_projectid, date, expenseid, ext_accountid, ext_invoiceid, ext_systemid, from_bulk_import,…
list_all_fresh_books_payments
List FreshBooks payments for an account. Returns: accounting_systemid, amount, bulk_paymentid, clientid, creditid, date, from_credit, gateway, id, invoiceid, logid, note, orderid, overpaymentid, send_client_notification, transactionid, type, updated, vis_state. Required: account_id. Supports filtering by date range, amount range, type, clientid, invoiceid, currency, from_credit, and more;…
get_single_fresh_books_payment_by_id
Get a single FreshBooks payment by id. Returns: accounting_systemid, amount, clientid, creditid, date, from_credit, gateway, id, invoiceid, logid, note, orderid, overpaymentid, transactionid, type, updated, vis_state. Required: account_id, id. Optional include params embed related client, invoice, credit_note, order, or gateway data.
create_a_fresh_books_payment
Create a FreshBooks payment on an invoice. The payment body requires invoiceid, amount, date, and type. Returns the created payment including id, invoiceid, amount, date, type, clientid, vis_state, updated, from_credit, and accounting_systemid. Required: account_id.
delete_a_fresh_books_payment_by_id
Delete a FreshBooks payment by id (soft-deletes by setting vis_state to 1). Returns the deleted payment including id, invoiceid, amount, date, type, clientid, vis_state, updated, from_credit, and accounting_systemid. Required: account_id, id.
list_all_fresh_books_invoices
List FreshBooks invoices for an account. Returns each invoice's id, invoice_number, amount, status, v3_status, customerid, due_date, outstanding, paid, created_at, organization, currency_code, notes, terms, updated, uuid, and more. Required: account_id.
get_single_fresh_books_invoice_by_id
Get a single FreshBooks invoice by id. Returns: accountid, accounting_systemid, address, amount, auto_bill, autobill_status, basecampid, city, code, country, create_date, created_at, currency_code, current_organization, customerid, date_paid, deposit_amount, deposit_percentage, deposit_status, description, discount_description, discount_total, discount_value, display_status, dispute_status,…
create_a_fresh_books_invoice
Create a single invoice in FreshBooks. Returns the created invoice including id, invoiceid, invoice_number, amount, customerid, status, due_date, and created_at. Required: account_id, customerid.
delete_a_fresh_books_invoice_by_id
Delete a FreshBooks invoice by id (soft-delete via vis_state set to 1). Returns the deleted invoice object including id, invoice_number, amount, payment_status, status, v3_status, and vis_state. Required: account_id, id.
fresh_books_invoices_send
Email an existing FreshBooks invoice to the customer. FreshBooks sends invoices by updating the invoice with action_email set to true, optionally with email_recipients and a customized subject/body (template tags like ::invoice number:: are supported). Required: invoice_id, and invoice.action_email = true.
get_single_fresh_books_tax_by_id
Get a single FreshBooks tax by id. Returns: accounting_systemid, updated, name, number, taxid, amount, compound, id. Required: account_id, id.
create_a_fresh_books_tax
Create a new FreshBooks tax. Returns the created tax object including id, name, amount, compound, taxid, accounting_systemid, updated, and number. Required: account_id, name.
update_a_fresh_books_tax_by_id
Update an existing FreshBooks tax by id. Returns the updated tax object including id, name, amount, compound, taxid, accounting_systemid, updated, and number. Required: account_id, id.
delete_a_fresh_books_tax_by_id
Delete a FreshBooks tax by id. Returns an empty 204 response on success. Required: account_id, id.
list_all_fresh_books_taxes
List FreshBooks taxes with optional filters by taxid, name, number, compound status, and updated date range. Returns: accounting_systemid, updated, name, number, taxid, amount, compound, id. Required: account_id.
get_single_fresh_books_user_by_id
Get a FreshBooks identity (user) by ID via the auth service. NOTE: reading identities other than your own requires FreshBooks internal admin-tier access not available to standard OAuth applications — calls typically return 403 forbidden. Use the me endpoint (via custom API path auth/api/v1/users/me) for the authenticated user's own identity instead.
get_single_fresh_books_staff_by_id
Get a single FreshBooks staff member by id. Returns: fax, rate, num_logins, api_token, id, note, display_name, lname, mob_phone, last_login, home_phone, email, username, updated, p_province, p_city, p_code, p_country, accounting_systemid, bus_phone, signup_date, language, level, userid, p_street2, vis_state, fname, organization, p_street, currency_code. Required: account_id, id. This resource is…
update_a_fresh_books_staff_by_id
Update a staff member's details in FreshBooks by staff ID. NOTE: this endpoint requires FreshBooks' internal admin:all OAuth scope, which is NOT grantable to standard OAuth applications — calls will return 403 insufficient_scope on normal connections. Only usable if FreshBooks has granted your app admin-tier access.
list_all_fresh_books_staff
List FreshBooks staff members for an account, with optional filters by userid, email, phone, or name. Returns: fax, rate, num_logins, api_token, id, note, display_name, lname, mob_phone, last_login, home_phone, email, username, updated, p_province, p_city, p_code, p_country, accounting_systemid, bus_phone, signup_date, language, level, userid, p_street2, vis_state, fname, organization, p_street,…
get_single_fresh_books_bill_vendor_by_id
Get a single FreshBooks bill vendor by id. Returns: id, accounting_systemid, accountid, vis_state, updated. Required: account_id, id.
list_all_fresh_books_bill_vendors
List bill vendors for a FreshBooks accounting account. Returns: id, accounting_systemid, accountid, vis_state, updated. Required: account_id.
create_a_fresh_books_bill_vendor
Create a new bill vendor in FreshBooks. Returns the created bill vendor including id, accounting_systemid, accountid, vis_state, and updated. Required: account_id, bill_vendor.
delete_a_fresh_books_bill_vendor_by_id
Delete a FreshBooks bill vendor by id. Soft-deletes the vendor by setting vis_state to 1. Returns the bill vendor object including id, vis_state, accounting_systemid, and updated. Required: account_id, id.
list_all_fresh_books_bills
List bills in a FreshBooks account. Returns: id, vis_state. Required: account_id.
get_single_fresh_books_bill_by_id
Get a single FreshBooks bill by id. Returns: id, vis_state. Required: account_id, id.
create_a_fresh_books_bill
Create a new bill in FreshBooks. Returns: id, vis_state. Required: account_id.
delete_a_fresh_books_bill_by_id
Delete a FreshBooks bill by setting its vis_state to deleted. Returns: id, vis_state. Required: account_id, id.
list_all_fresh_books_bill_payments
List FreshBooks bill payments for an account. Returns: id, accounting_systemid, amount, billid, bill_vendorid, bulk_paymentid, creditid, date, from_credit, gateway, logid, note, orderid, overpaymentid, send_client_notification, transactionid, type, updated, vis_state. Required: account_id.
get_single_fresh_books_bill_payment_by_id
Get a single FreshBooks bill payment by id. Returns: id, accounting_systemid, amount, billid, bill_vendorid, bulk_paymentid, creditid, date, from_credit, gateway, logid, note, orderid, overpaymentid, send_client_notification, transactionid, type, updated, vis_state. Required: account_id, id.
create_a_fresh_books_bill_payment
Create a FreshBooks bill payment for an invoice. Returns the created payment object including id, invoiceid, amount, clientid, date, type, vis_state, and updated. Required: account_id.
delete_a_fresh_books_bill_payment_by_id
Delete a FreshBooks bill payment by id (soft-delete by setting vis_state to 1). Returns the bill payment object including id, invoiceid, amount, clientid, date, type, vis_state, and updated. Required: account_id, id.
list_all_fresh_books_estimates
List FreshBooks estimates for an account, with optional includes and filters by status, client, date range, amount, and more. Returns: id, estimateid, accounting_systemid, accountid, status, ui_status, display_status, amount, discount_total, discount_value, code, description, current_organization, invoiced, ownerid, sentid, created_at, updated, reply_status, estimate_number, customerid,…
get_single_fresh_books_estimate_by_id
Get a single FreshBooks estimate by id. Returns: id, estimateid, status, ui_status, display_status, estimate_number, customerid, amount, discount_total, discount_value, create_date, created_at, updated, currency_code, language, template, ownerid, sentid, invoiced, reply_status, terms, notes, description, po_number, code, organization, current_organization, fname, lname, vat_name, vat_number,…
create_a_fresh_books_estimate
Create a new FreshBooks estimate for a client. Returns: status, create_date, code, ownerid, vat_number, id, vat_name, ui_status, invoiced, reply_status, country, lname, estimateid, ext_archive, template, vis_state, current_organization, province, updated, terms, description, street2, discount_total, address, estimate_number, customerid, discount_value, accounting_systemid, organization, language,…
update_a_fresh_books_estimate_by_id
Update an existing FreshBooks estimate by id. Returns: status, create_date, code, ownerid, vat_number, id, vat_name, ui_status, invoiced, reply_status, country, lname, estimateid, ext_archive, template, vis_state, current_organization, province, updated, terms, description, street2, discount_total, address, estimate_number, customerid, discount_value, accounting_systemid, organization, language,…
list_all_fresh_books_items
List FreshBooks billable items stored from invoice lines. Returns: id, itemid, accounting_systemid, description, inventory, name, qty, sku, tax1, tax2, unit_cost, updated, vis_state. Required: account_id. Supports filtering by itemid, sku, description, unit_cost, inventory, updated date, and qty.
get_single_fresh_books_item_by_id
Get a single FreshBooks billable item by id. Returns: id, itemid, accounting_systemid, description, inventory, name, qty, sku, tax1, tax2, unit_cost, updated, vis_state. Required: account_id, id.
create_a_fresh_books_item
Create a new FreshBooks billable item. Returns: id, itemid, accounting_systemid, description, inventory, name, qty, sku, tax1, tax2, unit_cost, updated, vis_state. Required: account_id, name.
update_a_fresh_books_item_by_id
Update a FreshBooks billable item by id. Returns: id, itemid, accounting_systemid, description, inventory, name, qty, sku, tax1, tax2, unit_cost, updated, vis_state. Required: account_id, id.
list_all_fresh_books_tasks
List FreshBooks project tasks for an account, filterable by billable status, rate range, and update date. Returns each task's id, name, rate, billable, updated, and vis_state. Required: account_id.
get_single_fresh_books_task_by_id
Get a single FreshBooks task by id. Returns: id, taskid, name, description, rate, billable, tax1, tax2, updated, vis_state, tdesc, tname. Required: account_id, id.
create_a_fresh_books_task
Create a new FreshBooks task for an account. Returns the created task including id, name, rate, billable, tax1, tax2, updated, and vis_state. Required: account_id, name.
update_a_fresh_books_task_by_id
Update an existing FreshBooks task by id, including name, rate, billable, and vis_state. Returns the updated task with id, name, rate, billable, updated, and vis_state. Required: account_id, id.
list_all_fresh_books_projects
List FreshBooks projects for a business, optionally filtered by active status, completion, or update date. Returns: id, title, due_date, fixed_price, group, links, description, complete, project_type, budget, updated_at, sample, services, rate, internal, client_id, active, created_at, logged_duration, billing_method. Required: business_id.
get_single_fresh_books_project_by_id
Get a single FreshBooks project by id. Returns: id, title, due_date, fixed_price, group, links, description, complete, project_type, budget, updated_at, sample, services, rate, internal, client_id, active, created_at, logged_duration, billing_method. Required: business_id, id.
create_a_fresh_books_project
Create a new FreshBooks project for a business. Returns the created project including id, title, project_type, client_id, fixed_price, active, created_at, updated_at, group, services, budget, and billing_method. Required: business_id, title, client_id, project_type.
update_a_fresh_books_project_by_id
Update an existing FreshBooks project by id. Returns the updated project including id, title, project_type, client_id, fixed_price, active, created_at, updated_at, group, services, budget, and billing_method. Required: business_id, id.
delete_a_fresh_books_project_by_id
Delete a FreshBooks project by id. Returns an empty 204 response on success. Required: business_id, id.
list_all_fresh_books_time_entries
List FreshBooks time entries for a business, optionally filtered by billable status, client, date range, or teammate. Returns: id, note, duration, project_id, client_id, is_logged, started_at, active, timer, billable, billed, internal, service_id, identity_id. Required: business_id.
get_single_fresh_books_time_entry_by_id
Get a single FreshBooks time entry by id. Returns: id, note, duration, project_id, client_id, is_logged, started_at, active, timer, billable, billed, internal, service_id, identity_id. Required: business_id, id.
create_a_fresh_books_time_entry
Create a new FreshBooks time entry for a business. Returns: id, note, duration, project_id, client_id, is_logged, started_at, active, timer. Required: business_id.
update_a_fresh_books_time_entry_by_id
Update an existing FreshBooks time entry by id. Returns: id, note, duration, project_id, client_id, is_logged, started_at, active, timer. Required: business_id, id.
delete_a_fresh_books_time_entry_by_id
Delete a FreshBooks time entry by id. Returns an empty 204 response on success. Required: business_id, id.
list_all_fresh_books_other_income
List FreshBooks other income entries for an account. Returns: incomeid, amount, category_name, created_at, date, note, payment_type, source, sourceid, taxes, updated_at, userid, vis_state. Required: account_id. Supports filtering by incomeid, category_name, and vis_state.
get_single_fresh_books_other_income_by_id
Get a single FreshBooks other income entry by id. Returns: incomeid, amount, category_name, created_at, date, note, payment_type, source, sourceid, taxes, updated_at, userid, vis_state. Required: account_id, id.
create_a_fresh_books_other_income
Create a new FreshBooks other income entry for recording non-invoice income from sources like online stores or rentals. Returns: amount, created_at, note, updated_at, userid, vis_state. Required: account_id.
update_a_fresh_books_other_income_by_id
Update an existing FreshBooks other income entry by id. Returns: amount, created_at, updated_at, vis_state. Required: account_id, id.
delete_a_fresh_books_other_income_by_id
Delete a FreshBooks other income entry by id. Returns an empty 204 response on success. Required: account_id, id.
list_all_fresh_books_invoice_profiles
List FreshBooks invoice profiles for an account, used to generate recurring invoices. Returns each profile with id, customerid, frequency, amount, organization, currency_code, and create_date. Required: account_id. Supports search filters by profileid, currency_code, clientid, and include_unbilled_time, plus optional includes for related data such as lines, contacts, and next_issue_date.
get_single_fresh_books_invoice_profile_by_id
Get a single FreshBooks invoice profile by id. Returns the full profile including id, profileid, customerid, frequency, amount, organization, currency_code, create_date, send_email, and billing address fields. Required: account_id, id.
create_a_fresh_books_invoice_profile
Create a new FreshBooks invoice profile for recurring invoice generation. Returns the created profile including id, profileid, customerid, frequency, amount, organization, and currency_code. Required: account_id. Frequency uses the format xy where x is an integer and y is d, w, m, or y (e.g. 2w for every two weeks).
update_a_fresh_books_invoice_profile_by_id
Update an existing FreshBooks invoice profile by id with any writable fields such as frequency, send_email, or due_offset_days. Returns the updated profile including id, profileid, customerid, frequency, amount, and organization. Required: account_id, id.
delete_a_fresh_books_invoice_profile_by_id
Delete a FreshBooks invoice profile by id. Returns the deleted profile with vis_state set to 1, including id, profileid, customerid, organization, and frequency. Required: account_id, id.
fresh_books_payment_options_get_default
Get the default online payment options for a FreshBooks account. Returns: gateway_name, has_credit_card, has_ach_transfer, has_bacs_debit, has_sepa_debit, has_paypal_smart_checkout, allow_partial_payments, entity_type, entity_id, gateway_info. Required: account_id.
list_all_fresh_books_payment_options
Get the online payment options configured on a specific FreshBooks invoice. Returns: gateway_name, has_credit_card, has_ach_transfer, has_bacs_debit, has_sepa_debit, has_paypal_smart_checkout, allow_partial_payments, entity_type, entity_id, gateway_info. Required: account_id, invoice_id.
create_a_fresh_books_payment_option
Add online payment options to a specific FreshBooks invoice. Returns: gateway_name, has_credit_card, entity_type, entity_id. Required: account_id, invoice_id.
list_all_fresh_books_callbacks
List FreshBooks webhook callbacks for an account. Returns: callbackid, id, verified, uri, event. Required: account_id. Supports filtering by event, uri, and verified.
create_a_fresh_books_callback
Create a FreshBooks webhook callback by registering an event and URI. A verification code is automatically sent to the registered URI upon creation. Returns: callbackid, id, verified, uri, event. Required: account_id, event, uri.
fresh_books_callbacks_verify
Verify or resend the verification code for a FreshBooks webhook callback. Pass the verifier code to complete verification, or set resend to true to request a new code. Returns: callbackid, id, verified, uri, event. Required: account_id, callback_id.
delete_a_fresh_books_callback_by_id
Delete a FreshBooks webhook callback by id. Returns an empty 204 response on success. Required: account_id, id.
fresh_books_reports_get_invoice_details
Get the FreshBooks Invoice Details Report showing all invoice information for an account. Returns the invoice_details object including clients (each with invoices and a per-client summary), summary (total, paid, outstanding, download_token, company_name, start_date), date_type, end_date, clientids, and statusids. Required: account_id.
fresh_books_reports_get_payments_collected
Get the FreshBooks Payments Collected Report showing details of collected payments made to your business. Returns the payments_collected object including payments (invoiceid, amount, client, method, date, invoice_number), totals, download_token, start_date, end_date, currency_codes, and payment_methods. Required: account_id.
fresh_books_reports_get_profit_and_loss
Get the FreshBooks Profit and Loss Report showing income, expenses, and net profit. Returns the profit_and_loss object including income, expenses, net_profit, total_income, total_expenses, gross_margin, resolution, labels, dates, and download_token. Required: account_id, use_ledger_entries (must be set to true).
fresh_books_reports_get_tax_summary
Get the FreshBooks Tax Summary Report outlining the taxes involved with your sales. Returns the taxsummary object including taxes (tax_name, taxable_amount_paid, tax_collected, net_tax, tax_paid, taxable_amount_collected, net_taxable_amount), total_invoiced, download_token, cash_based, start_date, end_date, and currency_code. Required: account_id.
fresh_books_reports_get_trial_balance
Get the FreshBooks Trial Balance Report showing account debit and credit balances. Returns the trial_balance object including data (sub_accountid, account_name, account_number, account_sub_name, account_sub_number, debit, credit, account_type, account_sub_type), company_name, download_token, start_date, end_date, and currency_code. Required: account_id, use_ledger_entries (must be set to true).
fresh_books_reports_get_manual_journal_entry
Get a FreshBooks manual journal entry report for a business. Returns the manual_journal_entry_report containing company_name, download_token, summary with total_credit and total_debit, and data with journal entries and their transaction details. Required: business_uuid.
fresh_books_reports_get_profit_loss_v_2
Get a FreshBooks profit and loss report for a business. Returns the profit_and_loss object containing net_profit, total_income, total_expenses, income, expenses, gross_margin, labels, resolution, company_name, and download_token. Required: business_uuid, use_ledger_entries.
fresh_books_reports_get_trial_balance_v_2
Get a FreshBooks trial balance report for a business. Returns the trial_balance object containing company_name, download_token, start_date, end_date, currency_code, and data with account debit/credit balances including sub-account details. Required: business_uuid, use_ledger_entries.
fresh_books_uploads_upload_attachment
Upload a receipt or document file as an attachment in FreshBooks for later use with expense or invoice creation. Returns: filename, public_id, jwt, media_type, uuid. Required: account_id. The returned jwt and media_type are passed in the body of subsequent expense or invoice requests to attach the file.
fresh_books_uploads_upload_image
Upload a logo or banner image to FreshBooks for use with invoice presentations. Returns: filename, public_id, jwt, media_type, uuid. Required: account_id. The returned jwt and media_type are passed in the body of subsequent invoice creation requests to include the image in a presentation.
list_all_fresh_books_expense_categories
List expense categories for a FreshBooks account. Returns each category including categoryid, category, is_cogs, and parentid. Required: account_id.
get_single_fresh_books_expense_category_by_id
Get a single FreshBooks expense category by id. Returns the category object including id, category, parentid, is_cogs, vis_state, and updated. Required: account_id, id.
list_all_fresh_books_journal_entry_accounts
List journal entry accounts for a FreshBooks accounting account. Returns: sub_account, credit, debit. Required: account_id.
Why Truto
Why use Truto’s MCP server for FreshBooks
Other MCP servers give you a static tool list for one app. Truto gives you a managed, multi-tenant MCP infrastructure across 650+ integrations.
Auto-generated, always up to date
Tools are dynamically generated from curated documentation — not hand-coded. As integrations evolve, tools stay current without manual maintenance.
Fine-grained access control
Scope each MCP server to read-only, write-only, specific methods, or tagged tool groups. Expose only what your AI agent needs — nothing more.
Multi-tenant by design
Each MCP server is scoped to a single connected account with its own credentials. The URL itself is the auth token — no shared secrets, no credential leaking across tenants.
Works with every MCP client
Standard JSON-RPC 2.0 protocol. Paste the URL into Claude, ChatGPT, Cursor, or any MCP-compatible agent framework — tools are discovered automatically.
Built-in auth, rate limits, and error handling
Tool calls execute through Truto’s proxy layer with automatic OAuth refresh, rate-limit handling, and normalized error responses. No raw API plumbing in your agent.
Expiring and auditable servers
Create time-limited MCP servers for contractors or automated workflows. Optional dual-auth requires both the URL and a Truto API token for high-security environments.
How It Works
From zero to integrated
Go live with FreshBooks in under an hour. No boilerplate, no maintenance burden.
Link your customer’s FreshBooks account
Use Truto’s frontend SDK to connect your customer’s FreshBooks account. We handle all OAuth and API key flows — you don’t need to create the OAuth app.
We handle authentication
Don’t spend time refreshing access tokens or figuring out secure storage. We handle it and inject credentials into every API request.
Call our API, we call FreshBooks
Truto’s Proxy API is a 1-to-1 mapping of the FreshBooks API. You call us, we call FreshBooks, and pass the response back in the same cycle.
Unified response format
Every response follows a single format across all integrations. We translate FreshBooks’s pagination into unified cursor-based pagination. Data is always in the result attribute.
FAQs
Common questions about FreshBooks on Truto
Authentication, rate limits, data freshness, and everything else you need to know before you integrate.
What authentication method does FreshBooks use?
FreshBooks uses OAuth 2.0 for authentication. Truto handles the full OAuth flow, token refresh, and credential storage so your team doesn't need to build or maintain auth infrastructure.
Is this integration available out of the box on Truto?
FreshBooks is available as a built-on-request integration. Truto can build and ship the connector based on your specific use case, covering the API endpoints, auth handling, and data models you need.
How does the FreshBooks API handle different data domains?
The FreshBooks API is split across multiple base paths. User identity and team data live under /auth/api/v1/, while core accounting objects (invoices, expenses, clients, time entries) live under /accounting/account/{accountId}/. Truto abstracts this fragmentation so you work with a consistent interface.
Does FreshBooks support webhooks for real-time data?
Yes. FreshBooks supports webhooks for key events like invoice.create, payment.create, and others. This enables real-time reactions in your product without polling, such as updating deal statuses when payments land.
Are there any quirks with file uploads in the FreshBooks API?
Yes. Attaching a receipt or image is a two-step process: you first POST the file to a /uploads endpoint to receive a JWT token, then pass that JWT in the payload of the subsequent expense or invoice creation call. Truto can handle this workflow for you.
What OAuth scopes are required for common operations?
FreshBooks enforces granular OAuth scopes. Standard accounting operations use typical scopes, but managing team members or certain business-level settings requires the admin:all:legacy scope. Truto configures the correct scopes based on the data your integration needs to access.
From the Blog
FreshBooks integration guides
Deep dives, architecture guides, and practical tutorials for building FreshBooks integrations.
FreshBooks
Get FreshBooks integrated into your app
Our team understands what it takes to make a FreshBooks integration successful. A short, crisp 30 minute call with folks who understand the problem.