Free templateExcel · Google Sheets

Purchase Order Tracking Excel Template

A purchase order tracking Excel template is a spreadsheet that shows what you ordered, when each order should arrive and whether the vendor has been paid. One row per PO holds the vendor, dates, status, total, amount paid and balance due.

  • PO log with status, amount paid and balance due
  • Goods received tab and invoice match check
  • Dashboard of open, late and committed spend
Book a demo
Updated 7 Oct 20265 partsReviewed by the Spendflo procurement team
Definition

What is a purchase order tracking Excel template?

It is a PO tracker template built as a workbook: one row per purchase order, holding the PO number, vendor, order and expected delivery dates, the total, and what has been received, billed and paid. Formulas compare those numbers and set a status for each PO, so nobody has to update it by hand.

Purchasing and finance teams use it once they raise more POs than they can remember. Procurement checks it to chase late deliveries, AP checks it before paying an invoice, and budget owners check it to see how much spend is already committed for the month.

Small and mid-sized teams often run their whole PO process from a purchase order tracker template like this. Teams with an ERP keep one as a working list of exceptions: late orders, part deliveries and invoices that don't match.

Key components

PO number

A unique code for each order, and the key every other tab looks up.

Vendor name

Picked from a drop-down list, so each supplier is spelled one way and totals add up.

Order and expected delivery dates

When the PO was raised and when the vendor promised delivery, which drives the late flag.

Status

Where the order stands, from open to part received, received or closed, colour-coded so problems stand out.

Total amount

The value committed on the PO, which receipts and invoices are checked against.

Amount paid and balance due

Payments made so far, including part payments, and the cash still owed to the vendor.

Get the purchase order tracking excel template free

Ready to use in Excel and Google Sheets. Fill it in, save it, reuse it.

For beginners

How purchase order tracking works

Every PO moves from raised to closed through five stages. The tracker records the date and value at each stage, so you can see where any order is stuck.
  1. 1
    Raise

    An approved request becomes a PO with a unique number. Add it to the log the same day.

  2. 2
    Send

    Email the PO to the vendor and ask them to confirm price and delivery date.

  3. 3
    Receive

    When goods or services arrive, log a goods received entry against the PO number.

  4. 4
    Match

    When the invoice arrives, compare it to the PO value and the value received.

  5. 5
    Close

    Once everything is received and invoiced, the status flips to Closed and the PO drops off the open list.

Need something simpler?

Start with eight columns: PO no., Vendor, Order date, Expected delivery, Status (drop-down), Total, Amount paid, Balance due. Add the receipts tab and formulas once you raise more than a handful of POs a week.

Part 1 · PO log

The purchase order tracking log

The PO log holds one row per purchase order, added the day it is raised. Formulas pull in receipts, invoices and payments, then set the status, days late and balance due for you.

Everything else in the workbook reads from this tab. Never reuse a PO number and never split one PO across two rows; part deliveries go on the Receipts tab instead. Format the range as an Excel Table so new rows pick up the formulas automatically.

PO no.VendorOrderedExpectedPO valuePaidBalance dueStatus
PO-2026-0412Brightline Software18 Aug05 Sep18,000.0018,000.000.00Closed
PO-2026-0418Acme Office Supply01 Sep12 Sep2,400.001,600.00800.00Part received
PO-2026-0425Northwind Logistics05 Sep20 Sep7,500.000.007,500.00Late
PO-2026-0431Kestrel Data10 Sep30 Sep9,600.000.009,600.00Received
PO-2026-0436Orbit Analytics22 Sep15 Oct12,000.000.0012,000.00Open
Total49,500.0019,600.0029,900.00

Illustrative data as at 30 Sep 2026, not real vendors. In the download, received and invoiced columns sit between PO value and Paid.

Build it yourself

Works in Excel and Google Sheets. Headers in row 1, data from row 2, formulas copied down. Columns I and K read the Receipts and Invoices tabs.

ColHeaderEntry or formulaWhat it does
APO no.Text, e.g. PO-2026-0412Unique key every other tab looks up
BOrder dateDateWhen the PO was approved and sent
CVendorData Validation list from Vendors tabKeeps vendor names spelled one way
DRequesterTextWho to ask when something is late
ECost centreDrop-downFeeds spend by department
FDescriptionTextWhat was ordered, in a few words
GPO valueCurrencyTotal committed on the PO
HExpected deliveryDateDate the vendor confirmed
IReceived value=SUMIF(Receipts!B:B,A2,Receipts!E:E)Adds every goods received entry for this PO
JReceived %=IF(G2=0,0,I2/G2)Share of the order delivered; format as %
KInvoiced value=SUMIF(Invoices!B:B,A2,Invoices!E:E)Adds every invoice logged against this PO
LOpen balance=G2-K2Committed spend not yet billed
MStatus=IF(AND(I2>=G2,K2>=G2),"Closed",IF(I2>=G2,"Received",IF(I2>0,"Part received",IF(TODAY()>H2,"Late","Open"))))Closed, received, part received, late or open
NDays late=IF(I2>=G2,0,MAX(0,TODAY()-H2))Days past the expected delivery date
OMatch check=IF(K2>I2,"Billed > received",IF(K2>G2,"Billed > PO","OK"))Flags invoices that run ahead of delivery or the PO
PAmount paid=SUMIF(Invoices!B:B,A2,Invoices!J:J)Payments made on this PO, including part payments
QBalance due=G2-P2Cash still owed on the PO, billed or not
RPayment overdue=IF(COUNTIFS(Invoices!B:B,A2,Invoices!K:K,"Overdue")>0,"Overdue","")Flags any unpaid invoice past its due date

Status checks the strictest condition first, so a fully received and fully invoiced PO shows Closed even if it arrived late. Switch on three built-in features: Data Validation drop-downs for vendors, conditional formatting that marks Closed rows and overdue payments, and SUMIFS totals per vendor on the dashboard. For more on what to track and why, read the guide to purchase order tracking.

Part 2 · Goods received

Goods received log for part and full deliveries

Log one row for every delivery or completed service, against its PO number. The PO log adds them up, so part deliveries show the right received value.

This tab works as a simple goods received voucher template: who received what, when and in what condition. Keeping receipts on their own tab means a PO delivered in three shipments still sits on one row in the log. It is also the evidence AP needs before paying.

GRN no.PO no.DateReceived byValueCondition
GRN-0871PO-2026-041205 SepJ. Patel18,000.00Accepted
GRN-0874PO-2026-041812 SepM. Okafor1,600.00Accepted
GRN-0879PO-2026-041812 SepM. Okafor0.00Rejected: damaged
GRN-0885PO-2026-043129 SepL. Chen9,600.00Accepted

Illustrative entries. Acme's order is 2,400.00; one carton of 800.00 arrived damaged and was rejected, so it stays open.

ColHeaderEntry or formulaWhat it does
AGRN no.Text, e.g. GRN-0871Receipt reference for audit
BPO no.Drop-down from PO Log!A:ALinks the delivery to its PO
CDate receivedDateFeeds delivery lead time
DReceived byTextPerson who checked the goods
EValue acceptedCurrencyOnly what passed inspection; rejected goods = 0
FVendor=XLOOKUP(B2,'PO Log'!A:A,'PO Log'!C:C,"Check PO")Pulls the vendor name from the PO log
Services count too. Log a receipt when the work is signed off, not when the vendor says it is done. See what a goods received note should contain.
Part 3 · Invoice match

Invoice match against the PO and receipt

Before an invoice is paid, its value should agree with the PO and with what was received. The match tab flags any invoice outside your tolerance and marks it Hold.

This is three-way matching in a spreadsheet: PO value, received value and invoiced value side by side. Put your tolerance and payment terms on a Settings tab so finance can change them in one place. Anything on Hold goes back to the requester before AP pays, and columns I to K track the due date and every payment.

ColHeaderEntry or formulaWhat it does
AInvoice no.TextVendor's own number, your duplicate check
BPO no.Drop-down from PO Log!A:AEvery invoice must quote one
CInvoice dateDateStarts the payment terms clock
DDuplicate?=IF(COUNTIFS(A:A,A2,B:B,B2)>1,"Duplicate","")Same number on the same PO twice
EInvoice valueCurrencyInvoice total before tax
FReceived to date=XLOOKUP(B2,'PO Log'!A:A,'PO Log'!I:I,0)From the PO log
GVariance=SUMIF(B:B,B2,E:E)-F2All invoices on this PO minus value received
HDecision=IF(G2>Settings!$B$1*XLOOKUP(B2,'PO Log'!A:A,'PO Log'!G:G,0),"Hold","Pay")Hold if billed exceeds received by more than tolerance
IDue date=C2+Settings!$B$2Invoice date plus payment terms in days, e.g. 30
JAmount paidCurrencyPayments made so far, including part payments
KPayment status=IF(J2>=E2,"Paid",IF(TODAY()>I2,"Overdue",IF(J2>0,"Part paid","Due")))Feeds the overdue flag on the PO log

Worked example: Kestrel Data invoice

PO-2026-0431 value9,600.00
Received (GRN-0885)9,600.00
Invoice KD-22079,900.00
Variance300.00
Tolerance (2% of PO)192.00
DecisionHold

Illustrative figures and tolerance. Read how three-way matching works in AP.

Part 4 · Dashboard

PO tracker dashboard and summary formulas

The dashboard tab turns the log into a few numbers: open and late POs, committed spend, spend and balance due per vendor, and overdue payments. Review it weekly with whoever chases deliveries and payments.

The most useful number is committed spend: money already promised on POs but not yet billed. Budget owners rarely see it in the accounts, because nothing posts until the invoice arrives. Late POs come next, since every late order is a follow-up email waiting to be sent.

Closed18,000.00
Received9,600.00
Part received2,400.00
Late7,500.00
Open12,000.00

PO value by status from the sample log, 30 Sep 2026. Illustrative.

MetricFormula
Open POs (not closed)=COUNTA('PO Log'!A2:A1000)-COUNTIF('PO Log'!M:M,"Closed")
Late POs=COUNTIF('PO Log'!M:M,"Late")
Committed spend not yet invoiced=SUM('PO Log'!L:L)
Spend with one vendor=SUMIFS('PO Log'!G:G,'PO Log'!C:C,"Kestrel Data")
Balance due to one vendor=SUMIFS('PO Log'!Q:Q,'PO Log'!C:C,"Kestrel Data")
PO value by cost centre this month=SUMIFS('PO Log'!G:G,'PO Log'!E:E,"IT",'PO Log'!B:B,">="&EOMONTH(TODAY(),-1)+1)
Invoices on hold=COUNTIF(Invoices!H:H,"Hold")
Payments overdue=COUNTIF(Invoices!K:K,"Overdue")
Part 5 · Excel setup

Excel setup rules for the PO tracker

Three settings keep a PO tracker reliable: drop-downs for vendors and statuses, colour rules for closed, late and overdue rows, and locked formula columns. Set them once before anyone else edits the file.

Most broken trackers fail the same way: a typo in a vendor name, a formula overwritten with a number, or a late order nobody noticed. These rules stop all three. They work the same in Google Sheets, under Data validation and Conditional formatting.

RuleWhereHow to set it
Vendor drop-downPO Log column CData > Data Validation > List, source =Vendors!$A$2:$A$200
Status drop-down (manual version)PO Log column M, if you set status by handData > Data Validation > List, source Draft,Pending,Delivered,Complete
Closed rows in greenPO Log A2:R1000Conditional formatting, formula =$M2='Closed', green fill
Late orders in redPO Log A2:R1000Conditional formatting, formula =$M2='Late', red fill
Overdue payments in red textPO Log A2:R1000Conditional formatting, formula =$R2='Overdue', bold red text
Part received in amberPO Log A2:R1000Conditional formatting, formula =$M2='Part received', amber fill
Lock formula columnsPO Log I:RUnlock input columns, then Review > Protect Sheet
Auto-expanding rowsEvery tabSelect the range and press Ctrl + T to make an Excel Table
  1. 1
    Number POs in sequence

    Use PO-YYYY-NNNN and never reuse a number, even for cancelled orders.

  2. 2
    Mark cancellations

    Set PO value to 0 and add Cancelled to the description, so the history stays.

  3. 3
    Archive yearly

    Move closed POs to an archive tab after year-end so formulas stay fast.

A tracker is only as good as the requests feeding it. Spendflo handles intake and approvals first.

See how it works
Statuses

PO statuses, explained

Each PO carries one status at a time, set by the formula in column M. If your team prefers Draft, Pending, Delivered and Complete, rename the labels in the formula or use the manual drop-down in Part 5.
Open

Raised and sent, nothing received yet, still before the expected delivery date.

Late

Nothing received and the expected delivery date has passed. Chase the vendor.

Part received

Some goods or services accepted, the rest still to come or rejected.

Received

Everything accepted, waiting on the vendor's invoice.

Closed

Fully received and fully invoiced. No further spend should hit this PO.

Lead times

Measuring delivery performance by vendor

Add a received date to each PO and the tracker can show average lead time per vendor. Use it at renewal or when choosing between two suppliers.
MeasureFormula
Lead time for one PO (days)=MINIFS(Receipts!C:C,Receipts!B:B,A2)-B2
Average lead time for a vendor=AVERAGEIFS(S:S,C:C,"Northwind Logistics")
On-time delivery rate for a vendor=COUNTIFS(C:C,"Northwind Logistics",N:N,0,M:M,"<>Late")/COUNTIF(C:C,"Northwind Logistics")

Put the lead time formula in a new column S on the PO log. MINIFS finds the first receipt for the PO, so a part delivery counts as the start of fulfilment. If a vendor's average keeps rising, raise POs earlier or agree a firm delivery date in the PO terms.

Best practices

Do this, avoid that

Log every PO the day it is raised, record receipts against PO numbers and match invoices before paying. Most tracking gaps come from skipping the receipts step.

Do

  • ✓
    Log POs on approval

    Add the row the day the PO is approved, so committed spend is always current.

  • ✓
    Record every delivery

    One receipt row per delivery keeps part shipments visible on the PO log.

  • ✓
    Ask vendors to quote the PO

    Invoices without a PO number go back to the vendor before they reach the match tab.

  • ✓
    Chase late POs weekly

    Filter status to Late every Monday and email each vendor with the PO number.

  • ✓
    Close POs promptly

    Once a PO is closed, any later invoice against it is an exception worth checking.

Avoid

  • ×
    Typing received values in the log

    Overwriting the SUMIF formula breaks the link to the receipts tab.

  • ×
    Reusing PO numbers

    Two orders with one number make receipts and invoices land on the wrong row.

  • ×
    Paying before receipt

    An invoice with no matching receipt should sit on Hold, however small it is.

  • ×
    Free-text vendor names

    Acme and Acme Office Supply become two vendors and your totals split.

How to use it

Set it up in an hour

Paste in your open POs, then log receipts and invoices against them as they arrive. Review late and on-hold items every week.
  1. Step 1

    Load open POs

    Export open purchase orders from your accounting system or inbox and paste them into the PO log.

  2. Step 2

    Add vendors and cost centres

    Fill the Vendors tab first so the drop-downs work, then tidy any name mismatches.

  3. Step 3

    Back-fill receipts

    Enter deliveries already received so the status column starts out accurate.

  4. Step 4

    Review weekly

    Chase Late POs, clear Hold invoices and check committed spend against budget.

Example

One PO, start to finish

A part delivery keeps the PO open until the rest arrives. The tracker stops AP paying for goods that were rejected.

Acme Office Supply receives PO-2026-0418 for 2,400.00 of desk chairs. On 12 Sep, 1,600.00 is accepted and an 800.00 carton is rejected as damaged. Status shows Part received. Acme invoices 2,400.00, the match tab shows an 800.00 variance and marks it Hold until the replacement arrives. Illustrative figures.

Ready to use it? Download the purchase order tracking excel template

Every part on this page, in Excel and Google Sheets, with the examples filled in.

Variants

Fit it to your team

A small office needs only the PO log and receipts tab. Teams raising hundreds of POs a month add invoice matching, the dashboard and one owner per cost centre.
Under 20 POs / month

Small teams

Use the PO log and receipts tab only. One person can update both in ten minutes a week.

20-200 POs / month

Mid-market

Add the invoice match tab and a tolerance, and give each cost centre owner a filtered view of the dashboard.

Software and services

SaaS-heavy teams

Add a renewal date column and a contract link, since most SaaS POs repeat each year and need a fresh approval.

Spendflo has processed $3.7B in software spend, at 30% average savings for its customers.

See your savings
Bottom line

Track the PO, then fix the request

A PO tracker tells you which orders are late, which deliveries are partial and which invoices should not be paid yet. When the same problems keep appearing, the cause is usually upstream, in how purchases are requested and approved.

FAQ

Frequently asked questions

Quick answers to what people ask most about the purchase order tracking excel template.

Does Excel have a purchase order template?

Microsoft's template gallery has purchase order forms, which are the single order you send a vendor, but a tracker that follows every PO through delivery, invoicing and payment is a separate sheet. You can download this free tracker in Excel or Google Sheets and pair it with a PO form for the orders themselves.

How can I create an order tracker in Excel?

Enter headers for PO number, vendor, order date, expected delivery, status, total, amount paid and balance due, press Ctrl + T to make a Table, then add Data Validation drop-downs for vendors and statuses. Add conditional formatting for closed and overdue rows and SUMIFS totals per vendor, or download the finished tracker above with all of it built in.

How to make a tracking template in Excel?

List the columns you need, enter headers in row 1, press Ctrl + T to make a Table, then add formulas for status and dates. Use Data Validation for drop-downs and conditional formatting to highlight late rows. If you would rather skip the build, download the finished template above.

How to use Excel for purchase order?

Use one workbook for two jobs: a PO form to send each order, and a tracker that logs every PO with its delivery, invoices and payments. The download covers the tracking side, with SUMIF formulas that tie receipts, invoices and payments back to each PO number.

Where can I download a free PO tracker template?

You can download a free PO tracker template from this page in Excel or Google Sheets. It includes sample data so you can see how each formula behaves before you replace it with your own POs.

Template library

Browse all procurement templates

See all 60 templates →

Clean PO tracking starts with clean requests.

Spendflo handles intake, approvals and purchase requests, including renewal POs, so every order starts complete. AP automation is coming soon.

Book a demo
  • 4-tab PO workbook
  • 18 columns with formulas
  • 5 statuses set automatically
  • Excel and Google Sheets