Invoicing Tips for SaaS Businesses

Published on .

Invoices can be thought of as the interface of every business. You send some, you receive some, you pay some and you check if you got paid on others.

A lot of people don’t know some countries have legal requirements for invoices. In the US it’s not very strict — as long as you have something like a receipt that shows you had to pay it’s all good. In other countries stricter rules apply. Read on to find out how you can accomodate 99% of worldwide customers.

For some countries the VAT number of the receiving company needs to be visible. Most countries require the addresses of both parties on there. Every invoice needs a number, which should be incremental, can’t skip any numbers, and should be consistent chronologically. The list goes on but most of them are common sense, and differ from country to country.

I’ve noticed US companies are the worst offenders, probably because they don’t have that many rules themselves. Sometimes my business name and address aren’t on them, or they just show the name on the credit card that paid for it. Obviously no one can cater to every country specifically, so here’s a few tips:

Github's Optional Data form
Github’s “optional contact information” setting solves most of the requirements.

  • Always have a field where the customer can put in any details they want. Github does this nicely. I can put my business address and the VAT number in there and whatever else my country requires. Github doesn’t care about this, but come auditing if my VAT number isn’t on an invoice my business paid I could get in trouble. This is basically a catch-all that would avoid a lot of trouble.

  • Don’t regenerate invoices when details such as the address change: Invoices should be immutable. I once had to redownload all the invoices of a year from AWS. But since my business address had changed since these were issued, they all contained the new but wrong address. I went into my account, changed the address back to the old one, and redownloaded every one of them. Unfortunately AWS cached the invoice once it’s been generated, and the wrong address was still there. After quick mail to customer service this was solved, but it was still a hassle which took a couple of days.

Code Climate Invoice
What my accountant sees when opening the CodeClimate invoice

  • Write the five lines of code it takes to generate a PDF version, or remove the navigation in print-specific stylesheets. I don’t care about a paper version, but I like to at least send my accountant clean and readable versions of the invoices I paid. Extra points if your payment notification email includes the PDF as an attachment, so I can just forward it to my accountant.

If companies would use a little more spit and polish on their invoices, a lot of frustration would be avoided. Invoices are after all just another customer-side interface, and in my opinion a very important part of the UX.
<!– # Immutability



  • Have a yearly (or longer timespan) subscription instead of monthly. Especially good for businesses that charge little each month (Amazon AWS, DigitalOcean). Each invoice is either extra overhead for accountancy or actually has a real cost if the small business is using an external accountancy firm. As an example, some accountants charge 50 cents per invoice in foreign currency. For European companies using US services this adds up really fast. No need to add extra discounts, just have a way to get annual subscriptions. –>
David Verhasselt

Senior full-stack engineer with 5 years of experience building web applications for clients all over the world.

Interested in working together?

Find out what I can do for you or get in touch!

Like this? Sign up to get regular updates