An invoice tracker template is a spreadsheet that logs every invoice you receive or send, with its amount, due date and payment status. It shows at a glance which bills are open, overdue or paid, so nothing is missed or paid twice.
An invoice tracking template is a running register of bills: one row per invoice, with columns for who issued it, what it is for, when it falls due and how much is still unpaid. Simple formulas turn those columns into a live status for every row.
Small finance teams and office managers use one to answer the questions suppliers and managers ask every week: has this been approved, when will it be paid, and what do we owe in total.
It also works the other way round. Freelancers and agencies use the same layout to see which clients have paid, which are late and who needs a reminder, which is why the download includes a tab for invoices you send.
Vendor or client, invoice number and invoice date, which together make each row unique.
Invoice total, amount paid so far and the remaining balance, calculated, never typed.
Received date, payment terms in days and a due date worked out by formula.
The PO number the invoice bills against, so you can check it was ordered and received.
Open, approved, disputed, overdue or paid, plus who approved it and when it was paid.
Ready to use in Excel and Google Sheets. Fill it in, save it, reuse it.
Send every supplier invoice to one shared inbox. Note the received date, because it starts your cycle time.
Add a row with vendor, invoice number, date, amount and terms. The duplicate check flags a repeat at once.
Enter the PO number and confirm the goods or service arrived. Price or quantity gaps go to Disputed.
The budget owner signs off and the approval column changes to Approved.
Record the payment amount and date. The balance drops to zero and the status reads Paid.
The simplest usable version has five columns: Vendor, Invoice no., Due date, Amount, Paid? Sort it by due date every Monday and you already have a working invoice tracker.
This is the tab you will use every day. Type only the white columns; the formulas fill the rest. Keep the vendor's own invoice number exactly as printed, because that is what the duplicate check reads.
| Vendor | Invoice | PO | Received | Due | Status | Amount | Balance |
|---|---|---|---|---|---|---|---|
| Brightline Software | BL-20931 | PO-1042 | 03 Sep | 02 Oct | Open | 14,400.00 | 14,400.00 |
| Northwind Logistics | NW-4471 | PO-1027 | 19 Aug | 17 Sep | Overdue | 2,500.00 | 2,500.00 |
| Kestrel Data | KD-118 | PO-1051 | 11 Sep | 10 Oct | Disputed | 6,300.00 | 6,300.00 |
| Harbour Facilities | HF-0932 | PO-0988 | 18 Jul | 15 Aug | Paid | 9,750.00 | 0.00 |
| Acme Office Supply | AOS-7781 | PO-1060 | 12 Sep | 12 Oct | Open | 642.18 | 642.18 |
| Total | 33,592.18 | 23,842.18 |
Illustrative data for fictional vendors, as at 30 Sep.
Works in Excel and Google Sheets. Headers in row 1, data from row 2, formulas copied down.
| Col | Header | Entry or formula | What it does |
|---|---|---|---|
| A | Vendor | Text | Who issued the invoice |
| B | Invoice no. | Text, as printed | Read by the duplicate check |
| C | Invoice date | Date | Date on the invoice, which starts the terms |
| D | Received date | Date | When it reached you, for cycle time |
| E | PO no. | Text | Blank means no PO: send it back to the requester |
| F | Terms (days) | Number, e.g. 30 | Net payment terms |
| G | Due date | =C2+F2 | Last day to pay on time |
| H | Amount | Currency | Invoice total including tax |
| I | Paid | Currency | Total paid so far |
| J | Balance | =H2-I2 | What is still owed |
| K | Approval | Drop-down: Received, Approved, Disputed | Set by the budget owner |
| L | Status | =IF(J2<=0, | Paid, disputed, overdue or open |
| M | Days to due | =IF(J2<=0, | Negative means late |
| N | Duplicate check | =IF(COUNTIFS(A:A, | Flags the same vendor and invoice number twice |
| O | Paid date | Date | Date of the final payment |
| P | Days to pay | =IF(O2='', | Received to paid, for the dashboard |
An invoice on its own cannot tell you whether it should be paid. The order tab can, because it compares three numbers on one row: what you ordered, what arrived and what has been invoiced. It reads the PO column from the invoice log, so you never type an invoice amount twice.
| PO | Vendor | PO value | Received | Invoiced | Left to bill | Check |
|---|---|---|---|---|---|---|
| PO-1042 | Brightline Software | 14,400.00 | 14,400.00 | 14,400.00 | 0.00 | OK |
| PO-1051 | Kestrel Data | 6,000.00 | 6,000.00 | 6,300.00 | -300.00 | Over PO |
| PO-1060 | Acme Office Supply | 900.00 | 642.18 | 642.18 | 257.82 | OK |
| PO-1066 | Lumen Retail | 4,000.00 | 1,500.00 | 2,500.00 | 1,500.00 | Billed before receipt |
Illustrative orders. Kestrel's 300.00 gap is why its invoice sits in Disputed on the log.
Columns A-D are typed. E reads the invoice log, which is named Log in the download.
| Col | Header | Entry or formula | What it does |
|---|---|---|---|
| A | PO no. | Text | Must match column E on the log exactly |
| C | PO value | Currency | Approved amount on the order |
| D | Received value | Currency | Goods or services confirmed as delivered |
| E | Invoiced | =SUMIF(Log!E:E, | All invoices billed against this PO |
| F | Left to bill | =C2-E2 | Negative means billed above the PO |
| G | Check | =IF(E2>C2, | Hold any row that is not OK |
This is a light version of three-way matching. For the full method, see how a purchase order and invoice fit together.
The dashboard sits on its own tab so approvers can see it without scrolling the log. Every formula reads the status, balance and date columns, so it updates the moment a row changes.
Outstanding balance by status on the sample log, 30 Sep. Illustrative.
| Measure | Formula |
|---|---|
| Total outstanding | =SUM(J:J) |
| Overdue invoices (count) | =COUNTIF(L:L, |
| Overdue value | =SUMIF(L:L, |
| Due in the next 7 days | =SUMIFS(J:J, |
| Disputed value | =SUMIF(L:L, |
| Average days to pay | =AVERAGE(P:P) |
AVERAGE skips the blank text cells in column P, so only paid invoices count. For comparison, Ardent Partners puts average invoice processing time at 9.2 days.
Freelancers, agencies and service firms search for an invoice tracker to get paid, not to pay. The layout is the same, but the key number becomes days late rather than days to due.
| Client | Invoice | Sent | Due | Amount | Received | Days late |
|---|---|---|---|---|---|---|
| Orbit Analytics | INV-0412 | 01 Sep | 01 Oct | 3,200.00 | 3,200.00 | 0 |
| Cedar Health | INV-0415 | 15 Aug | 14 Sep | 5,750.00 | 0.00 | 16 |
| Lumen Retail | INV-0419 | 20 Sep | 20 Oct | 1,180.00 | 0.00 | 0 |
Illustrative client invoices as at 30 Sep.
| Column | Formula |
|---|---|
| Outstanding (G) | =E2-F2 |
| Days late (H) | =IF(G2<=0, |
| Chase today? (I) | =IF(OR(H2=1, |
| When | Message |
|---|---|
| 3 days before due | Friendly heads-up with the invoice attached |
| 1 day late | Polite reminder with the payment details |
| 7 and 14 days late | Firmer note copied to the client's finance team |
| 30 days late | Call, then a formal overdue notice |
A tracker is only as good as its last update. Block 20 minutes at the same time each week, work down this list and sign the bottom of the dashboard tab when you finish.
Invoices without a PO start at intake. Spendflo routes requests and approvals before you buy.
See how it worksLogged but not yet checked against the PO or approved.
The budget owner confirmed delivery and price, so it can join a payment run.
Price, quantity or delivery does not match, and the vendor has been told why.
Past its due date with a balance still owed.
Balance is zero and the paid date is recorded.
A negative invoice from the vendor; log it as its own row with a minus amount.
Invoices sent to individuals get lost, so publish one address to every supplier.
It is the only way to measure how long approvals really take.
A typed balance goes stale the moment a part payment lands.
Copy it as printed, including prefixes, so the duplicate check works.
Write what is wrong and who owns it in a comment on the row.
Merging invoices hides part payments and makes duplicates invisible.
Filters and formulas cannot read fill colour, so keep a status column.
Pay only rows marked Approved in the tracker, not invoices forwarded by email.
Filter them out instead, so the history is there at audit time.
Export unpaid bills from your accounting software or inbox and paste them into the log.
Fill column E and list each open PO on the order tab; blanks become your first follow-ups.
Use data validation on the approval column so only Received, Approved or Disputed can be chosen.
Work the checklist every Monday and pay only what the dashboard shows as approved and due.
Kestrel Data sends KD-118 for 6,300.00 against PO-1051, approved at 6,000.00. The order tab shows Over PO, so AP sets the row to Disputed on 12 Sep. Kestrel issues a 300.00 credit note on 18 Sep, logged as its own row. The balance becomes 6,000.00, the requester approves and it is paid on 8 Oct, two days early. Figures are illustrative.
Every part on this page, in Excel and Google Sheets, with the examples filled in.
Use the sent tab, add a column for the project and chase on the fixed reminder days.
The log, dashboard and checklist are enough. One person logs, a second approves anything above a set amount.
One log per entity, a currency column and the order tab on every purchase. Read the invoice tracking guide for when to move beyond a spreadsheet.
Best for a single AP owner.
Best when approvers update the status themselves.
Just the log tab with headers and formulas.
$3.7B in software spend processed through Spendflo, at 30% average savings.
See your savingsA good invoice tracker tells you what you owe, what is late and what should not be paid. When disputes and missing POs keep growing, the cause usually sits upstream in how purchases are requested and approved.
Quick answers to what people ask most about the invoice tracker template.
Create columns for vendor, invoice number, invoice date, terms, amount and paid, then add formulas for due date, balance and status as shown in Part 1. Turn the range into a table so new rows copy the formulas. Or download the free Excel version above with everything already built.
Log every invoice the day it arrives, match it to a purchase order, get it approved and record the payment until the balance is zero. Review the open and overdue totals on the same day every week. The download gives you a tracker and checklist for each step.
Yes, the invoice tracker on this page is free and tracks bills by vendor, due date, status and balance. You can download it in Excel or Google Sheets with the formulas and drop-downs already set up.
Excel ships with templates for creating invoices, but most do not track what happens after an invoice is sent or received. For that you need a tracker like this one, which you can download free for Excel and Google Sheets.
You can download it from the buttons at the top of this page, in Excel or Google Sheets. The workbook includes the invoice log, order tracking and invoicing tab, status dashboard, sent-invoices tab and weekly checklist.
Accounts payable
Purchase orders
Contracts
Vendor management
Sourcing and RFx
Budgets and business cases
Procurement
Purchasing
Software buying
Supply chain
Spendflo handles intake, approvals and purchase requests before the invoice arrives, so bills match an order. AP automation is coming soon.
Enter your work email and we'll unlock every format.
Didn't start, or need another format? Pick one below.
Google Sheets: upload the file to Google Drive, then open it with Google Sheets.