Invoicing can be a time-consuming annoyance. Sure, things improve once they’re paid, but at the beginning, the whole process can quickly become a confusing and time-consuming mess. Here’s what I wanted to achieve for my SaaS apps, and for my consultancy work, hopefully saving you some time along the way.
At the start of 2012, I made the welcome return to consulting, setting up my company, TBB Polska, and planning to put all my income through this entity, rather than through my personal tax allowance.
The initial requirements for invoicing my consultancy clients were not major, but big enough to be a pain:
1. Creating dual-language invoices, written in both English and Polish. Vital for both clients and my accountant to understand what’s going on.
2. Supporting charging VAT – a European-wide sales tax – on some clients, and not on others.
3. Support switching between payment currencies in US Dollars, British Pounds and Polish Złoty
So far, so good; my accountant pointed me to Centrum Faktur, and I started billing.
When it came to invoicing my SaaS apps, though, I hit a problem: invoicing using PayPal alone would only support the absolute basics – not even the full list above.
This turned out to be the real challenge: do I go with a third-party such as Stripe (difficult, being based in Poland), try to find and buy a suitable bit of software, or write something myself?
Before I continue, I should mention that VAT in the EU is a nightmare. Simplified, if the client is based in Poland, I charge them VAT at 23%. If the client is based in the EU and is VAT-registered, I don’t charge them, otherwise I do charge them. If the client is outside the EU, I don’t include the charge. If the client is not charged VAT, I need to include a piece of text on the invoice about Article 9(2)(e) of the 6th EU VAT Directive.
With this in mind, I wanted my invoicing solution to support the following:
1. Handle VAT automatically. The user should be able to select their country and have the VAT calculation handled without any further work.
2. It would be great if VAT numbers (how a company identifies that it’s VAT-registered) are validated.
3. Add the EU VAT Directive text if necessary.>
4. Receive payment notifications from PayPal.
5. Support one-off and subscription charges
6. Create invoices automatically
7. Nice to have: email the invoices for me
8. Nice to have: invoices in PDF format
9. Support multiple products from different websites
After agonising about whether to build my own solution, I finally stumbled across nBill. Oh happy days, I can now do all of the above!
The order form needs to be made a bit prettier, but for the time being is at least functional:
The same can be said for the invoices:
There are definitely a few quirks with the initial set up of the system – it generates the order forms for you, and you have to set things just right – but now that it’s up and running, I’m quite happy. Next steps are to make everything a bit prettier, and start hunting down a merchant account and gateway processor.
I’m tempted to write a basic setup guide for nBill, illustrating how I got everything running and talking to the right bits of software.
Let me know if this’d be useful