Trading card store inventory: sealed product, priced singles, and the buylist
Trading card inventory management for Shopify shops: run sealed and singles as separate systems and turn the buylist into your acquisition engine.
InventoryX is in development and not available today. ClearStock is the live Shopify app.
A card shop is two businesses sharing a register. Business one sells sealed product: boxes, packs, tins — a few hundred SKUs, bought from distributors, priced against a market that moves weekly. Business two sells singles: one illustrative booster case of 36 packs breaks into roughly 360 loose cards, of which a handful are worth real money and most are worth cents, and each one reprices on its own clock.
Run both with a single inventory policy and one of them is always wrong. Sealed rewards buying discipline and punishes holding after a reprint. Singles reward pricing cadence and a working buylist, and punish repricing lag. If you read only one section here, make it the buylist math — it's what turns trade-ins into your acquisition engine. The sealed/singles split, the Shopify structure for singles, and the weekly 45-minute cadence hold that engine in place.
Why one policy can't run both
| Sealed | Singles | |
|---|---|---|
| Acquisition | Distributor cases, preorders | Buylist credit, trades, pack openings |
| SKU count | 50–500 | 5,000 and up |
| Pricing | Weekly market sync on a short list | Rolling reprice on movers; long tail static |
| Margin | Thin, market-set, event-driven spikes | The spread — you set margin by what you pay |
| Main risk | Reprint announcements reset values | Repricing lag; condition disputes |
| Core metric | Days of cover per title | Aged-singles share; buylist spread |
Neither column is a hobby version of the other. Sealed behaves like consumer retail: forecastable-ish demand, case economics, a selling calendar. Singles behave like a market-maker's book: thousands of positions, each with a price that decays if you ignore it. Tools and routines need to be chosen per column, not per store.
Structuring singles in Shopify
The workable pattern for most shops: one parent product per set, one variant per card, condition as a second option (near mint / lightly played / moderately played / heavily played). As of November 2026, Shopify supports up to 2,048 variants per product (Shopify Help Center, "Adding variants," accessed November 2026) — enough for most standard sets — and the variant limit guide tracks the ceilings and workarounds in detail.
Two caveats worth knowing before you migrate, both from the same Help Center page: some apps don't support products over 100 variants — Stocky and the legacy Order Printer don't go past 100 — so check your stack first; and products over 100 variants can behave differently in some themes and sales channels. If a set outgrows the ceiling, split it (base set / subset) rather than cramming.
Cost per item is per-variant, so each card-and-condition combination carries its own cost — that's what makes margin reporting on singles honest instead of average-shaped. At scale, the long tail usually gets a simpler treatment: near-mint commons and bulk live in graded bulk boxes tracked at lot level (an illustrative practice: bulk as "$X per thousand" entries), while anything worth more than a couple of dollars gets its own variant with its own cost. High-value cards get one product each, with photos, because condition disputes are cheaper to prevent than to resolve.
One rule with no exceptions: every card-and-condition combination is quantity one. The moment it sells, it must leave the sale channel. The "continue selling when out of stock" switch has no place on singles — leaving it on is how a shop ends up selling the same one-of-one twice, and the failure pattern is the same one the overselling breakdown covers for any Shopify store.
The buylist is your acquisition channel
Distributors sell you sealed; the buylist is how you acquire singles. The buylist is simply the price list at which your store buys from customers — usually split into a cash rate and a store-credit rate, with credit paying more because it returns to your register.
Worked example, illustrative rates: a customer offers a card with a market price of $40 (market reference: TCGplayer market prices, accessed November 2026).
| Acquisition route | You pay | Cash out now | Margin on a $40 sale |
|---|---|---|---|
| Cash buylist at 40% of market | $16.00 | $16.00 | $24.00 (60%) |
| Store credit at 55% of market | $22.00 (liability) | $0 | $18.00 (45%) |
The credit route books less margin per card but no cash leaves, and unspent credit is float — a liability on your books that mostly redeems against sealed product you'd be selling anyway. An illustrative policy that holds up in practice: pay credit when the customer is a sealed buyer (their credit converts to your higher-turnover stock), pay cash when you need a specific card to fill a case today, and keep the spread between the two rates (40 vs 55) wide enough to pay for the liability you're creating. Track outstanding credit like gift-card liability, because that's what it is.
Buylist discipline is mostly freshness. A published list that updates as market prices move keeps you from buying yesterday's winner at tomorrow's loss — the known pattern in TCG markets is that a card's price can fall faster after a meta shift than a weekly list revises. Trade-ins should be entered into the system the same day they're bought: a buylist transaction that isn't in inventory until Friday is five days of selling cards you've already paid for and can't find.
Sealed: buy against the calendar, not the hype
Sealed SKU counts are small enough to manage with one list and one metric: days of cover. The arithmetic, illustrative: a title selling 2.5 boxes a week with 18 on hand holds 18 ÷ 2.5 = 7.2 weeks of cover; with a two-week distributor lead and preorder cycles around set releases, a reasonable reorder trigger is five weeks of cover. The days of cover guide walks the full calculation and its failure modes.
The sealed-specific risk is the reprint. A reprint announcement can reset a box's premium overnight, which is the argument for holding less cover on premium product than the math suggests — the cover calculation assumes demand continues, and reprints invalidate the assumption rather than the arithmetic. Release calendars and event weekends pull demand forward; both live on the same buying calendar as your distributor deadlines.
Sealed is also the cash-hungry column: you pay distributors weeks before the boxes sell through, which is why preorders exist as a financing instrument. The mechanics of that gap — cash out at order, cash in at sale — are the cash conversion cycle, covered with real store numbers in the cash conversion cycle guide.
The 45-minute weekly cadence
- Sync prices on your fastest movers: top ~50 singles plus all sealed, against market. (15 min)
- Aged-singles sweep: anything unsold 12+ weeks steps down a price tier; anything that sold gets pulled from the case. (10 min)
- Buylist review: adjust rates on cards whose market moved more than an illustrative 10% since last week; suspend buying on anything you can't price confidently. (10 min)
- Sealed reorder list: days of cover per title, order-by dates against distributor timelines. (10 min)
This is deliberately a spreadsheet-and-POS routine, not a platform commitment. An honest note on fit: our own tool's velocity math assumes demand per SKU is roughly steady — true enough for sealed, spiky and price-driven for singles. Know which half of the store you're pointing a tool at before you buy it.
A card shop's closest cousin in scale logic is the bookstore: thousands of unique-identifier SKUs, a long backlist tail, per-item pricing. The ISBN-scale routines that transfer — and the ones that don't — are in the bookstore inventory guide.
Common questions
How should a card shop structure singles in Shopify? One parent product per set with a variant per card and condition; Shopify supports up to 2,048 variants per product as of November 2026, enough for most sets. Keep cost per item filled per condition so margin is honest. For products over 100 variants, check app support first — Stocky and the legacy Order Printer stop at 100.
What is a buylist and how should it be priced? The list of prices at which your store buys cards from customers, split into cash and store-credit rates. Illustrative house spreads run 40–60% of market, with credit paying more because it redeems at your register. Update the list as market prices move; a stale buylist buys yesterday's winners at tomorrow's losses.
Is sealed product or singles better margin? Different clocks. Singles carry the spread — you set margin by what you pay — but demand constant pricing labor. Sealed margins are thinner and market-set, but each SKU moves volume and only needs cover math. Most healthy shops earn on singles spread and use sealed for cash flow and events.
How do you price thousands of singles without repricing all day? Tier the work: sync the fastest movers weekly against market prices, step down aged stock on a fixed schedule, and leave the true long tail static until it sells or ages out. Full-catalog daily repricing is a job for dedicated pricing tools; the weekly cadence fits a spreadsheet and 45 minutes.
How do card shops avoid selling the same one-of-one twice? Every card-and-condition combination is quantity one: the moment it sells, it leaves the sale channel. Never enable "continue selling when out of stock" on singles, keep counter and online stock in the same location, and enter trade-ins the day they're bought so the system holds what the case holds.
Next step
Split the ledgers this week: a one-page sealed cover list with an order-by date per title, and a singles aging sweep with the 12-week step-down rule attached. Decision rule to run until the numbers argue otherwise: reorder sealed when a title drops under five weeks of cover, and never buylist a card you can't price the same day — the cover arithmetic behind the first half is in the days of cover guide linked above.