How Time Entries Become Invoice Line Items
In this article
Logging time and billing for it are two separate actions, connected by a single field: which invoice a time entry is attached to. Understanding that one relationship explains most of what you need to know about how tracked hours turn into invoice line items, why an entry can only be billed once, and what "billable" actually controls.
What a Time Entry Actually Stores
Each logged time entry records a description of the work, the number of hours, an hourly rate, the date the work was done, whether it's billable at all, and — critically — which invoice group it's attached to, if any. That last field starts empty. A freshly logged entry isn't connected to any invoice; it just sits in your time log as a record of work done, waiting to be billed or not.
The "Billable" Flag Doesn't Mean "Already Billed"
It's easy to conflate these two ideas, but they're independent. Marking a time entry as billable just means it's eligible to be included on an invoice — it's a filter, not a status. An entry can be billable and still sitting completely unbilled weeks later if you haven't gotten around to invoicing that client yet. Conversely, a non-billable entry — internal admin time, a goodwill fix you're not charging for — is excluded from that filter entirely, so it never shows up as a candidate when you're building an invoice from tracked hours, no matter how much time has passed.
How Entries Get Attached to an Invoice
When you're ready to bill tracked time, you select the entries you want to include and mark them against a specific invoice group ID in a single action. This writes that invoice group ID directly onto each selected time entry — the entries themselves become the record of what got billed where, rather than the invoice separately tracking which entries it pulled from. Once an entry has an invoice group ID attached, it's no longer sitting in the unbilled pool; the next time you go to build an invoice from tracked hours, that entry won't appear as available, because it's already spoken for.
Why This Prevents Double-Billing
Because the invoice group ID lives on the time entry itself, not on some separate join table that could fall out of sync, there's no scenario where the same hour of work gets attached to two different invoices by accident through the normal billing flow. If you try to bill a client for tracked hours and an entry was already marked against a previous invoice, it simply won't be in the list of what's available to select — the system doesn't need to cross-check for duplicates after the fact, because the entry's own record already reflects that it's spoken for.
What Happens If You Need to Un-Bill an Entry
If an invoice gets voided or you need to move a time entry to a different invoice, the fix is to clear the invoice group ID off that entry, which returns it to the unbilled pool. This is a manual correction rather than something that happens automatically when an invoice is deleted or its status changes — the time entry doesn't know, on its own, that the invoice it was attached to no longer exists or was cancelled, so it's worth checking your time log after voiding an invoice that had tracked hours billed against it.
Hourly Rate Is Captured at Entry Time, Not Invoice Time
The rate stored on a time entry is set when the entry is logged, not pulled fresh from your current rate settings when you eventually invoice it. If you raise your hourly rate next month, entries logged last month under the old rate still bill at the old rate when you get around to invoicing them — the rate travels with the entry, not with the client or the invoice.
Frequently Asked Questions
Can I bill time entries from multiple dates on one invoice? Yes. There's no requirement that entries share a date, a week, or any particular grouping — you select whichever unbilled, billable entries you want, regardless of when they were logged, and mark them against the same invoice group in one action.
What happens to a time entry if I delete the client it's associated with? The entry's link to that client is set to empty rather than the entry itself being deleted, so your historical time log and billing record stay intact even if the underlying client record is removed later.
Does marking an entry non-billable after it's already been invoiced do anything? No — the billable flag only affects whether an entry shows up as a candidate for a future invoice. It has no effect on an entry that already has an invoice group ID attached; that entry is already billed regardless of how the billable flag is set afterward.
Related Articles
How Business Profile Defaults Fill In New Invoices
Your business profile fills in your details, currency, tax rate, payment terms, and design on new blank invoices only. It never changes invoices you've already started, and only workspace admins can edit it.
What Your Client Receives When You Email an Invoice
The email is a short summary with the invoice number, issue date, due date, and total. It doesn't attach the PDF or include a link, and it comes from a no-reply address, so it helps to know what to send with it.
What Happens to Invoices You Create Without an Account
Without an account, saved invoices are kept in your browser's local storage, not on our servers. They aren't copied into an account when you sign up, and signing out of an account on that browser clears them.
Why Editing an Invoice Doesn't Update a Share Link You Already Sent
A share link stores a copy of the invoice as it was when you created the link. Later edits change your saved invoice, but anyone opening the old link still sees the old version, and so does the QR code on a re-downloaded PDF.
Deleting a Client Doesn't Touch Their Invoices
Saved clients are an address book, not a foreign key — invoices store billing details as their own inline copy, so deleting a client record leaves every invoice you've sent them completely intact.
What Happens When You Convert an Estimate to an Invoice
Converting doesn't turn the estimate into an invoice in place — it creates a brand-new invoice with a new ID and marks the original estimate as converted, permanently linking the two in both directions.