Sync Clockify Time Entries to QuickBooks Online (n8n)

Automate billable hours and project costing using n8n's visual node-based workflows.

Tools: ClockifyQuickBooks

Platform: n8n

Short Answer

A seamless, automated flow where approved Clockify time entries are instantly converted into QuickBooks Time Activities or Invoices. This ensures 100% data accuracy, faster client billing, and real-time project profitability reporting within QuickBooks.

The Problem

Manual entry of time logs from tracking apps into accounting software is time-consuming and prone to human error, often leading to missed billable minutes or inaccurate project costing. This process delays invoicing cycles and creates discrepancies between tracked work and client bills.

The Outcome

A seamless, automated flow where approved Clockify time entries are instantly converted into QuickBooks Time Activities or Invoices. This ensures 100% data accuracy, faster client billing, and real-time project profitability reporting within QuickBooks.

Step-by-Step Guide

1. **Setup Clockify Trigger**: Add the 'Clockify Trigger' node. Set the event to 'New Time Entry'. Use a Webhook to receive data in real-time. 2. **Configure Credentials**: In n8n, create new credentials for Clockify using your API Key and QuickBooks Online using OAuth2 (follow the redirect URL prompt). 3. **Search Customer**: Add a 'QuickBooks Online' node. Set the resource to 'Customer' and operation to 'Get All'. Use a Filter expression to match the Clockify 'Client' name. 4. **Logic Check (If Node)**: Use an 'IF' node to check if the Customer search returned a result. If `{{ $node["QuickBooks"].json["id"] }}` is empty, route to a 'Create Customer' node. 5. **Format Time (Code Node)**: Clockify provides duration in seconds. Create a 'Code' node to convert seconds to hours for QuickBooks. Use: `item.hours = item.duration / 3600;`. 6. **Map Employees**: Add a 'Match' or 'Set' node to map Clockify User Emails to QuickBooks Employee IDs. This ensures the time log is attributed to the correct person. 7. **Create Time Activity**: Add another QuickBooks node. Set Resource to 'Time Activity'. Map `hours` from the Code node, `customerId` from the search step, and the `description` from Clockify. 8. **Data Transformation**: Use n8n Expressions to format the date: `{{ $json.timeInterval.start.toDate().toISOString() }}` to satisfy QuickBooks API requirements. 9. **Add Error Handling**: Create an 'Error Trigger' node to catch failed executions. Connect it to an email or Slack node to notify the admin if a sync fails (e.g., due to a missing service item).