Automated Clockify Time Entries to Xero Invoicing (Make.com)

Eliminate manual data entry by automatically syncing billable Clockify hours to Xero draft invoices using Make.com scenarios.

Tools: ClockifyXero

Platform: Make.com

Short Answer

A seamless, real-time workflow where stopped timers in Clockify trigger the creation or update of draft invoices in Xero. This ensures 100% billing accuracy, consistent client data, and reduced administrative overhead.

The Problem

Manual transfer of billable hours from Clockify to Xero is time-consuming and prone to human error, often leading to delayed billing or missed revenue. Businesses struggle to maintain accurate time logs across both platforms for payroll and client invoicing.

The Outcome

A seamless, real-time workflow where stopped timers in Clockify trigger the creation or update of draft invoices in Xero. This ensures 100% billing accuracy, consistent client data, and reduced administrative overhead.

Step-by-Step Guide

1. **Establish Connections**: In Make.com, create a new scenario. Add a Clockify module and click 'Add' to authorize your API Key. Separately, add a Xero module and follow the OAuth 2.0 prompts to link your Xero organization. 2. **Set Trigger**: Select the **Clockify > Watch Time Entries** module. Set the 'Limit' to 10. Choose 'Only stopped' entries to ensure you only process finished work. 3. **Add Filter**: Click the line between Clockify and the next module. Label it 'Billable Only'. Set conditions: `Billable` Equal to `true` AND `Project Name` Exists. 4. **Map the Client**: Add the **Xero > Search Contacts** module. Map the Clockify `Client Name` to the Xero `Name` field. This prevents duplicate contacts. 5. **Router for Contact Creation**: Add a Router. If 'Search Contacts' returns no results, use **Xero > Create a Contact** using the Clockify Client Name. 6. **Format Duration**: Add a **Tools > Set Variable** module. Since Clockify provides duration in seconds, use this Make.com formula: `{{formatNumber(item.timeInterval.duration / 3600; 2)}}`. This converts seconds into the decimal hours Xero requires (e.g., 1.5). 7. **Generate Invoice**: Add **Xero > Create an Invoice**. Set 'Status' to `DRAFT`. Map the Contact ID from the previous step. In the 'Line Items' array, map the Clockify description to 'Description', the calculated decimal hours to 'Quantity', and the project hourly rate to 'Unit Amount'. 8. **Account Mapping**: Hardcode the Xero 'Account Code' (e.g., 200 - Sales) in the Line Item section to ensure financial accuracy. 9. **Error Handling**: Right-click the Xero module and select 'Add error handler'. Use a **Break** module to store records that fail (e.g., due to invalid tax rates) for manual retry later.

Data Mapping

| Clockify Field | Xero Field | Transformation/Notes | | :--- | :--- | :--- | | `Client Name` | `Contact Name` | Required; used for Search/Create lookup | | `Description` | `Line Item: Description` | Includes project name for clarity | | `Time Interval: Duration` | `Line Item: Quantity` | `{{duration / 3600}}` (Decimal format) | | `Hourly Rate` | `Line Item: Unit Amount` | Default to project rate if entry rate is null | | `Project Name` | `Reference` | Helps track revenue by project in Xero | | `End Time` | `Date` | `{{formatDate(endTime; "YYYY-MM-DD")}}` |

Gotchas & Failure Modes

* **Decimal Precision**: Xero requires hours in decimals. If you map raw seconds, your invoice will be grossly inflated. Always use the divide by 3600 formula. * **Xero Rate Limits**: Xero has a limit of 5,000 API calls per day. Avoid 'Polling' every minute; set your Clockify trigger to run every 15-60 minutes to conserve operations. * **Tenant ID**: In Make.com, ensure the 'Organization' or 'Tenant ID' field in Xero modules is selected manually if it doesn't auto-populate, otherwise, the scenario will fail. * **Deleted Clients**: If a client is deleted in Xero but exists in Clockify, the 'Search Contact' module will return null. Always use a Router or 'Create Contact' fall-back step.

Verification Checklist

- [ ] **Test Run**: Trigger the scenario manually using a single stopped timer in Clockify. - [ ] **Math Check**: Verify that a 30-minute entry appears as 0.5 in the Xero Draft Invoice. - [ ] **Filter Check**: Ensure non-billable time entries are ignored by the scenario (check History tab). - [ ] **Connection Refresh**: Ensure the Xero OAuth connection is 'green' in the Make connection manager. - [ ] **Mapping Check**: Open the Xero Draft Invoice and verify the 'Sales Account Code' is correctly applied.

Ready to Automate?

Build this automation with Make.com in minutes.