Free template

Grocery spending spreadsheet: a free template, and how to keep it accurate

A spreadsheet is a reasonable place to track grocery spending. It is free, it is yours, it does not sync anywhere, and you can shape it to your household instead of the other way round.

There is one below and you can download it now. No email.

Most of this page is about using it well, because the difference between a grocery budget worksheet that survives a year and one that gets abandoned is almost entirely about how you enter data in the first two weeks.

Opens in Excel, Numbers, LibreOffice and Google Sheets · No email, no account

What’s in the grocery budget template

Five sheets, plus a Read me tab. No macros, no add-ons.

SheetContainsWhat it’s for
ProductsOne row per productYour product names, written once. Feeds the dropdowns
PurchasesOne row per receipt lineThe sheet that costs you time
TripsOne row per shopping tripChecks your lines add up to the printed total
By monthOne row per monthSpend by month, category, and store
PricesOne product at a timeEvery price you’ve paid for it, dated, with the change

Products

One row per product

Your product names, written once. Feeds the dropdowns

Purchases

One row per receipt line

The sheet that costs you time

Trips

One row per shopping trip

Checks your lines add up to the printed total

By month

One row per month

Spend by month, category, and store

Prices

One product at a time

Every price you’ve paid for it, dated, with the change

You type into Products and Purchases. The other three calculate.

Cells you fill in are shaded cream; white cells hold formulas. Categories and units ship with starting lists on the Products sheet — rename them. Categories that match how your household actually shops beat any taxonomy we could hand you.

There is a sixth tab, Read me, holding these rules and the capacity: 500 purchase rows, 200 trips, 300 products, 24 months. Row 2 of Products, Purchases and Trips is a worked example, greyed — delete it before you start.

The entry rules that keep it accurate

These five are the difference between a spreadsheet you trust and one you quietly stop believing. They are also in the file, on the Read me sheet, because that is where you will look for them in March.

  • Never type a product name twice. “Butter 250g”, “butter”, and “Butter, unsalted 250g” are three separate products to a spreadsheet. Nothing warns you. Your price history just ends up emptier than it should be and you never find out why. This is why the template makes you add each product once, on the Products sheet, and then pick it from a dropdown in Purchases — typing a name that isn’t on the list is rejected. Settle on a format early (brand, item, size) because renaming later means editing every past row.

  • Enter the line total, not the unit price. The line total is what the store charged. Unit price is often printed for your convenience and rounded. The template calculates it for you, from the line total and the quantity. Never the reverse — you’ll introduce rounding error into the one number that was exact.

  • Treat savings lines as information, not deductions. If a line reads $2.49 with a savings line under it, $2.49 is what left your account. The savings line is the store’s claim about what you would otherwise have paid. Record the $2.49 in the price column and the savings figure in its own column if you want it. Subtracting one from the other corrupts your price history silently, which is the failure mode you will not catch.

  • Split by weight, not by package, for anything sold loose. Meat, fish and produce priced per kilo need the quantity column filled in, or the Prices sheet compares $8.40 of beef against $4.20 of beef and reports a 50% drop. Enter the kilos; let the sheet derive price per kilo.

  • Enter before the bags are put away. Not a productivity tip — a recognition that once the paper goes in a drawer it is gone. If a trip cannot be entered now, photograph the receipt and enter it from the photo later.

The awkward cases

  • One trip split across two payments. One Trips row, one date, both totals summed. The split is your bank’s problem, not your grocery record’s.

  • Deposits, bags, and bottle returns. Not food. Give them a category and exclude that category from your By month view, or your food spend inflates by a few dollars a month for no reason.

  • VAT. In most of Europe the shelf and receipt prices already include it, so ignore it. In the US, sales tax on groceries varies by state and is added at the till — if your state taxes food, either add a tax row per trip or accept that your Trips total will not reconcile.

  • Bulk you will use over months. Enter it on the day you bought it. Spreading the cost across future months is accounting, and it will make your monthly figures unreadable to anyone who is not you.

What a spreadsheet does better than any app

We’re not going to argue that software always wins.

A file on your drive is yours — no account, no terms of service, nobody’s roadmap. It bends to your household exactly: split a category, add a column for the co-op down the road, track chicken by kilo and everything else by unit.

It also handles what receipts do not record. Farmers’ market cash, eggs from a neighbor, a vegetable box with no itemized list. There is no paper, so there is nothing any scanner could read. A spreadsheet takes it without complaint.

And it is better at planning. Budget targets, what-ifs, a number to hit this month — set that up in the By month sheet. Budgeting tools built for planning do it better still, and CartEncore deliberately does not do it at all. It records what happened, not what you intend.

If you do one weekly shop at one store and what you want is a monthly total, a spreadsheet is enough. Take the template and skip the rest of this page.

The two things it asks too much for

Both are about price rather than totals.

Whether a price actually moved. Answering that needs the same product, named identically, over many purchases and ideally more than a year. Every entry has to be typed consistently a few hundred times. The failure is not dramatic — it is that some fraction of your entries do not match, and the price history you were building has holes in it you cannot see. It is the same job as being able to watch one product’s price across every purchase, done by hand.

Before you type a single row — scan one receipt and skip the typing →

And before deciding it is worth the effort — the questions worth tracking for →

Whether a promotion is a promotion. A product can carry a discount tag every single visit for two years while the price you actually pay climbs. Each receipt is accurate. The overall story is the opposite of what the tags suggest, and no single receipt contains it — it is only visible in a long run of paid prices for one item. Which is exactly what the Prices sheet is for, and exactly the thing that takes a year of consistent manual entry to produce. There is a worked example of a discount tag that hides a rising price.

The sheet that gets more valuable with time is also the one that demands the most typing before it gives anything back.

A weekly shop for four runs 30 to 50 lines. Some people push through that. It is a real cost, and it is fair to weigh it before starting rather than after three months.

What we do instead

CartEncore reads a photo of the receipt and writes the line items: product, quantity, line total, store, date. What the template asks you to type is what we extract — so Purchases fills itself, and the Prices sheet you would have spent a year building is there from your first upload.

Three things worth stating plainly:

We never estimate a price. If a figure cannot be proven from the arithmetic on your receipt, we show it as missing rather than filling it in. A price history with a gap is honest. One with a guess in it is worse than none.

Line total is the price paid. Savings lines are reference information, not deductions — the same rule we gave for the template above.

You can leave with everything. Export to CSV, in the same shape as the sheet on this page. If you go back to doing it by hand, you keep the history.

Retyping a receipt means retyping what it already says — what the paper already tells you →

Join the early list

The template is yours either way, and it stays free. The receipt reader is not open to the public yet — leave an address and I will write once, when it is.

No bank connection, now or ever.

Common questions

Is the template free, or is it an email wall?

Free. The link on this page is the file. No email, no account.

What format is it?

An .xlsx. Opens in Excel, Numbers, LibreOffice, and Google Sheets — upload it to Drive and Sheets converts it for you.

Can I use it for a grocery list too?

Yes — the Purchases sheet works as a shopping list if you fill in the product and quantity before you go and add the price after. Some people keep a separate tab for the list; the template doesn’t force either.

Can I import my spreadsheet into CartEncore later?

Not yet. If you have built real history by hand and want it brought over, say so — that is the kind of thing we would build for an actual request, not in advance.

Can I run both?

Yes. Export to CSV and paste into Purchases. Cash purchases with no receipt need typing either way.

Does this work outside the US?

The template works anywhere; change the currency format. Our receipt reading is strongest where we have the most receipts, currently Portugal and the US.