
Loading...
A card inventory needs twenty-six columns to answer the only two questions you will ever ask of it: what do I own, and what did I make on the ones I sold. Fewer than that and the second question goes unanswered.
The template below has all of them, filled with four sample rows so the format is obvious. It is a plain CSV, so it opens in Excel, Numbers or Google Sheets without conversion.
Twenty-six columns, four worked example rows, no signup. Delete the examples and start typing, or keep them as a reference while you fill in your first few cards.
Download the CSV templateEvery column earns its place by answering something you will eventually be asked. Grouping them this way also tells you what can be left blank at the point of entry and what cannot.
| Group | Columns | Why it is there |
|---|---|---|
| Identity | Player, year, sport, manufacturer, set, card number, variant | Without the parallel and the number you cannot price it, and you cannot prove which card sold |
| Condition | Grading company, grade, cert number | The single biggest driver of value, and the cert number is your proof |
| Cost | Quantity, purchase date, platform, purchase price, shipping in, grading cost, total basis | What the card cost you, which is what stands between a sale price and a tax bill on all of it |
| Sale | Status, asking price, sale date, sale price, fees, shipping out, net proceeds, profit | Turns a sale price into the number that actually reached your account |
The temptation is obvious: same card, so bump the quantity to two. But one is a $40 raw copy and the other is an $850 slab, and the moment they share a row the average destroys both numbers. Keep one row per grade, always.
Submissions are batched, so the fee arrives as one line for twenty cards and gets recorded wherever it fits. Two years later the card sells, and its basis is missing the $27 that belonged to it. Split the submission across the cards when the invoice arrives, while it is still obvious which cards were in it.
This is the one that actually kills the sheet. Twenty-six columns is a lot to type while a listing is still open in another tab, so entry gets deferred, then batched, then abandoned. Every practical fix is some version of making entry cheaper.
Almost everything in the identity group is already written down, in the listing title of the card you bought. A title like 2023 Panini Prizm Victor Wembanyama #136 Silver Prizm Rookie RC PSA 10 contains the player, the year, the manufacturer, the set, the card number, the parallel and the grade. Seven columns, in one line of text you can copy.
Two ways to exploit that in a spreadsheet. Paste the full title into a notes column at minimum, so the information is captured even when the structured columns are not filled in yet: a title you can re-read beats a blank row. Or split it with formulas, which works passably for year and player and poorly for parallels, because parallel naming has no consistent position or vocabulary.
The cost group cannot be scraped from a title, but it does not need to be typed either. It is already in the order history of wherever you bought the card, with the exact date and the exact price, which is a better source than memory.
A spreadsheet is genuinely fine for a hundred cards you rarely sell. The honest signals that it has stopped working are these:
Paste your listing titles and the identity and condition columns come back filled in with a confidence score on each one. Pull the cost columns from your eBay order history rather than typing them. Same twenty-six columns, without the typing that makes people give up.
Identity first: player, year, sport, manufacturer, set, card number and variant. Then condition: grading company, grade and cert number. Then money: quantity, purchase date, platform, purchase price, shipping in, grading cost and total cost basis. Then the sale: status, asking price, sale date, sale price, selling fees, shipping out and net proceeds. Anything less and you cannot compute real profit when the card eventually sells.
No. A PSA 10 and a raw copy of the same card are different assets with different costs and very different values. Putting them on one row with a quantity of two averages away the only figure that matters at sale time. Give each grade its own row, even when the card is identical.
It makes little difference at the sizes most collections reach. Google Sheets is easier to reach from a phone at a show, Excel handles a few thousand rows more comfortably. The thing that decides whether either works is discipline about entering a card at the moment you buy it, not the software.
Usually at around a few hundred cards, or the first time you get a 1099-K. The failure is rarely the row count. It is that the twenty-odd columns take too long to fill in per card, so entries get skipped, and a spreadsheet with gaps in it cannot answer the question it exists to answer.
Give status its own column and use a distinct value such as in transit, then keep those rows out of any on-hand count you calculate. The money is spent and belongs in the sheet, but a card in the post cannot be sold and should not inflate what you think you are holding.