Learn how to automate your business by using Notion to generate invoices and grab your free Notion template. In this step-by-step guide, you’ll learn how to set up your Notion Database to track your invoice details, how you can use Google Docs to create your invoice template and Make to seamlessly integrate and automate the whole process to save hours of valuable work time. Even better, you can use the lessons in this tutorial to generate any type of document in your business, from contracts to certificates to PDF reports.
Don’t want to build this yourself? Scroll to the bottom of the page to grab a built-for-you template and start generating invoices immediately. Through that link, you can also contact me and ask me to implement this system for you.
The Problem
Running a business can be hard. All you want to do is focus on delivering awesome value to your clients, but somehow, you spend hours each day on boring and repetitive administrative tasks.
Take writing an invoice for example. Doing this manually on a case-by-case basis just takes too much time. What was your client’s VAT ID again? In how many places to you need to change your address now that you have a new office? And why does it take forever to get the format right?
Sure, there’s invoicing software out there but these tools add recurring expenses to your business and have fixed formats of what you can do. You’re offering your services online and need to change legal requirements depending on where your clients live? Or change the language? Good luck figuring that out.
I was getting very frustrated researching an invoicing tool that offered me a flexible, simple approach to invoicing without breaking the bank.
So I decided build my own invoicing tool using Notion, Google Docs and Make. It’s simple yet powerful and you can customise it exactly to your needs.
Two things though before we start:
- Most countries have specific rules for invoices. Neither this article nor the template is intended as any sort of legal advice. Do your own research or consult a professional and adapt what you learn in this tutorial to comply with the relevant laws.
- If you run a bigger business, investing in some dedicated bookkeeping software is probably a must. The approach demonstrated in this tutorial is perfect for solopreneurs and small businesses that create invoices occasionally and don’t need additional features like payroll etc.
How to Get Started With Any Automation
Before we learn how to generate invoices in Notion, it’s important to think about the exact result that we want to achieve.
Knowing what sort of information we need will save us a lot of headache later down the line.
In this example, we want to create a PDF invoice and send it to a customer based on information we have in Notion.
The invoice should have the following “features”:
- running invoice number
- address of customer
- our own address & tax number
- our bank details
- a payment goal
- several products
- a “total outstanding amount”
To keep things simple, we wont do VAT calculations in this sample invoice generator. But once you understand the underlying principles, it’s super easy to add dynamic tax calculations to the template.
What you need to build an invoice generator in Notion
You can build your invoice generator in Notion using only three tools.
- a Google account (for the invoice doc & sending the email)
- a Notion account (for your invoice backend)
- a Make account (the automation tool that connects everything)
Best of all? It’s free. You don’t need the paid plan for any of the tools to start creating your invoices.
Step-By-Step Instructions: Set Up Google Docs Invoice Template
First things first: your invoice template.
Just type doc.new into your browser to create a new Google Docs or navigate to https://drive.google.com/ and add a new document from there.
Now, simply draft a template for your invoice. You can do that yourself, browse the internet for inspiration or just use the same template that I use for this automation.
(you’ll get my template plus all the other things as a build-for-you package at the bottom of this page)
But how can you use this draft to dynamically create invoices with new information?
The secret to turn any Google Doc into a powerhouse template for your automation are merge tags.
Merge tags are little placeholders in your document that tell an app that you want to paste information here later.
And writing merge tags couldn’t be easier. You don’t need to have any coding knowledge for this. Simply type two curly brackets, then a placeholder and then close it with another two curly brackets.
So instead of typing your customers name, type {{customer_name}}.
(don’t use a space inside a merge tag. Instead, type an underscore)
Replace every bit of information that you might want to update dynamically with a merge tag until your invoice template looks a little something like this:
Tip: you can apply any formatting to the merge tag itself and once it gets replaced later, it will keep the format (like that blue colour in the example image above)
If you choose a similar layout approach and create a table for your products or services, then create a separate row and separate merge tags for each product.
Only ever invoice one thing at a time? One line is enough.
Invoice up to three? Three rows it is.
The template at the bottom of this page has space for up to 5 products. You can add more but it will significantly increase the workload for the setup of this template. If you need to invoice considerably more than five different products / services per invoice, a different solution might be better.
Step-By-Step Instructions: The Notion Backend
Next, it’s time to build your Notion Backend.
For a super simple invoice generator in Notion, you could create a single database with properties for each individual merge tag.
But if you want to build a slightly more advanced system, I recommend several databases. In fact, the free Notion template below includes 6 databases:
- Your Invoices
- Your Customers
- Your Details
- Your Products
- Your Balance
- Your Invoice Number
Your Details
This database will keep your own details. You could just have these fields in the main database. But in case you need to create several different forms of payment information, then this is a cleaner solution.
Here are the properties required for this database:
- Your Name
- Your VAT ID
- Your Street, City, ZIP Code & Country
- Your Bank Account Holder Name (if it ever differs from your name)
- Your Bank Account Number, Bank Identifier and Bank Name
- Your Email Address
It’s best to create all properties as simple text properties instead of picking specific data types like email or number.
If you want to make your life easier later in the automation, then I recommend creating a “combination property” that groups together your address information and bank information.
To do so, use the concat formula:
concat(prop(“Name”) + ” · ” + prop(“Street”) + ” · ” + prop(“ZIP”) + ” ” + prop(“Street”))
And if you want the information to display in several lines, include “n” in your formula to create a line break
prop(“Name of Account Owner”) + “n” + prop(“Account Number”) + “n” + prop(“Bank Identifier”) + ” ” + prop(“Bank Name”)
Your Customers
Your Customer Database is pretty much a mirror of your personal details, just with the information of your client.
Here are the properties required for this database:
- Customer Name
- Customer VAT
- Customer Street, City, ZIP Code & Country
- Customer Email
- optional: Customer Contact Name (to differentiate between a company name and the name of the person you’re sending the invoice to)
Your Products
Your Products Database can be super simple. All you need is the product and the price. Plus, if you sometimes charge in different currencies, add a property for that too.
Here are the properties required for this database:
- Product Name
- Price
- Currency Symbol
Tip: unlike all other properties we’ve created so far, you should actually use the number property for the price so that we can make some calculations within Notion.
Your Balance
This database is an implementation of the Checkbox Method For Notion to get awesome statistics right on your dashboard.
It’s not really required to generate invoices. But if you want to display neat insights later on, then it’s a good idea to already set it up.
The number of properties required for this database depends on the exact information you want to display. Check out my in-depth tutorial on how to get statistics in Notion here.
For now, let’s just set up the bare minimum to enable this functionality later. And for that, we just need the Name property.
Your Invoices
The database for your invoices will have quite a few properties, but don’t worry. Once you get started, it’s a lot easier than it looks at first.
And remember, if you don’t want to build this yourself, you can always use my free template at the bottom of the page or contact me to help you implement this for you.
Here are the essential properties required for this database:
- Invoice Name
- Payment Goal
- Status Invoice – this can be a select to show whether this invoice is a draft, ready to send, sent or paid
- Send Information – to distinguish whether an invoice should be sent directly to the client or to you
- Individual Subject Line
- Specific Remarks
- Invoice Total
- Your Details – a relation to the Your Details Database
- Your Customer – a relation to the Your Customer Database
- Your Balance – a relation to the Your Balance Database
Tip: you can add more properties as helpers to make creating invoices easier. You can check out the free template at the bottom of this page for some inspiration
Doesn’t look so complex yet? Well, that’s not all properties. You will also need a set of properties for each potential product on your invoice.
If you always only invoice a single product, then you only need one set. If you want to invoice up to three products, then you need three sets.
The template below comes with 5. You can go as high as you want, but it will increase the workload later on. If you regularly invoice more than 5 products per invoice, then this invoice generator might not be the best for your needs.
For each “product slot”, you need to create the following properties (replacing X with the respective product slot number):
- Product X – this should be a relation to the Your Products database
- Product X Quantity – again an actual number property
- Product X Total Price
- Optional: Product X Currency – only if you need to use different currencies for your products
- Optional: Product X Discount – if you want to have the option to quickly reduce the price without having to create a new product
- Optional: Product X Discounted Price – only if you use the discount option just described
Product X Total Price will be a formula property that you use to calculate the total for each product by multiplying the price per product with the chosen quantity.
Based on that, you then populate the Invoice Total property with the sum of all individual product totals.
In theory, this should be enough but Make has currently a slight bug when it comes to Notion. Sometimes, formulas that return a number result are not recognised. Here’s how to solve this issue:
- create a separate Display Product X Total Price property
- wrap the Display Product X Total Price and Invoice Total with the format() command to turn the result of the formula into a string
It should look something like this:
format(prop(“P2 Total Price”) + prop(“P3 Total Price”) + prop(“P4 Total Price”) + prop(“P5 Total Price”) + prop(“P1 Total Price”))
Your Invoice Number
Last but not least, a simple database that we use to calculate the next invoice number. This one is simple again, so we only need three properties:
- Year – the title property
- Last Invoice Number
- Next Invoice Number
And thanks to the magic of automations, we don’t even need to relate it to our invoice database.
Step-By-Step Instructions: Generate a Document using Make
With our Notion Backend ready and the Invoice Template prepared, it’s time to combine everything using an automation.
(if you haven’t set up your free Make account, now is a good time)
Building your first automation can seem daunting. If you are totally new to automations and want to create a simpler automation first, check out this workshop on how to build a Twitter Scheduler.
We can break down the process of building this automation into four distinct steps:
- Step 1: Get Information From Your Notion Database to Make
- Step 2: Create an Invoice based on the Google Docs Template
- Step 3: Send that invoice via Gmail
- Step 4: Closing the loop
But before we start, make sure that you have complete sample data in all properties of your Notion databases and connected all relations. Basically, your first dummy invoice should be ready to send in Notion.
And again: if you don’t want to build this yourself, grab the free template through the form at the bottom of this page
Step 1: Get Information From Your Notion Database to Make
Create the first module in the sequence: Watch Database Items. If you plan on sending several invoices at once, make sure to set a Limit that’s high enough to catch all of them.
Remember to run the automation once after every new module to make sure you get the required sample data for easier mapping.
Our second module (Search Objects) will pull in the necessary information for our invoice number. We can use a nifty little date formula to make sure we always get the right year in case we keep using this setup for a while.
Now it’s time to pull in the connected information from the Your Details and Your Customer Databases.
To do so, we’re going to use the Get a Database Item module and looking for the Database Item ID that is related to our invoice.
Both steps will look exactly the same.
And with that, you’ve already completed Step 1. All the required information for your invoice is now inside the automation and can be used to create an invoice.
Step 2: Create an Invoice based on the Google Docs Template
The magic module that enables this whole automation and any sort of easy document creation is called Create a Document from a Template and it’s part of the Google Docs App in Make.
The setup is fairly simple albeit a bit time consuming depending on the amount of products that you need to map.
To start, connect your Google Account and select the Invoice Template with all the merge tags that you created at the beginning.
Next, it’s time to map!
After connecting to a document, Make will automatically show you all the merge tags available. Now, all you have to do is connect the information from Notion to the correct merge tag.
For the most part, it’s as simple as mapping the Your Address merge tag to the formula property in the Your Details Database that contains… well your address.
Some fields however could use some more advanced mapping.
To automatically fill in the current date, you can use Make’s build in date-functions without relying on Notion at all:
Whenever you have optional fields in your Notion Backend, like the Individual Subject Line or Specific Remarks, you need to wrap everything with Make’s ifempty() formula. That way, you can specify the “fallback” option in case you don’t fill anything.
In the image above, I told Make to use the Individual Subject Line if available. Otherwise, it should use several different fields from Notion plus static text to create something along the lines of “Invoice CURRENT_YEAR-INVOICE NUMBER for CUSTOMER NAME”.
If you decide to go with the I-might-need-multiple-currencies option, then you need to remember to add the currency to all display fields for prices.
If you potentially use several products in your invoice, then you also need to wrap all additional product fields with the ifempty() formula. If you don’t do that and try to create an invoice with only 3 out of 5 possible products, then Make will return an error because it couldn’t find data for products 4 and 5.
Last but not least, it’s time to tell Make where your new invoice should be saved. Just pick a path and a document title (I recommend including the invoice number and recipient here)
Congratulations, you build everything you need to create an invoice based on information in Notion!
Before we move on to the next step, remember to test whether everything so far is working properly.
Step 3: Send that invoice via Gmail
With our invoice-creation-tool ready, it’s time to build out the last part of the automation: automatically sending the invoice as a PDF to our customer or our own email address.
First, pick the Download a Document module available for Google Docs. You need to create a PDF version of the Google Doc Invoice.
Doing so is super simple. Just map the Document ID to the ID from the previous step and pick the format.
Now it’s time to add some pathing logic. We want to send the invoice either to our email or our client, depending on what we choose for the property Send Information.
To do so, lets add a Router and filter one path for that property (while setting the other path as our fallback option).
Remember that filtering by default is case sensitive.
Both paths will look exactly the same with one exception: we switch around the recipient’s email address.
Pick the Send an email module from GMail and start mapping the last bits of information:
If you’re not using a G-Suite or Google Workspace Account (i.e. a free, personal gmail address), then you first need to do some groundwork to access the API. Make has some detailed instructions on how to do that here.
And with that, your invoice will be automatically send without any additional work.
Step 4: Closing the loop
Now that our invoice is automatically sent by the automation, we just need to add two quality of life features:
- switching the invoice status from “ready to send” to “sent”
- increasing the running number for our next invoice
We do so by adding two more Update Database Item modules.
For the first one, pick the Your Invoices Database, map to the initial database item from the first module and leave all fields empty except for the Status property.
For the second one, we pick the Your Invoice Number Database and add +1 to the running number (plus, fill the current number into the Last Invoice Number property).
Lastly, I often add a short Sleep module to the end of my automations to make sure that I’m not sending to many API requests in a short time.
The Complete “Send-an-invoice-through-Notion” Automation
Great job! Your automation is complete. Here’s what it should roughly look like:
In the first half of the automation, you pull in a bunch of data from various databases in Notion to fill merge tags in a Google Docs:
Next, you download that Google Docs and send it via email either to yourself or your client:
And put together, we have this beauty of an automation:
Don’t want to build this invoice generator yourself? Don’t worry, here is a ready-to-use free Notion template.
Here is Your New Invoice Generator in Notion (Free Notion Template)
This is the dashboard of your invoice generator in Notion template. At a glance, you can
- edit your line of products
- see your current revenue
- change your payment details
- add customers to your CRM
- create and manage your invoices
Let’s take a closer look:
Calculate Your Revenue in Notion
This template implements the Checkbox Method to create super useful statistics directly in Notion.
By default, it tracks the number of invoices, how many invoices are open and paid, the amount you’re waiting for and how much you earned in total.
Using the Checkbox Method, you can easily customise these statistics and display whatever you want.
Keep Track of Your Products in Notion
Adding new products is super simple – all you need to do is add the price and currency. That way, you can easily create variations of products for different customers or adapt if you offer services internationally.
Save Your Payment Details
Need to quickly change your address or bank account? No problem, all it takes is an update in this database and the new changes will reflect automatically in the next invoice.
Plus, if you use several different bank accounts, it’s super simple to switch between with next to no effort.
Keep a Customer CRM in Notion
When it’s time to create your invoice, you don’t want to go searching around for your customer VAT ID or exact address. Simply keep all details in this database and you’ll never have to go looking again.
As an additional bonus, this template will automatically calculate your customer’s Life Time Value (LTV), i.e. the total amount earned from this account.
This helps you make better decisions and identify the customers that actually drive your business forward vs. those that create a lot of work but little revenue.
Easily Create a New Invoice in Notion
To make things even easier, this template comes with a detailed guide helping you create your invoices. I’ve added a bunch of helper properties to the database (there are 75 at the time of writing), to give you some guidance throughout the process.
Particularly the Preview Function is super useful so that you don’t get surprised by the finished invoice:
Grab Your Free Invoice Generator in Notion Template
You can download this Notion Template plus another 21+ other free templates here: