Free grain contract and inventory spreadsheet
An Excel workbook for the grain marketing book: every contract, what is in each bin, what you expect to grow, how much is sold and the weighted average price per crop. No sign-up, no email needed.
Download the workbook (.xlsx, 10 KB)Works in Excel, Numbers, LibreOffice and Google Sheets (File, then Import).
What is in it
Three sheets. You fill in contracts and bins; on the third you type each crop and what you expect to grow, and the rest works itself out.
1. Contracts
One row per contract. The example rows below show how they fill in; the workbook starts empty.
| Contract # | Buyer | Crop | Tonnes | Price ($/t) | Delivery start | Delivery end | Status | Notes |
|---|---|---|---|---|---|---|---|---|
| RCH-2618 | Richardson | Canola | 300 | 655.00 | 2026-10-01 | 2026-10-31 | Priced | |
| VIT-8842 | Viterra | Canola | 240 | 672.00 | 2026-11-15 | 2026-12-15 | Priced | |
| PGL-5127 | Paterson | Spring wheat | 180 | 2026-12-01 | 2026-12-31 | Open | price later |
Leave the price empty for an open or basis contract. It still counts as sold, but stays out of the average until it is priced.
2. Bin inventory
One row per bin or bag: what is in it now, and how much it holds.
| Bin | Site | Crop | Capacity (t) | On hand (t) | Last updated | Notes |
|---|---|---|---|---|---|---|
| Bin 1 | North yard | Canola | 500 | 415 | 2026-09-20 | |
| Bin 5 | Home quarter | Spring wheat | 750 | 570 | 2026-09-25 |
3. Position
Type each crop and what you expect to grow. The other three columns fill in from the Contracts sheet.
| Crop | Estimated production (t) | Contracted (t) | Exposed (t) | Weighted avg ($/t) |
|---|---|---|---|---|
| Canola | 1,250 | 540 | 710 | 662.56 |
| Spring wheat | 1,550 | 180 | 1,370 | blank until one is priced |
The formulas, so you can trust them
Contracted adds up the tonnes of every contract for that crop:
=SUMIF(Contracts!C:C, A2, Contracts!D:D)
Exposed is what you expect to grow minus what is contracted, and never below zero:
=MAX(0, B2 - C2)
Weighted average multiplies each priced contract's tonnes by its price, adds those up, and divides by the tonnes that have a price. Open contracts are left out until they are priced:
=SUMPRODUCT((Contracts!C$2:C$200=A2) * Contracts!D$2:D$200 * Contracts!E$2:E$200) / SUMPRODUCT((Contracts!C$2:C$200=A2) * (Contracts!E$2:E$200>0) * Contracts!D$2:D$200)
In the example, canola is 300 t at $655 and 240 t at $672, so the weighted average is (300 × 655 + 240 × 672) ÷ 540 = $662.56 a tonne. The plain average of the two prices would be $663.50. The gap grows when one contract is much bigger than the others; the weighted average calculator shows how much.
When the spreadsheet gets too much
A spreadsheet stops being enough when loads start going out: which ticket went on which contract, how much is still owed, and whether the settlement matched the contract (the free settlement checker does that one at a time). That is what GrainPosition does, and it imports this exact workbook, so nothing you type here is wasted. How to track grain contracts goes through all of it, step by step. See it in a minute.
Questions
Is the grain contract spreadsheet free?
Yes. It's a free Excel workbook with no sign-up and no email needed to download it. Use it for as long as it suits you.
Does it work in Google Sheets?
Yes. It works in Excel, Numbers, LibreOffice and Google Sheets. In Google Sheets, open it with File, then Import.
How does it work out the weighted average price?
For each crop, it multiplies each contract's tonnes by its price, adds those up, and divides by the total tonnes. That is the average the grain actually sold at, which is usually lower than the plain average of the prices.
Can I track grain inventory by location?
Yes. The Bin Inventory sheet has a Site column for the yard or location of each bin, so you can sort or filter by site. It doesn't total by site on its own; a SUMIF on the Site column gives you one. In GrainPosition, every bin has a yard, and grain bags can be added the same way.
Can I track bushels instead of tonnes?
The workbook is set up in tonnes. The bushels to tonnes page converts quantities and prices for every crop, and the GrainPosition app works in either.
Can I move from the spreadsheet to GrainPosition later?
Yes. The app imports this exact workbook: contracts, bins and expected production come across, and you check every row before it is saved.
Ready for a saved book on your phone? Explore grain contract tracking software or saved grain inventory. Review imported rows before saving.
Check a grain settlement from a photo
Upload a photo or PDF to see the settlement's figures explained and checked. Add the contract to compare its price, grade and freight.
Check a settlement photoFree, no account. Review the extracted figures before checking. Documents are processed by Anthropic and are not stored. Privacy