Excel Automated Invoice Template

Mynda Treacy

May 6, 2025

If you've ever wanted to create an invoice system in Excel that automatically updates, records, and clears itself—you're in the right place.

In this post, I’ll walk you through building an automated invoice template from scratch using Excel formulas, tables, and a touch of VBA magic. Whether you’re a freelancer, small business owner, or just want to level up your Excel game, this tutorial has you covered.

Watch the Video

Subscribe YouTube

Get the Template

Enter your email address below to download the sample workbook.



By submitting your email address you agree that we can email you our Excel newsletter.

Step 1: Design the Header Layout

Open a new Excel file and save it as a .xlsm Macro Enabled Workbook. Then set up the invoice header area. Mine looks like this, but you can modify it to suit your needs:

how to create an automated invoice in Excel?

For a clean design:

  • Shade the invoice cells B3:I77 a pale grey (don’t do this if you print your invoices).
  • In cell H8, enter “INVOICE” with a bold 28pt font.
  • Add a logo in the top left.
  • Insert company info in C12:C17 (e.g., address, email, tax identifiers).
  • Add invoice details in F9:F18 including:
    • Invoice #: Cell G9 → Start at 1000 or 10000 (or your next number)
    • Invoice Date: =TODAY()
    • Due Date: Use a formula to calculate. E.g. net 30 days: =G10+30 or net 30 EOM:
    • =EOMONTH(G10,0)+30

Step 2: Build the Invoice Table

Create a table for itemised entries:

  • Start in cell C22 with headers: Product Code, Description, Qty, Unit Price, Discount, Price (modify to suit your needs as required).
  • Select the headers and press Ctrl + T to format as a table
  • Name the table (Table Design tab): InvItems
steps for creating an automated invoice in Excel
  • Set formatting:
    • Currency format for Unit Price and Price
    • Percentage for Discount
    • Custom number format on Price column to hide zeros: $#,##0.00;-$#,##0.00;
how to format price in an Excel invoice?

Price Formula

In the Price column, use:

=ROUND([@Qty]*[@[Unit Price]]*(1-[@Discount]), 2)

Step 3: Calculate Totals

Below the table (e.g., cells G27:G30), insert:

  • Subtotal: =SUM(InvItems[Price])
  • Tax Rate: Enter 10%
  • Tax Amount: =ROUND(H27*H28,2)
  • Total: Subtotal + Tax Amount (=H27+H29)
  • Format totals with borders and centred text.
how to calculate total of an Invoice in Excel?

Then, define a name for the Total cell (e.g., Total) and link G12 (Amount) to it: =Total

Step 4: Add Notes and Bank Details

  • Add a Notes section in cell C33
  • Add Bank Details starting at cell C37
    This includes bank name, account number, etc. required for your customer to pay you.

Step 5: Set the Print Area

Select B3:I45 (or the relevant cells for your invoice area) and go to:

Page Layout tab > Print Area > Set Print Area
Adjust page setup:

  • On the Margins tab > Center horizontally & vertically
  • On the Page tab > Fit to 1 page wide x 1 page tall

Step 6: Create the Invoice Tracker

Add a new sheet and rename it Tracker. Insert headers - these are the fields from the Invoice that you want to record. Modify as required:

  • Invoice, Date, Due, Amount, Customer from the invoice and an additional column to track the Paid Status

Format as a table (Ctrl + T) and name it InvTracker.

Insert a check box in the Paid Status column.

how to create an invoice tracker in Excel?

Step 7: Write the Record Invoice Macro

Enable the Developer tab (right-click Ribbon > Customize > check the box for the Developer tab), open the Visual Basic Editor:

How to export an invoice from Excel to PDF?

In the Visual Basic Editor, select the Automated Invoice Excel file and via the Insert menu > insert a new module:

how to automate exporting invoice from Excel to PDF

In the module, enter this macro to copy the data from the Invoice template to the Invoice Tracker:


Option Explicit

Sub RecordInvoice()

    Dim inv As Long
    Dim invDate As Date
    Dim dueDate As Date
    Dim amount As Currency
    Dim customer As String
    Dim invoiceSheet As Worksheet
    Dim trackerSheet As Worksheet
    Dim tbl As ListObject
    Dim targetRow As Range

    Set invoiceSheet = Sheet2
    Set trackerSheet = Sheet3
    Set tbl = trackerSheet.ListObjects("InvTracker")

    ' Read values from invoice
    inv = invoiceSheet.Range("G9").Value
    invDate = invoiceSheet.Range("G10").Value
    dueDate = invoiceSheet.Range("G11").Value
    amount = invoiceSheet.Range("G12").Value
    customer = invoiceSheet.Range("G14").Value

    ' Safely decide where to write the data
    If tbl.DataBodyRange Is Nothing Then
        ' Table has no rows — add one
        Set targetRow = tbl.ListRows.Add.Range
    ElseIf Application.CountA(tbl.DataBodyRange.Rows(1).Resize(1, 5)) = 0 Then
        ' First row is empty — reuse it
        Set targetRow = tbl.DataBodyRange.Rows(1)
    Else
        ' Add new row
        Set targetRow = tbl.ListRows.Add.Range
    End If

    ' Write values to the table
    targetRow.Cells(1).Value = inv
    targetRow.Cells(2).Value = invDate
    targetRow.Cells(3).Value = dueDate
    targetRow.Cells(4).Value = amount
    targetRow.Cells(5).Value = customer

    MsgBox "Invoice recorded!", vbInformation

End Sub

Assign this macro to a Shape button for easy use.

Step 8: Write the Reset Invoice Macro

This clears the old invoice and increments the invoice number.

Add the following code below ‘Option Explicit’ and above the ‘Sub RecordInvoice()’ macro:



Sub ResetInvoice()

Dim inv As Long

' Issue new invoice number
inv = Range("G9")
Range("G9") = inv + 1

' Clear cells ready for new invoice details
Range("G14:G18,InvItems[[Product Code]:[Discount]]").ClearContents
Range("G14").Select

' Confirm new invoice is ready and number
MsgBox "Template is reset. New invoice number is " & inv + 1, vbInformation

End Sub

Again, assign this macro to a shape or icon.

Step 9: Add Conditional Formatting

In the Tracker sheet, use Conditional Formatting to highlight overdue unpaid invoices.

Select the table rows (excluding the column headers). Then Home tab > Conditional Formatting > New Rule > ‘Use a formula to determine which cells to format’.

Formula:

=AND(NOT($F2), TODAY() > $C2)

Apply red fill if the invoice is overdue and not marked as paid.

Auto Create PDF and Email It

If you want to take your automated Excel invoice template to the next level, check out this post on how to create a PDF from an Excel worksheet and then email it.

Next Steps

Ready to take your skills deeper? Whether it’s core Excel skills, dashboards, or Power BI, I’ve got a full range of Excel and Power BI courses that walk you through everything step-by-step.

They come with a certificate of completion, and support from me if you ever get stuck.

Thousands of students have taken them, not just to level up their skills. I’ve heard from people who’ve built tools that save their team hours every week, landed promotions, or finally felt confident enough to freelance on the side.

So, if you’re ready to stop Googling Excel and actually master it, there’s no time like the present. Check out our Excel and Power BI courses here.

AUTHOR Mynda Treacy Co-Founder / Owner at My Online Training Hub

CIMA qualified Accountant with over 25 years experience in roles such as Global IT Financial Controller for investment banking firms Barclays Capital and NatWest Markets.

Mynda has been awarded Microsoft MVP status every year since 2014 for her expertise and contributions to educating people about Microsoft Excel.

Mynda teaches several courses here at MOTH including Excel Expert, Excel Dashboards, Power BI, Power Query and Power Pivot.

10 thoughts on “Excel Automated Invoice Template”

  1. Thanks a lot. I have learnt so much from watching your videos etc.

    Just to let you know that there’s a typo in the template.

    In the ResetInvoice macro, “Range(“G14:G18,InvItems[[Product Code]:[Discount]]”).ClearContents”
    instead reads
    “Range(“G14:G18,InvItems[[SKU]:[Discount]]”).ClearContents”

    Reply
  2. The clear button macro errors out when used. The VBA is using SKU instead of Product Code. Quick fix.
    I’d also suggest an item to consider fixing.
    If you press the Record Invoice button twice, it duplicates entries. Could you add a test to see if it’s already recorded that entry, or better yet prompt to overwrite or accept the duplicate?
    Otherwise, this is great. I could see this as part of a building block. I know it’s not a database, but for a small business just getting started, you could add a few features for future training. Save customer data, add or select from existing users.
    Then add a tab for products sold. Inventory management is not far behind.
    That begs the next question. At what point does it become necessary to quit using Excel and use a database. Maybe 10K products or customers?

    Reply
    • Cheers, Ken. I’ve fixed the SKU/Product Code typo.

      Another easy way you could handle duplicates is with some simple conditional formatting to highlight them.

      Thanks for your suggestions. I agree, there are almost endless enhancements that can be added (print to PDF button, reprint past invoice, reset number of rows in the table etc., etc.), some more important than others.

      A good indicator of when it becomes necessary to use a custom program is when your Excel file starts running slowly and or there are other manual processes connected to the invoice generation that could be more efficient with a custom app.

      Mynda

      Reply
  3. Hi Mynda,

    Thanks for your amazing and interesting work. I was after such automated invoice.
    I have downloaded for my small business. But I have an issue using it, saying that macro is not avaiable in this work book. I have ticked all macros but still doesnt work. Could you please help.
    Thanks Ali

    Reply
    • Hi Ali,

      The file is a .zip file. You need to extract the Excel file and save it in a folder on your PC/local drive. It should be a .xlsm file. When you open it, you’ll see a yellow banner above the formula bar asking you to enable macros.

      It should then work. If you’re still having trouble, reach out via email and share screenshots so we can see what you’re dealing with: website @myonlinetraininghub.com (delete the space after ‘website’).

      Mynda

      Reply
  4. Excellent, as ever, Mynda; thank you.
    The tracker sheet is an excellent addition. Comments on the invoice form:
    → as a customer I prefer to see all of the salient information required to pay an invoice in one place, i.e. Invoices with the amount, due date, invoice number (and/or other reference required in the transfer), and the bank details all together; the cherry on the top would be a QR code. A pet hate of mine is invoices with bank details in tiny print hidden in the footer along with the directors’ names!
    → businesses in some countries may need a column for the tax rate integrated into the invoice, because the tax rate differs according to product (e.g. food/non-food) in their country.
    Thanks again for an interesting and useful site and keep well.

    Reply
    • Thanks for sharing these suggestions, Chris. I suppose you haven’t watched the video because in it I state that the layout is completely customisable to suit your business needs.

      Reply

Leave a Comment

Current ye@r *