Invoicing from Clockify on the Free Plan: Billable Rates Are Paid, Here Is the Workaround
You tracked the hours, the client wants an invoice this week, and the money half of Clockify sits behind a paywall. Here is the route from raw entries to a sendable invoice without upgrading — and where it runs out.
What Free actually blocks
Two features, gated at two different levels — which is why people meet them a day apart.
Billable rates are a paid feature. Clockify's help centre calls billable rate "a paid feature available on any paid plan"; its hourly rates page says Basic and above. Its summary of the Free plan changes is blunter: "You can no longer set hourly rates, assign dollar amounts to projects."
Creating an invoice needs more. Building an invoice from a report is documented as available "on Standard and higher subscription plans" — Basic buys rates and amounts, not the invoice.
| What you want | Lowest plan that has it |
|---|---|
| Mark an entry billable / non-billable | Any paid plan (Basic and up) |
| Hourly rates and money amounts | Basic and up |
| CSV or Excel export of a report | Basic and up (Free is PDF only) |
| Create an invoice from a report | Standard and up |
Two more Free limits matter here: exports are PDF only, and the report date-range filter is capped at one month (31 days) per query — a quarterly invoice means three exports.
The consequence people miss: every entry comes back non-billable
Billable is not just a rate — it is the flag itself. Clockify describes the removed capability as "the ability to toggle time entries as billable/non-billable and assign financial amounts to projects", and notes the billable icon no longer appears on the Free tier. No switch to turn on means every entry is non-billable.
This propagates downstream. Whether you read your data from a PDF report, a connector or the API directly, the billable field is off for every row, with no rate to multiply by. Any "amount" column is empty, and filtering to billable entries returns nothing.
One wrinkle: a new workspace starts on a trial with all paid features on. If you saw billable working and then watched it vanish, that is the trial expiring, not a bug.
So stop trying to get money out of Clockify on Free. Get hours out, and keep rates where you control them.
Get the entries out with date, description, project, start, end, hours
You need one row per entry, with enough columns to defend a line item: date, description, project, start, end, hours. Those turn "14 hours" into something a client can check.
- PDF report. Available, but you are copy-pasting out of a PDF, 31 days at a time. It works once; it does not survive as a monthly habit.
- The Clockify API. Free workspaces can use it, so this route keeps working. Note the limit: Clockify documents that newly created Free workspaces are capped at 30 API requests per hour, against 50 per second on paid plans. A monthly pull is a handful of requests; a loop that re-polls is not. The Apps Script version of this pull is written out here.
Either way the target is rows in decimal hours, not 2:25 — you are about to multiply that number.
Apply your rate in the sheet instead of in Clockify
Make a second tab called Rates: the project name exactly as it appears in Clockify, and the hourly rate. One advantage over the real feature — you can change a rate retroactively without touching your records.
| Project | Rate |
|---|---|
| Acme — website redesign | 65.00 |
| Nord Consulting — Q3 retainer | 80.00 |
| (no project) | 0.00 |
The imported rows sit on a sheet named Hours: project in column C, hours in column F, and column G already occupied by the billable flag. So build the money columns on a separate tab and point them at Hours explicitly. On a tab called Invoice, row 2, column A holds the rate and column B the amount:
- Rate:
=IFERROR(VLOOKUP(Hours!$C2, Rates!$A:$B, 2, FALSE), 0) - Amount:
=Hours!$F2 * $A2
Fill both down as far as your rows go. The IFERROR is deliberate: a project missing from the rate table shows zero, not #N/A.
Do not put these formulas beside the imported rows. Every import clears and rewrites the entries sheet — HourSync included — so a rate column added inside Hours is wiped on the next refresh, and a sheet-local $C2 would point at the wrong tab anyway.
Round and group the way the client expects
Rounding
Round at the level you bill, and round once. Rounding each entry up to the quarter hour and then summing inflates the total badly: forty entries of 6 minutes become 10 hours instead of 4. Round per entry or round the total, never quietly both.
- Quarter-hour, rounded up:
=CEILING($F2, 0.25) - Nearest quarter-hour:
=MROUND($F2, 0.25) - Two decimals on the total only:
=ROUND(SUM(range), 2)
Grouping
Per project is the usual default and easiest to defend; per day suits clients who want a work diary.
A per-project total is one SUMIF: =SUMIF(Hours!$C:$C, $A2, Hours!$F:$F). For grouping and totals together, =QUERY(Hours!A:F, "select C, sum(F) where C is not null group by C label sum(F) 'Hours'", 1) re-computes after every import.
Turn the summary into an invoice, and what to leave out
Grouped hours plus an amount per group is a line-item table — most of an invoice. Clockify publishes free invoice templates in Google Docs, Sheets, Word, Excel and PDF, downloadable without an account or a paid plan: they are a marketing asset, not a product feature, so the Standard-plan gate does not apply.
What to leave out matters as much as what goes in:
- Start and end times. They invite a line-by-line audit of your working day. Keep them in the sheet as evidence, and produce them only if challenged.
- The billable column. On Free it reads "no" for every row — confusing at best.
- Internal descriptions. "Fixing the thing I broke on Tuesday" is an honest time entry and a bad line item. Rewrite for the client.
- Zero-amount rows. Admin time you are not charging for does not need a €0 line.
Keep the detailed sheet, send the summary.
Multiple rates and multiple currencies: where a spreadsheet stops being enough
The rate-table approach handles one rate per project cleanly. It handles these badly:
- Rates that changed mid-period. A single lookup applies today's rate to March's hours. You need valid-from dates and a lookup on the entry date — a source of silent errors.
- Different rates per person, or per task inside one project. The key becomes two columns, so the simple
VLOOKUPturns into an index-match. - Multiple currencies. This is where I would stop: a spreadsheet will happily add euros to dollars and hand you a confident wrong number.
Rule of thumb: if your pricing fits in one sentence, a spreadsheet is fine. If the sentence needs an "except when", price the upgrade.
Clockify Standard versus staying on Free and doing this in Sheets
Clockify charges per seat and displays the currency it judges most relevant to your region, so what you see may not be dollars; its pricing page says prices are shown without taxes and that VAT is added at checkout where Clockify is legally required to collect it. In US dollars, at the time of writing, Basic is $4.99 per seat/month billed monthly ($3.99 annually), Standard $6.99 ($5.49 annually). Standard is the first plan that creates invoices.
So for a solo freelancer: about $7 a month for invoicing inside the tool where the hours live, against $0 and thirty minutes of setup. Upgrade if you invoice several clients monthly, or your rates vary by task or person. Stay on Free if you invoice one or two, or want workings you can audit.
To be clear: HourSync does not undercut Clockify Standard. HourSync is €19/month, more than a Standard seat. They do different jobs — Standard makes invoices inside Clockify; HourSync moves hours into the spreadsheet you invoice from. If Clockify's own invoicing is what you want, buy Standard.
Where HourSync's Summary sheet fits, and its current availability
HourSync is a Google Sheets add-on that does Step 1 and part of Step 3. It reads entries through the Clockify API — which Free workspaces can use — and writes them into a sheet named Hours: date, description, project, start, end, hours, billable. Every import rewrites that sheet, so your formulas keep pointing at one range.
On Pro it also writes a Summary sheet: one row per project sorted alphabetically, total hours, and a TOTAL row — the grouped-hours table from Step 3. You still add the rate lookup on your own tab, because HourSync does not know your rates and never asks.
| Project | Total hours |
|---|---|
| Acme — website redesign | 8.42 |
| Nord Consulting — Q3 retainer | 2.83 |
| (no project) | 0.67 |
| TOTAL | 11.92 |
Pro adds the project filter, the billable filter, the Summary sheet and a daily refresh — with the caveat that follows from everything above: the billable filter is useless on a Free Clockify workspace, because every entry there is non-billable. The rest works on any plan.
How to get it: HourSync is available now in Google Workspace Marketplace.
Try HourSync free for 14 daysNo credit card. Your trial starts on the first import. Need help? Write to danibarbers13@gmail.com.
If you need to invoice this week, the four steps above work with a PDF export and an afternoon. More on how HourSync works and what it costs.