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.

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

The decisions that took the longest

Read-only, and never anything else

This one wasn’t a technical decision, it was a trust decision.

We could have asked Xero for write access. It would have opened up a pile of interesting features and it’s a completely normal thing for an app to request. We deliberately didn’t, and we won’t.

Because the first question any sensible person asks before connecting a third-party app to their accounting system is “hang on, what can this thing actually do to my books?” And the best possible answer to that question - the only answer that ends the conversation immediately - is “nothing at all. It can read your contacts and your invoices, and that’s it.”

You’re handing us the keys to something that, if we got it wrong, could genuinely hurt your business. The smallest possible set of permissions is the least we can offer in return. It cost us features. It was worth it.

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.

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.