ml-connector
FreshBooksRippling

FreshBooks and Rippling integration

FreshBooks manages your invoices, bills, and chart of accounts. Rippling manages your employees, payroll, and compensation. Connecting them keeps your labor costs aligned with your accounting records. Employee hires and changes in Rippling appear as updated client records or expense allocations in FreshBooks, and payroll expenses from Rippling can be posted to your FreshBooks expense categories or journal entries on a schedule you control.

How FreshBooks works

FreshBooks exposes clients, invoices, bills, expenses, payments, and chart of accounts through a REST API at https://api.freshbooks.com. Authentication uses OAuth2 user-delegated authorization (not Client Credentials), so integrations act on behalf of an authenticated user. FreshBooks sends real-time event notifications via webhooks for invoice, bill, payment, and client changes, with HMAC-SHA256 signatures. The webhook endpoint must accept the payload within 10 seconds, and failed or non-2xx responses trigger retries until the callback is disabled. Webhook events arrive within seconds to minutes of system activity.

How Rippling works

Rippling exposes employees, payroll runs, compensation, departments, legal entities, and accounting dimensions through REST APIs at https://api.rippling.com/platform/api (v1) and https://rest.ripplingapis.com (v2). Authentication is via OAuth2 Authorization Code (for App Shop integrations) or API Key bearer tokens (for direct server-to-server). Webhooks are available only to App Shop integrations and cover employee lifecycle events; direct API-key integrations must poll the company activity log or query employees with an updated_at filter. Compensation data may be redacted based on entitlement restrictions. Time entries support Idempotency-Key headers for safe retries.

What moves between them

The main flow runs from Rippling into FreshBooks. When payroll runs complete in Rippling, ml-connector retrieves the payroll data, maps employee records and compensation to FreshBooks clients and expense categories, and creates or updates those records. Employee lifecycle events (hire, termination, rehire, department change) in Rippling trigger updates to matching client records in FreshBooks. FreshBooks webhooks flow back to track invoice and payment changes, which can be reconciled against Rippling payroll allocations. The sync runs on a schedule tied to your payroll cycle, typically after payroll is finalized in Rippling.

How ml-connector handles it

ml-connector manages two different OAuth flows: FreshBooks requires user-delegated OAuth and acts with delegated authority, while Rippling can use either user OAuth (App Shop) or API key bearer tokens for direct integrations. For Rippling webhook-enabled (App Shop) integrations, ml-connector subscribes to employee lifecycle events and processes them immediately. For API-key integrations, it polls the Rippling company activity log or queries the employees endpoint with an updated_at filter to detect changes. FreshBooks webhooks are received and validated with HMAC-SHA256 signatures. Both sides support retries: FreshBooks retries failed webhooks until disabled, while Rippling time entries use Idempotency-Key headers to prevent duplicate processing. Cost allocations are mapped between Rippling accounting dimensions (departments, legal entities, teams) and FreshBooks chart of accounts to ensure labor expenses land on the correct cost center. Because FreshBooks webhooks can arrive within seconds to minutes and Rippling payroll completion is asynchronous, ml-connector tracks event timestamps and idempotent keys to prevent out-of-order or duplicate postings. Every record carries a full audit trail showing source, timestamp, mapping rules applied, and any transformations.

A real-world example

A small to mid-sized services firm uses FreshBooks for accounting and invoicing and Rippling for payroll and HR. Each month the payroll team runs payroll in Rippling covering employee compensation across multiple departments. Before the integration, the finance team manually exported payroll reports from Rippling, mapped employee names and compensation totals to FreshBooks client records and expense categories by hand, and entered the data into FreshBooks for month-end close. With FreshBooks and Rippling connected, payroll completion triggers an automated sync that creates or updates client records for employees, posts labor expenses to the correct cost center in FreshBooks, and pre-fills the expense data so the finance team can verify totals rather than re-entering them. Month-end close is faster and labor costs are automatically reconciled with the chart of accounts.

What you can do

  • Sync employee records from Rippling to FreshBooks clients and maintain them as payroll changes occur.
  • Map Rippling payroll runs and compensation to FreshBooks expenses or journal entries, allocated to the correct cost center.
  • Receive FreshBooks webhook notifications for invoices, bills, and payments to reconcile against Rippling payroll.
  • Authenticate FreshBooks with user-delegated OAuth2 and Rippling with either OAuth2 or API key bearer tokens.
  • Poll Rippling for employee lifecycle changes and payroll completion, with retries and a full audit trail on every record.

Questions

How does the integration handle the difference between FreshBooks webhooks and Rippling polling?
FreshBooks pushes webhooks for transaction changes, which ml-connector receives and validates with HMAC-SHA256. Rippling requires polling via the company activity log or employees endpoint for API-key integrations, or webhooks for App Shop integrations. ml-connector handles both modes: subscribing to Rippling webhooks where available and polling where not, so payroll and employee data reach FreshBooks on schedule after each payroll run.
What does ml-connector do with Rippling compensation that might be redacted?
Rippling redacts compensation data based on entitlement restrictions, so some fields may not be visible depending on the authenticating user's role. ml-connector uses only the fields available to the configured OAuth user or API key, mapping accessible compensation and department data to FreshBooks expense categories and accounting dimensions. If redaction prevents access to critical cost allocations, the sync will surface the missing data so the user can adjust scopes or authentication methods.
Which direction does data move, and what happens to FreshBooks-side changes?
The primary flow is Rippling into FreshBooks: employee records and payroll expenses are created or updated in FreshBooks. FreshBooks webhooks are received to track invoice and payment changes, which can be used to verify that labor allocations match actual payroll runs. FreshBooks is not the source of truth for employee or payroll data; changes to client records or expenses in FreshBooks are not synced back to Rippling.

Related integrations

Connect FreshBooks and Rippling

Free to use. Add your credentials, ping your real systems, and see if we fit.

Get started