Skip to content
CardOps

Profit & tax

How to Track Cost Basis on Your Card Inventory

You know what a card sold for. Half the dealers at any show couldn't tell you what it cost them to get there. That gap is where your real profit hides.

Ask a vendor how a show went and you'll get a sales number fast. Ask what they actually made and the answer gets slower, because sales minus cost is the only number that matters, and cost is the part most dealers never wrote down. Cost basis sounds like an accounting term for someone else's business. For a card dealer it's just the honest price tag on every item in the box, the number you need before you can call any sale a win.

What cost basis actually means for a card dealer

Cost basis is what a card cost you to acquire and get ready to sell, not what it's worth now and not what you hope to get for it. Buy a card for $40 at a table, and $40 is its basis. Pull it from a bulk lot you paid $200 for, and its basis is a slice of that $200, allocated across everything the lot contained. When you finally sell the card, your profit is the sale price minus that basis, nothing else.

It's easy to confuse basis with market value because both are dollar figures attached to the same card. Market value is what a buyer would pay today. Basis is history, fixed the moment the card entered your stock. A card can be worth $150 on the wall and still have a $40 basis from three shows ago. The spread between those two numbers is your unrealized profit, and it's the whole reason you're carrying inventory in the first place.

Why guessing at cost basis quietly kills your margin

Most dealers who skip cost tracking aren't reckless, they're busy. There's a line at the table, a lot to sort through, and basis feels like paperwork for later. The problem is that "later" usually means reconstructing it from memory after the card has already sold, and memory rounds in your favor without you noticing.

  • A card you actually paid $60 for gets remembered as "around $40," so a $90 sale looks like more profit than it was.
  • Cards from a bulk buy get treated as free once the obvious hits are sold, so the rest of the lot's cost never gets charged against anything.
  • Shipping, show entry to buy, and grading fees quietly vanish because they weren't attached to a specific card.

None of that shows up as a single bad decision. It shows up six months later as a season that felt busy but somehow didn't grow the bank account, because the margin on paper was never the margin in real life.

The one rule: record cost the moment a card enters stock

Every system that actually works comes down to the same habit: log the cost when the card comes in, not when it goes out. At the point of a buy you know exactly what you paid. Wait until the sale and you're guessing, cross-referencing old receipts, or just picking a number that feels right.

In practice that means treating "add to inventory" and "record cost" as the same action, never two. If a card, a lot, or a trade enters your stock without a cost attached, it should feel unfinished, the same way an unpriced card feels unfinished on the table. This is also where an inventory app earns its keep over a notebook: CardOps' Show Mode logs a card's cost the moment you buy it at the table, so basis is already attached by the time you're ready to sell, not something you have to rebuild afterward.

What counts toward a card's cost (beyond the sticker price)

The price you paid the seller is the obvious piece, but a card's true cost basis is usually a little higher than that number alone:

  • Purchase price: what changed hands for the card itself.
  • Grading fees: if you submitted a raw card and it came back slabbed, the grading cost belongs to that card's basis, not to overhead.
  • Shipping and postage: inbound shipping on a card or lot you bought online is part of what it cost to get in your hands.
  • Buy-side show costs: if you paid for a table specifically to source inventory, a reasonable share of that cost can belong to what you bought there.

None of this needs to be exact to the penny. It needs to be consistent, so the same category of cost is treated the same way every time, and so a card's basis reflects what it genuinely took to get it sale-ready.

Lots, bulk buys, and trades: allocating cost when you didn't pay a single price

Singles you buy one at a time are easy. Everything else takes a rule, because you paid one number for many cards and now need many numbers.

A simple, defensible approach: take the total you paid for a lot and divide it across the cards in it by relative market value at the time of the buy, not evenly per card. A $300 lot with one $150 chase card and forty commons shouldn't assign the chase card the same $7.32 basis as a bulk common. Weight the split toward what each card was actually worth going in, and the basis on your chase pull will reflect reality instead of flattering your margin on it.

Trades work the same way in reverse: value both sides of the trade at fair market value on the day it happened, and use what you gave up as the basis for what you received. A trade that looks even on cards can still be a loss or a gain once you price both sides honestly, and that number only exists if you write it down when the trade happens, not weeks later.

Turning cost basis into a real per-show profit number

Cost basis isn't bookkeeping for its own sake. Its whole payoff is a profit number you can actually trust, per card and per show. Sales minus cost basis minus the show's expenses (booth fee, travel, supplies) is the number that tells you whether a show was worth doing again, not the sales total alone.

This is where the habit compounds. A dealer who logs cost at the buy can watch profit accumulate live through a show instead of reconstructing it during teardown with a calculator and a stack of receipts. CardOps totals per-show profit as you sell in Show Mode, using the cost you already logged when each card came in, so the number on your screen at the end of the day is the real one, not an estimate you'll have to correct later.

Questions dealers ask

Is cost basis just what I paid for a card?

Mostly, plus anything else it reasonably took to get that card sale-ready: grading fees on a card you submitted raw, inbound shipping, and a fair share of any buy-side show costs. The core number is still what you paid to acquire it, but a complete basis includes the costs directly tied to that specific card.

How do I split cost basis across a bulk lot?

Divide the total you paid across the cards in the lot weighted by their relative market value at the time of the buy, not evenly per card. A chase pull from a lot should carry more of the cost than a common does, so its eventual profit reflects what it actually took to land it.

What about cards I got through a trade?

Value both sides of the trade at fair market price on the day it happened, then use the value of what you gave up as the basis for what you received. Skipping this makes trades invisible to your profit number even though they move real value in and out of your stock.

Do I need special software, or is a spreadsheet enough?

A spreadsheet can work if you're disciplined about logging cost the moment a card comes in and never letting an item sit unpriced. The habit matters more than the tool. Where a spreadsheet tends to fall behind is at a busy table, where an app that logs cost as part of the buy itself, like Show Mode, makes the habit automatic instead of something to catch up on later.