Having used a number of invoicing tools over the years, I've never really found one that suited the needs of my business, I wanted something simple to use, that would let me log the time I was spending on projects. There are many solutions on the market that would could have shoe-horned into my workflow, but I didn’t want that, and some of them were expensive and crammed full of features I simply didn’t need.
Building an invoicing system from scratch can be costly, and I wouldn’t normally recommend doing it when there are already lots of existing packages on the market that do this. However, I was in a great position because I were not building the tool from scratch. I utilised the design and HTML from another project that I had built for myself (Opportunity Log), and as I use my own application framework I was ready to put the two together. Features such as user creation, logins, password retrieval were already available in the application framework, that saves me lots of time.
I created the necessary database tables, and built additional modules into the framework to handle the functionality that was going to be required for the application to work.
Seeing as I'm great at building API's, I built an API into Desk Drawer that enables me to pull client invoices and estimates from Desk Drawer and make them visible in the client area on my website. My clients can login to the website, and view all of their invoices and estimates, all styled to match my website branding.
I ended up with a fantastic invoicing tool that suites my specific needs. The biggest advantage for me in having our own tool, is that it allows me to build in whatever features I require at a later date and create some fantastic reports.