Exact Online and BambooHR integration
Exact Online manages your finance and operations. BambooHR manages your people and payroll. Connecting the two keeps your workforce data in sync and your GL accounts aligned with actual headcount. New hires and terminations in BambooHR flow into Exact Online so your employee roster stays current, and compensation changes are recorded in the right GL dimension for cost allocation. ml-connector handles the region-specific URLs on the Exact Online side and the per-customer subdomain on BambooHR, keeping both OAuth2 tokens fresh and tracking every change in a full audit trail.
What moves between them
Employee records and compensation history flow from BambooHR into Exact Online. ml-connector reads new hires, terminations, and job changes from BambooHR's employee.created, employee.updated, and employee.deleted webhooks, fetches full employee and compensation records via REST, and writes them to Exact Online's Employee entity. Cost centers and job classifications are aligned so payroll allocations map to valid Exact Online GL dimensions. BambooHR webhooks provide push notifications, reducing the need for polling; Exact Online's Employee endpoint is read-only, so ml-connector never writes changes back to BambooHR.
How ml-connector handles it
ml-connector stores both OAuth2 credential sets encrypted and refreshes BambooHR's access token when it approaches the one-hour expiry, and Exact Online's access token when it reaches the 10-minute limit. For each customer, ml-connector registers a webhook listener on BambooHR to receive employee.created, employee.updated, and employee.deleted events, validates the HMAC-SHA256 signature, and fetches the full employee record (with compensation history) via REST. It then maps BambooHR job titles, departments, and compensation bands to Exact Online cost centers and GL account codes, writing to the Employee entity at the customer's registered division URL. If a webhook delivery fails or a downstream write fails, ml-connector retries with exponential backoff and preserves every record in a full audit log so no hire or termination is lost. BambooHR's refresh tokens rotate on every use and expire after 30 days if unused, so ml-connector forces a refresh at least every 25 days to maintain a valid token without interruption.
A real-world example
A mid-sized European business services firm runs Exact Online for finance and operations across multiple divisions and uses BambooHR for HR and payroll across three countries. Before the integration, the finance team received a payroll headcount export from BambooHR each month and manually entered employee names, cost centers, and salary grades into Exact Online, then corrected mismatches during month-end reconciliation. With BambooHR and Exact Online connected, every new hire flows immediately into Exact Online's employee master, job changes update cost center allocations, and terminations are recorded with no manual re-entry. The finance team now starts close with an employee roster that is already aligned, eliminating the manual reconciliation step and reducing errors.
What you can do
- Sync employee records from BambooHR into Exact Online, including name, job title, employment status, and cost center assignment.
- Receive BambooHR webhook notifications for new hires, job changes, and terminations, and fetch full employee and compensation history automatically.
- Map BambooHR departments, job titles, and compensation bands to Exact Online GL accounts and cost centers so payroll allocations are routed to the correct dimension.
- Manage OAuth2 token lifecycle on both sides, refreshing BambooHR access tokens before they expire and maintaining a valid refresh token for up to 30 days of rotation.
- Preserve a full audit trail of every employee record synced, with automatic retry on failure so no hire or termination is lost.
Questions
- Which direction does data move between Exact Online and BambooHR?
- Employee records, job titles, and compensation data move from BambooHR into Exact Online. Cost centers and job classifications are aligned in both directions so payroll allocations map to valid GL accounts. Exact Online's Employee endpoint is read-only, so ml-connector does not write changes back to BambooHR.
- How does ml-connector handle the different OAuth2 token lifetimes on each side?
- BambooHR access tokens expire in one hour and must be refreshed frequently, while Exact Online access tokens expire in 10 minutes. ml-connector monitors both and refreshes them on schedule before expiry. BambooHR refresh tokens rotate on every use and expire after 30 days, so ml-connector forces a refresh at least every 25 days to ensure a valid token without re-authorization.
- How are region-specific Exact Online URLs and per-customer BambooHR subdomains handled?
- ml-connector accepts the region (Netherlands, Belgium, UK, Germany, France, Spain, or USA) per customer to construct the correct Exact Online base URL and division ID, and accepts the BambooHR company subdomain to build the per-customer token endpoint and API base URL. Credentials and region preferences are stored encrypted per customer.
Related integrations
More Exact Online integrations
Other systems that connect to BambooHR
Connect Exact Online and BambooHR
Free to use. Add your credentials, ping your real systems, and see if we fit.
Get started