Clockify to QuickBooks Billable Time Aggregation (Make.com)

Automatically convert Clockify time entries into detailed QuickBooks Online Invoices using Make.com's powerful data aggregators.

Tools: ClockifyQuickBooks

Platform: Make.com

Short Answer

Users get a fully automated billing pipeline where approved Clockify hours are fetched, grouped by project using Make.com Array Aggregators, and generated as draft QuickBooks Invoices with precise line items, ensuring 100% accuracy in billable totals.

The Problem

Manual entry of time logs into QuickBooks leads to billing lag, human error, and missed revenue. While point-to-point syncs create cluttered invoices, businesses need a way to group multiple time entries into a single, professional invoice based on project completion or approval.

The Outcome

Users get a fully automated billing pipeline where approved Clockify hours are fetched, grouped by project using Make.com Array Aggregators, and generated as draft QuickBooks Invoices with precise line items, ensuring 100% accuracy in billable totals.

Step-by-Step Guide

1. **Create Scenario & Trigger**: Add the **Clockify > Watch Time Entries** module. Set the 'Limit' based on your expected volume. Connect your Clockify API Key. 2. **Apply Filter**: Add a Filter after the trigger where `Billable` is equal to `true` (boolean). 3. **Identify Customer**: Add a **QuickBooks Online > Search Customers** module. Search by `Client Name` from Clockify to retrieve the `Customer ID` required for the invoice. 4. **Add Router (Optional)**: If a customer isn't found, use a Router to create a new customer or send an error notification. 5. **Standardize Data**: Add a **Tools > Set Variable** module to format the duration. Use the formula `{{round(item.timeInterval.duration / 3600; 2)}}` to convert Clockify seconds into decimal hours. 6. **Aggregate Entries**: Add the **Array Aggregator** module. Set the 'Source Module' to your Clockify Trigger. Under 'Target Structure', select the QuickBooks Invoice 'Line Items' structure. This groups individual logs into one bundle. 7. **Map to QuickBooks**: Add the **QuickBooks Online > Create an Invoice** module. Map the `Customer ID` from Step 3. In the 'Line Items' field, toggle the 'Map' switch and drag in the array output from the Aggregator. 8. **Update Status**: Add a **Clockify > Update a Time Entry** module. Use the ID from the trigger to add a tag like 'Invoiced' or 'Synced' to prevent duplicate processing. 9. **Error Handling**: Right-click the QuickBooks module and select **Add Error Handler (Break)** to ensure that if the API is down, Make.com retries the operation instead of losing the data bundle.

Data Mapping

| Clockify Field | QuickBooks Field | Make.com Transformation/Logic | | :--- | :--- | :--- | | `timeInterval.duration` | `Line Item: Qty` | `{{round(item.duration / 3600; 2)}}` (Seconds to Hours) | | `description` | `Line Item: Description` | `{{item.description}}` (Default to 'No Description' if empty) | | `clientName` | `Customer ID` | Use **Search Customers** module to map Name to Internal ID | | `project.name` | `Service / Product` | Use `switch()` function to map Project Names to QB Items | | `now` | `Invoice Date` | `{{now}}` (Make.com system variable) | | `billable` | `Filter Criteria` | Only process bundle if `true` |

Gotchas & Failure Modes

• **Rate Limiting**: Clockify and QuickBooks both have API limits. If processing >100 entries, add a **Sleep** module or set the Scenario 'Max number of cycles' to a lower value. • **Duration Format**: Clockify exports durations in seconds (e.g., 3600). QuickBooks expects decimal hours (1.0). Use the division formula `math(/3600)` to avoid billing errors. • **Connection Refresh**: QuickBooks OAuth tokens in Make.com may occasionally expire. Ensure 'Verify Connection' is checked in the module settings. • **Customer Matching**: If the Clockify Client Name doesn't *exactly* match the QuickBooks Customer Display Name, the search will fail. Use the `trim()` and `lower()` functions to normalize names during the search.

Verification Checklist

- [ ] **Run Once**: Use the 'Run Once' button with a single test entry in Clockify. - [ ] **Check Aggregator**: Verify the 'Bundles' count in the Array Aggregator to ensure multiple time entries are merging. - [ ] **Verify Line Items**: Open the draft invoice in QuickBooks 'SandBox' or 'Production' to ensure the description and hours match Clockify exactly. - [ ] **Check Filter**: Ensure entries marked 'Non-Billable' are successfully stopped by the filter. - [ ] **Test Error Handler**: Deliberately disconnect the QuickBooks module to see if the Error Handler captures the failure.

Ready to Automate?

Build this automation with Make.com in minutes.