Skip to content
Dazlab
Studio log cover: Studio log, week 26: tax and discounts on Handl invoices, recurring T&M billing, and a faster app
Product Building

Studio log⁠, week 26⁠: tax and discounts on Handl invoices⁠, recur­ring T&M billing⁠, and a faster app

77 changes shipped across 3 codebases last week. Most of it was Handl, and most of Handl was the invoice itself. Here's the week.


Handl: invoices that say what you mean

An invoice is the one thing from your agency that every client reads closely. So this week was about the small things on it that matter a lot to the person paying.

Tax, your way. Set your tax label and rate once for the agency. GST, VAT, sales tax, whatever you call it. If one project's different, say a client overseas, override it on that project. Every invoice keeps the tax it was issued with, so changing a rate later doesn't touch invoices you've already sent.

Discounts. Take a percentage or a fixed amount off an invoice, and label it so the client knows what it's for. On T&M invoices you can also discount an individual person's line. The discount comes off before tax, and it shows up the same everywhere the invoice does... in the app, on the PDF, in the client portal and when you ask the agent about it.

Attachments. Attach files to any invoice, and they go out with the email. The signed-off scope, the timesheet export, the report you promised.

A summary written for you. Open an invoice and Handl writes a short plain-English summary of what it covers. Edit it if you want to say it differently, even after it's sent.

Roles instead of names. Give each team member a job title, then tick "Show roles instead of names" on a T&M invoice. The line reads "Senior Developer" instead of a person's name. Some agencies bill by role and don't want the client asking for a particular person... now that's a checkbox.

→ See how it works: invoice automation · client portal → Free: invoice aging and chase tracker → Start a Handl trial


Handl: T&M billing on your schedule

Time and materials projects can now bill on a schedule you set. Pick weekly, fortnightly or monthly, the day it runs and the time of day, and Handl bills the time logged in that period, in your agency's timezone.

You also choose how much time and task detail the client gets, set separately for the invoice email and the client portal. Some clients want every line. Some just want a number and a PDF they can forward to accounts.

Also shipped in Handl this week:

  • A faster app. Project tabs load in parallel and prefetch, the dashboard loads in one go, and production stays warm so the first click of the day is quick.
  • Team invites with Google sign-in. Invite someone, and they can accept with their Google account. Pending invites show in your team view, where you can resend or cancel them.
  • A new projects page. A new toolbar, a card design, a view grouped by client, and search with status and type filters.
  • Tidier client lists. Archive or delete clients and client contacts.
  • Clients get set up as they accept. If you send a brand-new client a project to approve, they set up their portal login in the same step they accept it.
  • The agent knows what moved. Handl now records when tasks change status in your PM tool, so "any progress on the website project today?" gets an answer from both the hours logged and the tasks that moved.

→ See how it works: cash flow · AI agent · integrations → Free: invoice aging and chase tracker → Start a Handl trial


Marketing, behind the scenes

The new handl.works is nearly ready to switch over.

  • Final designer graphics are in. The homepage hero, steps, client portal and dashboard sections got our designer's finished artwork, and the product, billing and solutions pages swapped their placeholders for the real thing.
  • Quicker on mobile. A pass on the homepage hero took the mobile Lighthouse score from 78 to 91.
  • An accessibility pass across the site before it goes live.
  • Analytics that ask first. Google Analytics and the Meta pixel are set up under Google's consent mode, so nothing tracks until a visitor says yes.
  • Search engines hear about new posts straight away. Publish in the CMS and Bing is told about it automatically, and Google Search Console is ready for the switch.

And in the app, two bits of marketing plumbing: short onboarding emails for new agencies, managed from our own admin, and product update emails, with unsubscribes kept in sync between the app and our email tool. We also built a demo agency full of realistic sample data, so we can record product videos without going anywhere near a real account.


One thing I learned

A sent invoice is a record, not a view.

It's tempting to build invoices like any other screen. Pull the latest data, work out the totals, show it. But then someone changes their tax rate in March, and an invoice from January quietly shows a different number to the one the client paid.

So everything we added this month works the same way. The tax on an invoice is the tax it went out with. The work behind it is captured when you send it. The detail a client sees on a recurring invoice is fixed for that period. Change your settings as often as you like... what you've already sent stays exactly as your client received it. That's what makes it something you can stand behind.

See you next week.

— Daz

Let’s Work Together

Dazlab is a Product Studio

Our products come first. Consulting comes second. Whichever path you take, you’ll see how a small team can deliver outsized results.