I always enjoy behind-the-scenes looks into other peoples' businesses, so I thought I'd provide one of my own.
This is the workflow I've created to generate invoices for my clients:
I keep two Airtables: "Clients" and "Projects".
My Clients Airtable contains important data for the invoice such as the client's address. My Projects Airtable contains a reference to the client and the project's price.
I input this data by hand when I start working with a client.
When it's time to create the invoice for the project, I use a little Node.js script to fetch the client + project data from Airtable and render the invoice from it it as HTML.
This gives me the freedom to take complete control over the content and layout of the invoice.
The script also uses Puppeteer to generate a PDF-version of the invoice that I can send out to the client.
I'm really happy that I invested the time to build this little system when I started freelancing. I can customize it completely to my needs and I don't need to fiddle around with spreadsheets or word processors.
If you need help on a project, feel free to contact me.