Goods Received Note Template

A free goods received note template in CSV, with accepted and rejected quantities, batch and expiry capture, put-away location and discrepancy notes.

Goods Received Note Template

A GRN log that records what actually arrived against each purchase order: quantities accepted and rejected, batch or serial references, put-away location, and what went wrong.

By Tibeau De Grauwe, FounderUpdated September 2026

  • 25 products free
  • No credit card
  • 10-min setup
Download the goods received note template
CSV file, one row per line received, with a worked partial delivery and a rejection.

What is in the template

One row per line received, grouped by GRN number. A single delivery covering three products becomes three rows sharing a GRN_Number, so the whole delivery can be pulled up in one filter while each line keeps its own quantity, batch and condition.

The sample data works through the three cases that matter: a clean full delivery, a partial delivery where 1,200 of 2,000 units arrived and the balance is still outstanding, and a delivery where three units were crushed in transit and went to quarantine rather than into stock.

Columns explained

GRN_NumberUnique per delivery, shared across every line received in that delivery. This is the reference an invoice query starts from.
Receipt_DateThe date goods physically arrived, which is not always the date paperwork was processed.
PO_NumberThe purchase order this delivery is against. Without it, the receipt cannot be matched to what was ordered.
SKUThe item received, matching your inventory list.
Quantity_OrderedWhat the purchase order line said, copied across so a short delivery is visible on the same row.
Quantity_ReceivedWhat actually arrived and was accepted into stock.
Quantity_RejectedUnits that arrived but were refused: damaged, wrong item, failed inspection. Rejected units must not increase stock.
Batch_Or_SerialLot or serial reference, captured at receipt because it is almost impossible to reconstruct afterwards.
Expiry_DateFor anything with a shelf life. Blank is fine for the rest.
LocationWhere the stock was put away, including a quarantine location for rejected or held goods.
Received_ByWho checked the delivery in. Not bureaucracy: it is who to ask when the count is queried three weeks later.
ConditionOK, Damaged, Short, or Over. A one-word status makes discrepancies filterable.
Discrepancy_NotesWhat was wrong and what was done about it, including any credit or replacement requested.

The receiving check the columns assume

The template only works if someone opens the boxes. Signing a carrier note confirms that packages arrived, not that the right quantity of the right item is inside them, and a GRN filled in from the delivery note rather than from a count is a record of the supplier’s claim rather than of your receipt.

Three things are worth doing while the pallet is still on the floor: count what is there, check it against the purchase order line, and write down the batch or serial numbers. Everything else on the form can be completed later; those three cannot be recovered once the goods are put away.

Where a GRN spreadsheet breaks down

Receiving in a spreadsheet does not increase stock. Someone has to open the inventory list and add the received quantity by hand, and the window between those two actions is where stock on the system and stock on the shelf part company.

It also cannot keep a purchase order line open. Nothing in the file remembers that 800 units are still owed on PO-2026-0142, so the outstanding balance lives in whoever last read the file, and a second invoice against the same order has nothing to fail against.

In StockFlow, receiving against a purchase order updates stock at the same moment the receipt is recorded, keeps the ordered, received and outstanding quantities on the line, and captures batch and expiry data on the item itself instead of in a parallel file.

Related resources

Trusted by small businesses

What our customers say

Super Kind! Quick replies from their support and very easy fixes, changed the dashboard a bit and customized it. Also gave me 450 items extra on the free plan just for me. Highly recommend and again great service!

Erasable Trading AU

Best customer service! Stockflow's customer support is fast and extremely helpful. They assisted me with customization of the software to improve my experience as a user.

Justin M.

Co-Owner, Consumer Goods

Frequently asked questions

What is a goods received note?
A goods received note, or GRN, records what physically arrived from a supplier: quantities accepted, quantities rejected, batch or serial references, and where the stock was put away. It is the evidence that a delivery happened, separate from the order that requested it and the invoice that bills for it.
Why do I need a GRN if I already have the purchase order?
The purchase order records what you asked for. Only the GRN records what turned up. Approving an invoice without one means paying on the assumption that the delivery matched the order, which is exactly the assumption short deliveries and premature invoices rely on.
How do I record a partial delivery?
Enter the quantity that actually arrived in Quantity_Received while leaving Quantity_Ordered at the full order quantity, and note the outstanding balance. The next delivery against the same purchase order gets its own GRN number, so each invoice can be matched to the delivery it bills for.
What should happen to rejected goods?
Record them in Quantity_Rejected and put them in a separate quarantine location, never in general stock. Rejected units must not increase quantity on hand, or you will pick and promise stock that is waiting to go back to the supplier.
Do I need a GRN for every delivery?
For anything against a purchase order, yes. The cost of one line of data entry at the dock is far lower than the cost of an unresolvable invoice dispute, and batch numbers in particular can only be captured while the goods are in front of you.