Guide · 9-minute read
How to invoice hourly work cleanly.
Hourly invoicing is one of the easiest things to make harder than it needs to be. The math is straightforward; the friction is in inconsistent line items, surprising clients, and chasing payment after send. This guide walks through how to invoice cleanly.
Last updated May 27, 2026
Three invoice models, pick one as the default
Time-derived: every line is tracked hours × project rate. Clean when all work was tracked. The risk is forgetting flat fees that didn't get tracked.
Fixed-fee: project contract amounts become quantity-one fixed-fee lines, independent of tracked delivery hours. Reconcile existing projects once, then invoice all or part of the remaining contract balance.
Mixed: select exact hourly entries and fixed-project amounts together, then add expenses or optional custom lines. This is the right default for most freelancers and small agencies — the spreadsheet path leads here anyway, so just start here.
Line item anatomy
A clean hourly line has four parts: description (what you did, in plain language the client recognizes), quantity (hours, with two decimal places), unit price (the project rate), and amount (computed). A fixed-project line uses quantity 1.00, the unit 'fixed fee,' and the contract amount selected for this invoice; a custom line can still use labels such as engagement or milestone.
Avoid: cryptic project codes the client doesn't recognize, abbreviations only your team uses, line items with no description, or a single line item for the whole month ('Services rendered — $4,500'). Clients pay invoices they understand faster than invoices they don't.
Discount and tax, in that order
Apply discount first, tax second. Math: subtotal − discount = taxable amount; taxable amount × (1 + tax rate) = total. This is the universal convention; if your local tax rules differ, encode the difference in the tax rate (a 'discount before tax' system is fine for nearly every jurisdiction).
Show the discount as its own line so the client can read it. Hidden 'auto-discounts' embedded in line items create reconciliation work later — both for you and for their accountant.
Payment terms — Net what?
Net 15 (payment due 15 days after invoice date) is increasingly the default for service work. Net 30 is the corporate default and what enterprise clients usually expect. Net 7 is reasonable for retainers paid in advance.
Set the term per client when you onboard them — most billing tools have a 'default payment terms' field on the client record. Then due-date computation is automatic on every invoice and you don't have to remember.
Locking what you've sent
Once you send an invoice, the line items, the bill-to address, and the rates should be frozen for good. If your client renames their company next month, your old invoice still says the old name — that's correct behavior. The client's copy and your copy match. Always.
Tools that let you edit sent invoices are the wrong tools for this. The right model: sent = immutable. If an unpaid sent invoice needs a change, cancel it and reissue with a new number. A partially paid invoice must be fully refunded first, and a fully paid invoice stays locked even after a refund. The audit trail is preserved.
PO numbers when the client requires them
Corporate clients often require a purchase order number on the invoice. Add the requirement to the client record once; the invoice form then surfaces a dedicated PO / reference field for that client, stores it separately from notes, and prints it in the invoice's reference area.
Don't sneak it into generic notes — accounts payable teams scan for it in predictable places, and a misplaced PO is a common reason an invoice sits in a queue.
Getting paid
Most invoice tools route payments through their own processor — funds sit with the tool for a few days, then transfer to you. This is fine for casual users; it's frustrating for businesses that need predictable cash flow.
Stripe Connect direct charges flip the model: funds settle directly to your Stripe account at the moment of payment. The billing tool never holds the money. Hoursmith uses this model on Studio and above; check whatever tool you're evaluating for the same property.
Following up without being annoying
The right cadence is one reminder around the due date, and one more 7-14 days after. Anything more frequent and you train clients to ignore your emails; anything less and balances drift to 90+ days.
Start with a clear, professional note: 'Just a friendly reminder, this invoice is due [date]. Let me know if anything is blocking it on your end.' Escalate the wording only when the payment remains unresolved.
How Hoursmith does it
How Hoursmith does it
Hoursmith's invoice builder supports the mixed model — preview eligible hourly entries, select exact reconciled fixed-project amounts, and add expenses or optional custom lines. Only the selected work is saved. Discounts apply before tax automatically, and the due date pre-fills from the client's default payment terms.
Sending freezes line rates and the bill-to snapshot for good. PO numbers surface as a field only on clients you marked as 'requires PO'. Online payment (Studio+) routes via Stripe Connect direct charges — the money lands in your own Stripe account, not ours.
Overdue reminders on Studio+ work both ways: send a polished reminder with one click, or set a per-invoice schedule (+3, +7, +14 days past due) and Hoursmith sends them for you — through your own domain if you've configured BYO email. Either way you pick the cadence per invoice; nothing fires that you didn't opt into. Manual offline payments (wires, checks) record the same way as online payments — single accounting path.