Automated Service-to-Billing: Clockify to QuickBooks Online (n8n)

Streamline client invoicing by syncing billable time entries into QuickBooks Time Activities using n8n’s powerful node-based logic.

Tools: ClockifyQuickBooks

Platform: n8n

Short Answer

A self-hosted or cloud n8n workflow that automatically detects completed time entries in Clockify, maps them to the correct QuickBooks Customer, and creates a 'Time Activity' record ready for payroll or instant invoicing.

The Problem

Manual entry of billable hours from tracking apps to accounting software is prone to human error and delays. Without automation, businesses often miss billable minutes or fail to reconcile employee labor costs against specific project budgets.

The Outcome

A self-hosted or cloud n8n workflow that automatically detects completed time entries in Clockify, maps them to the correct QuickBooks Customer, and creates a 'Time Activity' record ready for payroll or instant invoicing.

Step-by-Step Guide

1. **Establish Credentials**: In n8n, go to 'Credentials' and set up 'Clockify API' (using your API Key) and 'QuickBooks Online OAuth2'. 2. **Configure Clockify Trigger**: Add the 'Clockify Trigger' node. Set the 'Resource' to `Time Entry` and 'Event' to `New Time Entry`. Ensure you select the correct Workspace ID. 3. **Filter Billable Hours**: Add an 'IF Node' to check if `{{ $json.billable }}` is true. This prevents internal administrative time from cluttering QuickBooks. 4. **Map Customer via Search**: QuickBooks requires a unique `Customer ID`. Add a 'QuickBooks Online' node, set Resource to `Customer` and Operation to `Get All`. Use a Query parameter `DisplayName = '{{ $json.clientName }}'` to retrieve the matching ID. 5. **Format Duration**: Clockify often sends duration in ISO8601 or seconds. Use an 'Expression' in the next node to convert this to hours and minutes, as QuickBooks expects `Hours` and `Minutes` integers or a decimal format. 6. **Create Time Activity**: Add another 'QuickBooks Online' node. Set Operation to `Create` for the `Time Activity` resource. Map the `Customer ID` from Step 4 and the `Duration` and `Description` from the Trigger node. 7. **Handle Multi-Employee Mapping**: Use an n8n 'Switch Node' or a static mapping JSON if your Clockify User emails don't perfectly match QuickBooks Employee names. 8. **Implement Error Handling**: Create an 'Error Trigger' workflow. In your main workflow 'Settings', set 'Error Workflow' to this new scratchpad to catch API timeouts or 404s. 9. **Test with Execution Data**: Click 'Execute Workflow' and stop a timer in Clockify. Verify the data flow in the n8n execution canvas before setting the workflow to 'Active'.