I’ve been running an NDT business since 2017. After a couple of years getting annoyed at writing my reports in Libreoffice Writer, I decided to write my own software to generate the reports for me. This has saved me an enormous amount of time. A couple of years ago, I started thinking about how I should handle my invoices. I don’t generate a lot of invoices, but sometimes I’d lose track of who’d paid, who hadn’t and realised I needed something to keep track of them.

One option was just to simply add it to my existing system. But, I couldn’t really be bothered. So I decided to have a simple spreadsheet. This worked ok, I simply added a new row to my “invoice_log_2022.xlsx” and then email myself the new version so I had some redundancy. But it bugged me a little as it seemed there should be an easier way to handle a few records. For example, I had to use some spreadsheet program just to add / view my invoices.

So, I thought I’d see what other options I could find. Eventually, I came across GNU Recutils. Here is the description from their site:

GNU Recutils is a set of tools and libraries to access human-editable, plain text databases called recfiles. The data is stored as a sequence of records, each record containing an arbitrary number of named fields. The picture below shows a sample database containing information about GNU packages, along with the main features provided by Recutils.

This seemed to be worth a look! I converted my spreadsheet to csv, then imported it into the recfile format.

Invoice_No: N123456
Due_Date: 2022-07-31
Amount: £180.00
Customer: Some Customer
Description: MPI of fillet welds on fabricated assemblies
Amount_Paid: £180.00
Date_Paid: 2022-08-05

Invoice_No: N123457
Due_Date: 2022-07-31
Amount: £150.00
Customer: Another Customer
Description: DPI of condenser pipework

The above shows two records. The first one has been paid, the second one has not. If I want to add a new invoice to the log, I simply copy the last record, edit the fields and save the file. It really doesn’t get much easier than that. No need for anything more than a text editor.

I’ve only been using recutils for a week and have just started scratching the surface of the tools that come with it, recins, recsel, recdel etc. One thing I want to do is have a cron job that will email me any invoices that are overdue.


I really like Sqlite. I use it for loads of things, but sometimes even Sqlite is overkill. The next time you think about creating a new spreadsheet to save a few records, perhaps you’ll try Recutils instead…