The Client Invoices logo - three interlocking hexagons in yellow, orange and green

Why we built Client Invoices

William Tonkin-Howe
William Tonkin-Howe
June 20, 2026

“Sorry, could you resend the March invoice?”

If you run a business that invoices people, you have received that email. Probably this month. Possibly twice.

It’s such a small thing that nobody ever does anything about it. It takes ninety seconds to deal with. But it happens every month, forever, with every client you have - and it’s not really ninety seconds, is it? It’s the context switch out of whatever you were actually doing, the dig through Xero, the “which one did they mean”, the reply, and then the low-level worry about whether the other three unpaid ones have also gone astray.

Multiply that by every client, every month, for years. That’s the problem we built Client Invoices to solve.

Where it actually came from

We use Xero, like most New Zealand businesses. It’s genuinely good software and I have no complaints about it as an accounting package.

But invoices go out as emails, and email is a leaky pipe. The invoice went to the person who has since left. It went to the founder when it should have gone to the accounts inbox. It landed in spam. It’s technically sitting in someone’s inbox from four months ago, buried under two thousand other emails, and finding it is more effort than just asking us.

None of these are Xero’s fault. They’re just what happens when the record of a financial relationship lives in a medium designed for conversation.

What our clients kept asking for, without ever putting it in these words, was a place. Somewhere they could go and see everything we’d ever invoiced them, without having to ask us, without an account, without a password, without any ceremony at all.

So we made one.

What it does

You connect your Xero, you share a client’s record with their email address, and they get a link. They click it, they’re in, they can see every finalised invoice you’ve ever issued them and pay any of them right there through Xero’s own secure payment pages. When something changes in Xero, it changes in their portal. You can revoke anyone’s access instantly.

It also shows what’s coming. If you bill someone on a repeating schedule in Xero - a retainer, a subscription, a maintenance plan - those upcoming invoices show up in their portal alongside the ones already issued: $29.95 due 30 August 2026, sitting there before it arrives. The same numbers appear on your dashboard and on each client’s page, so you’re tracking the forward view too, not just them.

For anyone billing on subscription that turns out to matter more than the archive does. “Where’s that invoice?” is a nuisance. “What’s this charge?” is worse, and it usually turns up after the money’s already gone.

That’s the entire product. Nobody is going to demo this at a tech conference.

The decisions that took the longest

No passwords, because nobody will make an account to look at a bill

This was obvious the moment we said it out loud, and it took us a while to say it out loud.

Think about it from your client’s side. You have sent them an invoice. In return, you are asking them to create an account, invent a password they’ll never remember, verify an email and log in - all so they can look at a document telling them they owe you money. Not a chance. They will email you and ask you to resend it, which is exactly the thing we were trying to fix.

So: single-use sign-in links that expire after fifteen minutes. They click, they’re in, they see their invoices. No account, no password, nothing to forget. And because the link is single-use and short-lived, a forwarded email doesn’t become a permanent hole in your books.

The boring problems are the good ones

There’s a temptation, when you finally get some time to build your own product, to build something exciting. Something you’d enjoy explaining at a party.

I’ve come round to the opposite view. The boring problems are better problems, because boring usually means persistent, and persistent means people will actually keep using the thing. Nobody gets excited about an invoice portal. But it quietly removes a small monthly friction from a relationship you want to last years, and it does that every month without anybody thinking about it. That’s a much better business than something thrilling that people try once.

What building on someone else’s platform teaches you

Most of the real work in this build wasn’t the pretty bit. It was living in someone else’s house and respecting their rules.

Token refresh. Rate limits. Handling multiple Xero organisations and stitching them into one sensible view for a client who deals with two of your entities. Voided invoices. Credit notes. A contact with three email addresses on the record and no clear indication of which one is the right one. Drafts and bills, which we deliberately excluded because sharing a draft invoice with a client is a genuinely bad idea. And then the app review process, which is exactly as thorough as it should be when you’re asking to read people’s financial data.

That’s where the time went. It’s about half the work on any integration, it never appears on a feature list, and if you get it wrong, you get it wrong in front of someone’s accountant.

I’d say this to anyone scoping an integration project: whatever you think the API work will take, the API calls themselves are the small half. The edge cases in the data are the big half, and you won’t discover most of them until real customers with real messy books turn up.

Practice, and why we keep doing this

I’ve been building software for a long time now, mostly as a partner in other people’s businesses. That’s the job and I love it. But there’s a slow drift that happens in consulting where you spend more and more time advising and less and less time actually making the thing, and one day you look up and realise your hands aren’t as good as your opinions are.

Our own products are how I keep that honest. They’re the practice. There’s no client to hand the hard decision to, no scope document to hide behind, and no way to be vague about the pricing because you have to actually pick a number and put it on a page where people can see it.

Client Invoices has a free tier for up to five shared clients because sole traders and very small operators feel this problem just as much as anyone, and because a product that only works if you’re big enough to pay for it isn’t really solving the problem I set out to solve. Paid plans start at NZ$10 a month.

We use it on this site

If you want to see it working, open the menu at the top of this page.

The Login link goes to our own Client Invoices portal. Our clients click it, get a sign-in link, and see everything we’ve ever invoiced them plus whatever’s due next. That is the entire integration on a static site like this one - a link in the nav. Nothing to install, no plugin, no build step, and still no database sitting behind this website. Which is rather the point: the site stays a stack of flat files, and the invoice data stays in Xero where it already lived.

We didn’t build it in order to use it ourselves. We built it because we had the problem. But billing our own clients through it every month is the reason most of the rough edges got found before anyone else hit them.

Launched

Client Invoices went live in June 2026. If “can you resend that invoice” is a sentence you read more often than you’d like, go and have a look at clientinvoices.com - it connects to Xero in about a minute and the free tier doesn’t need a card.

And if you’ve got a small, boring, persistent problem chewing away at your week and you’re wondering whether it’s worth solving properly - it usually is. Come and have a chat, we’d love to help.