The inventory system that runs a real card business.
I sell thousands of cards a month on eBay and TCGplayer. Spreadsheets broke and off-the-shelf software didn't understand how card sellers actually work, so I built my own. Live eBay sync, combine listings, lot-level profit tracking, pick lists, and a photo-to-listing matcher. It's open now — free for everyone until January 31, 2027, no credit card.
Didn't get the confirmation email? Check your spam folder, or
.
inventory.leumascc.com · Private Access
Registration is open — create your free account on the Register tab. Prefer email updates instead? Drop your address below.
Create your free account — free until January 31, 2027, no credit card required.
Now open — free for everyone until January 31, 2027.Create your free account on the Register tab — no credit card.
62,900
Active eBay Listings
179,000
Cards Tracked
6,200
Combine Listings Managed
12,800
Orders Tracked
$116K
2026 Sales Tracked
Live, platform-wide numbers across every seller on the system · updated in real time
What it does
Everything I needed to run the business, in one place.
Every feature here is live in my own store today — not a roadmap promise. This is the system that handles thousands of cards a month.
Live eBay sync
Listings, orders, and fees pulled straight from eBay's Trading and Finances APIs, with webhooks for near-real-time updates. Your numbers match eBay, automatically. Works with both eBay.com (US) and eBay.ca (Canada), in your own currency.
Live now
Combine listings
Merge a pile of the same card into one listing and keep a full breadcrumb of what went in. Pick lists route by storage location so you find every card fast.
Live now
TCGplayer cross-listing
Export to TCGplayer with delta-aware quantity sync, and guards that catch a mispriced card before it sells for a fraction of its value.
Live now
One inventory, every channel
Your inventory is the source of truth. List, sell, and reconcile the same stock across eBay and TCGplayer without overselling a card you only own once.
Live now
Lot & profit tracking
Real per-lot profit and loss, split down to the child SKU, with a full audit log. Know what each box actually made — not a rounded guess.
Live now
Automated repricing
Set your own pricing rules and let nightly market-based repricing keep your listings competitive while protecting your floor.
Live now
Card shows & buy-back
Run a card show from your phone — sell, trade, and buy on the table. Take in bulk collections with rate-based quotes that flow straight into inventory.
Live now
Reporting & audit trail
Dashboards, year-over-year, dead-stock aging, and a revert path on every bulk operation. Trust your own numbers when it counts.
Live now
Where it's going
Built feature by feature — and still building.
What's connected today, and what's next. Priorities come from real seller demand, not a pitch deck.
Connected today
eBay · TCGplayer · Discord · YouTube
Full eBay integration (US and Canada), TCGplayer cross-listing, a community on Discord, and the build journey on YouTube.
Next
More marketplaces
Mercari, Cardmarket (EU), and COMC are on deck once the multi-tenant core is rock solid.
Next
Sports cards at scale
A first-party sports catalog with visual parallel identification — the part no free data source does well.
Next
In-app shipping
Buy labels and close out orders without leaving the app, built around what card sellers actually ship.
See it in action
A full walkthrough is landing on the Leumas Card Craze YouTube channel — subscribe to catch it.
Yes — Leumas Live is free for everyone through January 31, 2027, no credit card required. It's a beta: it's solid and I'm hardening it every day, so please review your listings after each sync. Create your free account on the Register tab to get started.
How is my inventory data isolated from other users?
Every business table (inventory, orders, combines, lots) carries a user_id and a row-level security policy enforced at the database layer, not in app code. So even if a future bug forgot to filter by user, the database itself would refuse to hand back another seller's row. That's the foundation I'm finishing now, and it's exactly why signups aren't open yet — I won't flip them on until it's proven airtight.
What data do you share with eBay or TCGplayer?
None. Leumas is a client of those marketplaces, not a data broker for them. Your inventory and sales data lives in a Postgres database only you can read. I use your eBay sign-in (OAuth, stored encrypted) to sync your own listings and orders — and I never aggregate or sell your data to anyone.
What if I'm coming from a spreadsheet?
Onboarding imports your active eBay listings automatically through eBay's API — no spreadsheet upload needed. Past sales backfill from eBay's Finances API, and TCGplayer comes in by CSV. I migrated thousands of my own listings off spreadsheets when I built this, so the import flow is made for the messy reality of a high-volume operation.
Do you support marketplaces besides eBay and TCGplayer?
Not yet. eBay and TCGplayer cover most US trading-card commerce, so they came first. Mercari, Cardmarket (EU), and COMC are on the roadmap but won't ship until the multi-tenant core is rock solid. If your business needs a specific marketplace, tell me on Discord — demand sets my priorities.
Can I export my data if I leave?
Yes, always. You can export your full inventory, orders, combines, lots, and audit log to CSV any time, right from the app. I don't believe in data lock-in — if Leumas ever stops working for you, your data leaves with you in a format you can take anywhere.
Who is behind Leumas Live?
That's me — Sam, eBay seller leumas1993, moving high volumes of Pokémon, baseball, basketball, football, Yu-Gi-Oh, and One Piece. Leumas started as my own inventory system after years of fighting spreadsheets, sync gaps, and paid software that didn't get how card sellers actually work. There's more in the founder story below.
Founder story
Built by a high-volume seller, not a VC-funded startup.
Hi, I'm Sam — eBay seller leumas1993. I move thousands of Pokémon, baseball, basketball, football, Yu-Gi-Oh, and One Piece cards every month across eBay and TCGplayer.
Leumas Live started as my own inventory system. Spreadsheets broke around 5,000 listings, and the paid tools I tried didn't understand combine listings, lot tracking, or the audit trails I needed to trust my own numbers. So I built what I needed, one feature at a time.
As you read this, my own store is running 15,999 active listings, 5,232 combine listings, and 4,610 tracked orders — pulled live from the system right now. It runs my entire business. Next, it runs yours.
Every feature here is one I built to fix a real problem in my own store — and one I still use every single day.
Community
Sellers are already in the room.
Seller testimonials go here as beta opens up. Until then, the conversation is live on Discord and YouTube — come watch the system get built in real time.
Sharing Mode ON — financials, order amounts, expenses & buyer names are hidden.
Team access: working in · view-only page
Connect your eBay account to get started
Leumas Live builds your inventory, orders, and financials from your eBay store — the rest of the app unlocks once your account is connected.
Sell on eBay? Connect your account above to continue.
Run a non-eBay store (TCGplayer, Whatnot, in-person)? Reach out to Leumas on Discord —
discord.gg/KPwMswcmef —
for individual approval.
Dashboard
Year-to-date · 2026 · Leumas Live
eBay Connected
WELCOME TO LEUMAS
Get your account set up — 0 of 10 steps done. Each step unlocks the next feature. You can come back here from Dashboard top anytime.
Shipping & Return Addresses
Return Address (TCG Labels)
Ship-From Address (eBay listings)
eBay AddItem requires a city + ZIP for every listing. This is your default ship-from. CSV imports can override per-row.
ManaPool — Magic singles marketplace Not connected
Two steps, one time: open your ManaPool integrations page and create an access code, then paste it here.
Required to list on eBay. Click Load from eBay to pull your shipping, payment & return policies, pick one of each, then Save. (Requires Connect eBay first.)
Real-time card values via TCGPlayer + eBay Sold Listings. Listed price replaced by market price. Portfolio value updated daily.
TCGPlayer PlannedeBay Sold Listings PlannedPSA Pop Report Planned
Historical
Multi-year financials
Year over Year
All-time combined · one final number
Year Over Year Performance
Expenses
Sales
Earnings
Year-by-Year Breakdown
Year
Card Expenses
Biz Expenses
Total Expenses
Sales
Earnings
P/L
Margin
Month-by-Month
Month
Expenses
Sales
Earnings
P/L
Margin
All-Time Net Result
—
Total earnings minus all expenses across all years
Snapshot
Real-time business view · YTD 2026
Inventory Value by Price Band—
Band
Listings
Total Quantity
Value
Avg / Card
Data sources: Avg daily deposit = (CREDITs − DEBITs − marketplace fees + refunded fees) over last 90 days ÷ 90, from ebay_transactions. Operating P/L = eBay net YTD − operating expenses (ST.expenses table, no investments). Cash P/L = eBay net YTD − all expenses YTD (expenses_full rollup, includes card investment spend). Delta between the two = capital spent acquiring inventory this year. Activity YTD = ST.ord rows with sale_date in 2026, all channels.
Inventory
Loading your cards...
Never synced
Listings
Pricing Tool
Manual Listing
Multi-SKU comma-string rows detected
Listings
Img
SKU
Title
Lot
Qty
Price
TCGP MKT
MP MKT
Sold
Listed
Status
Actions
Pricing Tool — market price in → your list price out
eBay
TCGplayer
ManaPool
Editing rules for eBayManaPool pricing isn't set up yet — cards can't be listed or re-priced on ManaPool until you add a rule below (a price band, or a floor + multiplier) and Save.
Try it — see what a card lists for
1 · Where your price starts
Pick how the starting price is set. Bands give you the most control; the other two are one-rule shortcuts.
Prices the card just under its market value (never below your floor). Matching the literal lowest active listing needs a live TCGplayer feed — on the roadmap.
2 · Your price bands — a card's market price lands in a range → it lists for that
The first range that contains a card's market price wins. Each rule lists at a fixed $ price or a ±% off market — pick with the $/% toggle on the row. +20 = 20% above market, −15 = 15% below; a % rule never drops below your floor.
Market minMarket maxList price ($ fixed or ± % off market)
3 · If a card's outside every band
Cards outside every band list at max(Floor, Market × Multiplier).
4 · Safety rails — applied after, to every card
Card floors — never list a matching card below $X (raise only). Each row targets cards by any mix of game, rarity, printing (Reverse Holo / Holo / Normal), and name has… (a subtype like ex, V, VMAX). Blank = any. A card matches when every set field matches; the highest matching floor wins.
Swing cap clamps how far a price can move from its current price in one apply (composes with the built-in large-move review). Blank = no cap.
5 · Custom markup — a flat $ added ON TOP of the final price (the very last step, after rounding)
Markup adds on top of your computed price, so it only moves existing listings if a pricing source is set — price bands above, or "Let prices move with the market" below. With neither, new listings still get the markup but existing ones won't reprice.
e.g. 1 = list everything $1 higher
Markup rules — add more for specific cards (by game, rarity, printing, name has…). The most specific matching rule wins; otherwise the global amount above applies.
TCGplayer export eligibility
Which matched cards go into your TCGplayer sync (not a pricing rule). Eligible to export = matched & active with qty ≥ Min and eBay price < Max — unless "list every matched card" is on. Already-listed rows always stay included.
Display value adjustment — does NOT change list price
Display / analytics only. The inventory MKT column and Mkt-Value totals scale each card's market price by its condition. These are display/analytics estimates (TCGplayer has no free per-condition price feed) and do not change your eBay or TCGplayer list prices. Near Mint = 1.00 (base); enter a fraction of NM for each played grade. Graded, sealed, or unknown-condition cards show the base NM value. A * on a MKT value marks a condition-adjusted estimate.
Playable Sets
Top-25 competitive Pokémon decks — your stock vs market
Card Matching
TCG cards that need a catalog match
Needs Review
Title
Qty
Price
Match
Fix Duplicates
Find listings that are really the same card, and merge them so your counts are right
Duplicate listings
Review each — the same card listed under different box SKUs should merge into one listing. If two rows are actually different cards (a mis-bind), do not consolidate — use Card Matching to fix the binding instead. Consolidating keeps one listing (highest qty), sets its quantity to the group total, and ends the others on eBay. This fires real eBay Revise/End and is confirm-gated.
Ledger integrity
Checks that every listing's quantity still matches its recorded movement history. A clean result is the expected state — your ledger re-ties to your live counts nightly, so this is a read-only tripwire that flags anything the system couldn't record.
Read-only — nothing is changed.
Platform drift — eBay vs Leumas
Leumas is the source of truth. Syncs no longer overwrite your data — they just report what eBay shows. These are the SKUs where eBay and Leumas disagree: a sale you didn't record, a quantity or price you changed on eBay directly, or a listing that ended on eBay while you still hold stock. Resolve each: push Leumas's number to eBay, or accept eBay's into Leumas.
Read-only. Each row has explicit actions; nothing changes until you click one.
Reconcile from an import
Leumas is your master inventory, and your import is the truth. Upload your current inventory export (from whatever tool you use) and Leumas will show every card whose count disagrees, then — only for the cards you approve — set each one to your file's count. This heals an over-count and makes a re-import a no-op instead of adding again. Matched by card (not by SKU), so the changing SKUs don't matter. Preview-first; it revises live eBay listings, so nothing happens until you approve each card.
Reads your file locally; compares to Leumas. No change until you review & approve.
Same card on multiple platforms (eBay + TCGplayer)
These cards are listed as separate inventory rows on more than one platform — for example one row on eBay and another on TCGplayer for the same card. The total quantity is fine, but the stock is split, so a sale on one platform can't reduce the other. Combine — same card merges the rows into ONE listing (quantity = the sum) so a sale anywhere draws from one pile; it ends the other eBay listings and you push a TCG sync CSV afterward to update TCGplayer. Only combine cards that are genuinely the same in separate boxes — if two rows are actually different cards, Deny to hide the group instead.
eBay Mismatches
Where eBay's counts don't match yours — review and fix them in bulk
eBay vs Leumas
Leumas is the source of truth. Syncs no longer overwrite your data — they just report what eBay shows. These
are the listings where eBay and Leumas disagree on quantity or price. Tick the ones to fix and
Push selected to eBay — Leumas's number is written to each live listing (ReviseItem), then the flag clears.
This fires real eBay writes and is confirm-gated; nothing changes until you push.
Lots
Your lot listings — set completion, set lots, and custom bulk lots
Card Lots
Dashboard
Set Lots
Bulk Lots
Set Lots
Track set completion across your TCGs — pick a game, series & set
Pick a series and set above to load the master-set completion grid. This page only counts what you own — it never changes your listings.
Common / Uncommon / Holo Set
—
/ — cards
Complete sets sellable: 0 · 0 currently listed
Reverse Holo Set
—
/ — cards
Complete sets sellable: 0 · 0 currently listed
★ Master Set — Normal + Reverse Holo
0 currently listed
One listing with a full Normal/Holo set and a full Reverse Holo set — 0 cards. Enabled only when both sets above are complete.
Cards in this set — 0 total
Card #
Name
Rarity
Normal Qty
Reverse Holo Qty
Set Lots Snapshot
Loading every configured set…
Series Rollup
TCG
Series
Sets
Avg Normal %
Avg RH %
Avg Combined %
Complete Buckets
Loading…
Per-Set Detail
TCG
Series
Set
Normal %
RH %
Combined %
Cards
Loading…
Create Set Lot Listing
—
Edit if needed. eBay rejects titles > 80 chars.
Single Buy It Now price. You set it.
Auto-generated cover image rendered locally. On submit, uploaded to 0x0.st (anonymous free host) and referenced in the eBay listing's PictureURL. If upload fails, you'll be prompted for a manual URL. You can replace the photo via eBay seller hub after the listing is created.
Custom picture URL (optional):
Listing Profile Settings — auto-filled from your eBay setup (optional override)
Auto-filled from your synced eBay account — your business policies (from the Dashboard "eBay Business Policies" card) plus the same category, condition & dispatch your single-card listings use. You don't need to touch these. Override only if you want a different category (e.g. a dedicated Pokémon Lots category) — changes are saved for next time.
Donor Plan — what happens on submit
Show all donors (0)
Combine Scanner
Find existing eBay listings that look like the same card and could be combined
Scans active eBay listings and clusters them by extracted card # + matching set name.
Only listings with BOTH a detectable card number AND a detected set name are eligible.
Listings with grading prefixes (PSA, BGS, SGC, CGC) or "signed/auto" markers are skipped.
Each proposed cluster shows the listings — you pick which one is parent, check the box to include, then click Queue Selected.
Queueing pushes to the same approval queue used elsewhere — nothing combines on eBay until you click Push.
No scan run yet
Click "Scan Active Listings" to find combine candidates among your existing eBay inventory.
Orders
Every sale, on every platform — one page
All orders
TCGplayer orders
Orders
Every sale in one place — eBay and everywhere else
Each row is an archived combine whose children were never absorbed into an active parent. For each row you can: Absorb — splice this archived combine's children into a selected active combine (recommended when you find the right target). Un-archive — restore as a standalone active combine (use if the eBay listing for this SKU still exists and just got incorrectly archived). Dismiss — hide from view this session only (no DB write). Use for rows you've decided to leave alone.
Every absorb / un-archive is logged to combine_recovery_audit; click Undo Last to reverse the most recent action.
—
Reset
Not loaded yet
Click Refresh to load archived combines and compute candidate matches.
Box-listing mode is on. Combining is disabled — each box is its own listing (one box = one card = one quantity, never merged). The combine records below are read-only history.
Combine & Fix Duplicates
Merge duplicate listings of the same card into one — Leumas tracks which box each copy lives in.
Combine Flow
New Exact — same-title duplicates, safe to approve. Similar — near-matches to review. Approve the ones you want, then Push to eBay — the kept listing's quantity goes up and the extras end.
Already listed the same card more than once? Click Consolidate Duplicate Listings (top of this page) — it finds every duplicate across your live listings and merges each into one.
Existing (0)
New Exact (0)
Similar — Review (0)
Queue (0)
New Imports (0)
Manual Combine
Denied (0)
Fix Duplicates 0
Lot Backfill (0)
Combined Groups — 0 parent SKUs
Duplicate Listings — combine-aware (admin test)
Finds cards listed more than once across all your active listings — including combine parents/children, which the New Exact list below can't see. Keeps the combine parent (or highest-qty listing), sums quantities into it, ends the rest (each recorded as a combine child). Dry-run first; runs in small batches.
Reconcile inventory from this import
Treats the import you just staged in New Imports as the source of truth: sets your on-hand quantity for each card to the imported amount — raising under-counts and draining over-counts. Re-importing an unchanged pile nets zero. Shows a dry-run preview first; Leumas updates first (reversible backup + ledger), then your eBay listings are revised/ended to match.
Exact Duplicate Titles — 0 pending
Parent SKU + Title
Child SKU + Title
New Qty
Lot
Action
Similar Titles — Manual Review — 0 pending · —
Existing Parent
New Listing
Match Score
Lot
Action
Approval Queue — 0 waiting to push
These combines have been approved and will push to eBay on the next Push. If a combine
fails (parent delisted, eBay rejection, etc.) it stays in the queue and re-fails on retry.
Use to remove a single stuck approval without wiping the whole queue, or to point
it at a different parent SKU when the original parent has been absorbed elsewhere.
Parent SKU
Child SKU
Title
Action
Pre-Combine Groups — 0 duplicate set${'\u00A0'}(list once, combine in-place)
Title
Copies
Parent SKU
Child SKUs
Lot
New Imports — Unmatched Cards — 0 pending
SKU
Title
Price
Qty
Lot
Status
Action
Pick a lot to tag listings as they're created
Manual Combine — Search and combine any two listings
PARENT SKU (keep this listing)
CHILD SKU (merge into parent)
Select a parent and child SKU above
Denied Combines — these will never be re-suggested
SKU A
SKU B
Action
Assign cards to lots — …
Match the photo, pick a lot, Assign. Skip just hides a card from this list (nothing is written — bring them back with Review skipped). Every assign is logged in the Audit Trail below and revertible.
Lot Backfill — what this does
Backfills lot_id across three tables in one shot per rule:
combines.child_lot_map · inventory.lot_id · orders.lot_id.
Order sales pick up the lot via assigned_child_sku chain, so the Lots tab P/L attributes correctly going forward.
Safety: the engine never overwrites an existing lot value — only fills nulls / empty map keys. Every write is logged to lot_backfill_audit under one batch_id. Revert any batch with one click.
SKU convention: new lots use SKUs starting with "Box ". Anything else is legacy → assignable to lot old via the one-click below.
Quick Actions
Phase A — Auto-pass
For every unmapped combine child, fill from existing data: (a) orders.assigned_child_sku → orders.lot_id pair, then (b) live ST.inv.lot_id where the child sku still exists in inventory. Free wins, no patterns required.
Click "Preview" to scan…
Non-Box → Lot 'old'
Pattern ^(?!Box ).+ → lot old. Sweeps every SKU not prefixed with "Box " (B1-/B2- shorthand, COMBINED-, SV/SWSH set SKUs, CDP-, etc.) into the legacy bucket. Single batch, fully revertable.
Click "Preview" to scan…
SKU Rule Engine — 0 rules
Type a regex pattern + pick a lot. Live match preview before commit. Each Apply runs across all three tables under one batch_id. Stored rules persist between sessions — re-running an already-applied rule is a no-op for rows already tagged.
Match preview will appear here
Pattern
Lot
Last Applied
Writes
Action
SKU Bucket Browser — 0 buckets unmapped
Buckets are auto-extracted from currently-unmapped SKUs across combines + inventory + orders. Click a bucket's Apply button to create a rule for that prefix and run it immediately. Buckets only show "Box "-prefixed SKUs — use the Non-Box one-click above for legacy formats.
Bucket
Inv
Children
Orders
Total
Assign to lot
Action
Audit Log — 0 batches
Showing most recent ~1000 rows of audit history (PostgREST cap). Each row = one Apply click. Revert undoes exactly that batch's writes (clears the lot_id back to null wherever this batch had filled it). Manual edits made after a batch are preserved — revert only touches values this batch wrote.
When
Source / Pattern
Lot
Writes
Status
Action
Pick List
Orders to pull and ship — check each card off as you box it
📦 Tell the pull sheet how your SKUs group into bins/shelves/boxes — so it walks storage in your order.
Pending Orders
Order
Item
Pull SKU
Buyer
Date (PST)
Price
Pull Sheet Grouping
How your pull sheet groups your SKUs into bins / shelves / boxes
Examples: ^([A-Za-z]+) groups by leading letters · ^([^-]+)- groups by everything before the first dash
Live preview — your real SKUs
Card Lots
A lot is one batch of cards you bought — track what you paid and what it has earned back
Your Lots
Monthly Report
Month-by-month profit from selling — investment purchases are tracked separately on the Master Dashboard
All Months Summary — Operations P&L
Month
Expenses
Investment
Sales
Earnings
Profit
MoM
Margin
Orders
Units
Listed $
Sell-Thru
Multi-Card%
Expense Ledger
Business expenses · all channels
Recurring Costs Auto-added to the ledger each month/year
Item
Type
Cost
Frequency
Since
Expenses
Date
Item
Type
Cost
Filtered Total: $0.00
Investments
Singles & Sealed · by year
Combined — Singles + Sealed
Singles
Sealed Product
Investment P/L by Year
Year
Type
Invested
Sales
Earnings
Unsold Value
P/L
ROI
Singles
Individual card investments
Singles
Card
Purchased
Paid
Copies
MKT
Value Now
If-Sold Gain
Sold Date
Sales
Earnings
P/L
Status
Actions
Sealed Product
Sealed product investments
Sealed Items
Item
Copies
Invested
MKT
Value Now
If-Sold Gain
Sold
Sales
Earnings
P/L
Status
Actions
CARD SEARCH
Search by card name, set, SKU — inventory + orders + combine groups
Start typing to search
Results across inventory, orders, and combine groups
Widget Lab
Build your own pages from widgets — Orders, Pick List, KPIs, Inventory on one grid. Saved pages appear under "My Pages".
Scan & Identify
Upload card images — we match them automatically
1 Configure2 Upload3 Review
Setup
Saved title / description / images / policies — edit via Configurations
Catalog we match your scans against
Listing defaults
Default for every card (editable per card later)
Default starting price
Auto-increments if it ends in a number
Scheduling (optional — stagger listings)
Start time (blank = now)
All listings go live immediately.
Database: English Pokémon
Front only — one image per card
Store category
2nd category
Click to upload or drag & drop files or a folder
Up to 500 cards per batch
CSV with a PicURL / image-URL column (eBay exports work) — photos are fetched server-side into a new batch.
Front + Back pairs by filename (name-front.jpg / name-back.jpg). Stock = catalog image on the listing.
Review & list
Upload cards to begin.
Scan Configuration
Title format, description, images, platform policies & categories
Configuration profile
Profile
Name
Set as default
Title generator
Capitalize Each Word Abbreviate Condition Abbreviate Rarity Use NM/M wording
Variables — click to add to the title; AA forces that variable uppercase
Structure — drag to reorder (or use ); × to remove
Preview
Description & images
Description template (sent to eBay — variables like {title}{set_name}{card_number} are filled per card)Extra images (up to 4 — added to every listing after the card photo)
Platform & business policies
Platform
Payment policy
Shipping policy
Return policy
Store categories — each maps to its own business policies
Category name
eBay category ID (optional)
Map a store category to its payment / shipping / return policies. When a card is filed under a category, those policies apply automatically.
Listing store categories — eBay allows up to 2 per listing
Primary
Secondary (optional)
Cropping — zoom regions shown on every card during review
Pick a card game and draw the regions you want to inspect on every card of it — edges, centering, the collector number, the holo pattern. Each region becomes a zoom tile on the review screen, beside your scan. Each game keeps its own set. Display only — cropping never changes matching, pricing, or your listing photos.
Crop template
Drag on the card to draw a region · click a region to select · drag inside it to move · drag a corner to resize. Regions are stored as a percentage of the card, so they land in the same place on every scan.
No reference image yet — scan at least one card of this game (or this game has no catalog image), then come back and the editor will draw on your own scan.
Regions
Scan Batches
Drop big batches, work the matching & pricing as you have time
Your batches
Loading…
Not-found report — every card the matcher couldn't identify, with the likely cause
Loading…
Match Accuracy
Auto-match accuracy & manual corrections by TCG — all tenants (admin)
Accuracy by TCG
Loading…
Inconsistency reports (beta)
Loading…
Consolidate duplicate listings
Find every card you've listed more than once and merge each into a single listing — keep one (the highest-quantity, or your combine parent), bump its quantity, and end the rest on eBay. Same card + same printing only; graded slabs and different printings are never merged. This is a dry run — nothing fires until you review and run a batch.
Fix / Replace match
YOUR SCAN
CURRENT MATCH
Suggestions — pick a different card
Auto-advance
Lock set
Combine
Combine duplicates now so inventory gets one clean listing per card. Children's SKUs are kept as combine children; quantities roll into the parent.
Bulk list to eBay (CSV)
Add cards you sell elsewhere
We compare what you sell on ManaPool or TCGplayer with what's already in Leumas. Nothing changes until you choose what to do with each card.
Import data
Pick a source, then drop or choose your CSV.
Assign imported cards to a lotOptional. Every card in this import drops into the chosen lot, so combines built right away inherit it. A saved SKU→lot rule still wins.
Import options
Auto-combine exact-title matches — route identical-title cards to New Exact. Off = keep in New Imports for manual combining.Auto-list imports to eBay — list imported cards automatically (already-listed skipped). Off = land unlisted; list with +eBay.Require a catalog match before listing — a card can't be listed until it's matched (or marked “no catalog match”). Keeps every live listing identity-clean so counts reconcile reliably. Off = list anything.Split comma-separated User SKUs (CardUploader migrate) — a cell like E1695,E1696 imports as two child SKUs. Off = comma kept as part of the SKU.
Recently imported
Before you sync — beta risk acknowledgment
Please watch this short video, then confirm you understand the risks of using a beta product.
Leumas Live is a beta product. Syncing, listing, and inventory actions interact with your live eBay and TCGplayer accounts and carry real risk — including incorrect listings, quantity changes, and ended listings. By continuing you accept responsibility for these actions and agree to review your accounts after each sync.
I have watched this video and understand the risks of using a beta product.
Confirm you've read the Help guides
Please review the Help & Getting Started guides — short walkthroughs of listing, combining, syncing, and pricing — then confirm below. Required before you finish setup.
I have read the Help & Getting Started guides and understand how to use Leumas Live.
Buy Leumas a Coffee
100% optional — it keeps the lights on. Thank you! 💛
Amount
Custom amount
eBay Tools
Promoted Listings ads and markdown sales — you review every change before it goes live.
eBay Ads
Discounts & Offers
Customize
Make it yours — brand, colors, text size. Live preview; nothing changes for anyone else.
Sidebar & toolbar
Choose which features show in your sidebar and their tabs — add any feature to any section, reorder, or hide what you don't use.
Brand
Your name + logo replace the in-app wordmark. (The browser-tab name stays "Leumas Live".)
Brand name
Logo (PNG/JPG/WebP, ≤2 MB)
Colors & Text
Brand-accent, sidebar, and background. (Profit/loss reds & greens stay fixed so P&L always reads right.)
Primary / accent
Highlight
Sidebar
Background
Font
Text size
Default landing page (after login)
Changes preview live as you edit. Save makes them stick across devices.
Labels
Rename the sidebar sections to match how you work. Blank = the default name.
Feature Store
Turn optional features on or off for your account.
Manual Listing
Add an item to inventory — eBay-ready (photos, policies, description). Added to inventory, not auto-listed.
Add Item to Inventory
Sealed product, sleeves, accessories, or any item not from CardUploader.
Title *
SKU (auto if blank)
Category
Quantity *
Price ($) *
Cost Paid ($)
Assign to Lot
Condition
Notes
Description (eBay)
Photo
Click to add a photo
Add this photo + title to my internal catalog
eBay listing details
Only needed if you will list this on eBay. Policies are pre-filled from your saved eBay profile — change them here to override for this item only. Nothing is sent to eBay now; the card is added to inventory and you list it when you are ready.
eBay category ID — required before this can be listed on eBay
Trading card singles are 183454. Sealed product, supplies and sports cards use their own eBay categories.
Shipping policy
Payment policy
Return policy
Weight (lb)
Weight (oz)
Length (in)
Width (in)
Depth (in)
Recently Added (Manual)
No manual entries yet
Import Data
Bring your cards and sales in from spreadsheet files — eBay, CardUploader, TCGplayer, and more
CardUploader Export
Export from carduploader.com. Cards added to inventory. Assign lot after import. Multiple files supported — drop or pick several at once.
Raw Cards
Click or drop raw CSV(s)
Graded Slabs
Click or drop slab CSV(s)
Captures grader, grade & cert #. Excluded from combines.
Reads: *TitleCustomLabel*StartPrice*Quantity · slabs also read grade + Certification Number
Card Dealer Pro Export
Export from carddealerpro.com (eBay Bulk Upload format). Cards added to inventory. Multiple files supported — same parser as CardUploader with the CDP metadata prefix stripped.
Click or drop CSV(s)
Reads: *TitleCustomLabel*StartPrice*Quantity · skips Info,Version=... line
TCG Automate Export
Export from TCG Automate (eBay Bulk Upload format). Cards added to inventory. Multiple files supported — same parser as CardUploader.
Click or drop CSV(s)
Reads: *TitleCustomLabel*StartPrice*Quantity
TCGplayer Inventory → eBay
Upload your TCGplayer MyPricing export to cross-list your TCGplayer stock to eBay. Cards bind automatically (no matcher), pull a product image, and price with your eBay markup. Staged in New Imports — review before listing. One file.
Switching from CardUploader (or a similar platform)? Upload your full inventory export. Each Catalog SKU is matched to its eBay listing as the combine parent; User SKUs become child SKUs (not on eBay) and appear in the Existing tab. Quantities, prices & TCGplayer bindings from this file become the source of truth. One file.
Click or drop your inventory CSV
Reads: Catalog SKUUser SKUTitleTCGplayer SKUPriceQty · no eBay listings revised/ended
Restore SKU mapping
Does your pull sheet show codes like CS-XXXXXX instead of your own SKUs? Upload the same CardUploader inventory export here. This restores only which of your SKUs each card belongs to, so pull sheets name the right box. It does not change quantities, prices, listings or anything on eBay, and it will not add cards back into your inventory. Safe to run more than once.
Click or drop your inventory CSV
Reads: Catalog SKU (or Custom Label) + User SKU · columns are detected and shown before anything is saved · no inventory, listing or eBay changes
Historical Sales (any platform)
Import past sales from eBay, TCGplayer, Cash, Discord, Mercari, or anywhere else. Download CSV template
Click or drop Sales CSV
Cols: DatePlatformItem NameQuantitySold PriceFeesNetBuyerSKULotCost BasisMarketplace Order IDItem IDItem URL
Import past TCGplayer orders for your records. This records order history only — it does not change inventory. Re-importing is safe (deduped by order #).
Click or drop TCGplayer Orders CSV
Reads: Order #DateProductSetConditionQuantityPriceBuyer
Recent Imports (last 10)
Time
Type
Rows
Status
Files
Loading...
Import Log
Time
Type
Records
Status
Notes
No imports yet
API Status
Connected services · sync status
eBay Developer API
Listings sync, order fulfillment, finances, combine push · per-tenant OAuth
Connected
eBay Sync Controls
Last sync: Never — click Test Connection first
TCGPlayer API
Real-time card market prices for Singles & Sealed investments
Planned
️
Supabase Database
leumas-live · cxyjpfdpmvcfjpqbaigp · East US
Connected
Domain — inventory.leumascc.com
DNS setup pending · will point here after Netlify deploy
DNS Pending
Domain — leumascardcraze.com
Brand domain · parked for future storefront
Parked
When eBay API connects — what happens automatically:
→Your eBay listings sync to database
→New orders appear in real time
→Pick list activates for every order
→eBay fees tracked exactly via Finances API
→Combine push: parent qty updated on eBay
→April 30–today orders backfilled automatically
→Parent hits zero → unpulled children flagged
→Weekly eBay store fee auto-import to ledger
Diagnostics
Read-only audits across inventory and combines data. Run any anytime.
Note: All buttons here are READ-ONLY. They scan local state and report findings — no database writes, no eBay calls. Cleanup scripts (which DO write) remain console-paste-only by design.
Fire every read-only card in sequence (~30s end-to-end). Each card's verdict renders inline; scroll to review.
Connect eBay (Multi-Tenant OAuth) PHASE 3
Connects your eBay account via OAuth. Required for the multi-tenant sync path. After connect, your encrypted refresh_token lands in ebay_credentials. Phase 3-part-2 will refactor ebay-proxy to use this per-user creds path instead of env-var creds. Until then, your current ebay-proxy v41 stays the active path.
Account Settings PHASE 3-P2
Per-tenant return address (printed top-left on every 4×6 TCG shipping label) + eBay proxy version flag (controls whether eBay calls use v1 env-var creds or v2 per-user OAuth creds). Click Load to fetch your current values.
eBay AddItem requires a city + ZIP for every listing. This is your default ship-from. CSV imports can override per-row.
City
State
ZIP
Country
eBay Business Policies (listings)
Enter the exact policy names from your eBay account (Account → Business policies). Required to cross-list TCGplayer imports to eBay.
Shipping policy
Payment policy
Return policy
eBay Proxy Version
Current path:v1 Connected via OAuth:— Connected seller:— Token expires:—
All eBay calls use per-user OAuth (v2). The legacy shared-creds proxy (v1) is retired. Connect eBay is required before eBay features work.
Quick Test
Webhook Subscription
Calls SetNotificationPreferences on your OAuth token. Routes to v1 or v2 based on the flag above. Required after Connect eBay for events to flow.
Admin-only operational audits below. New users won't see this block.
Self-Loop Audit
Scans combines for any parent_sku that appears in its own child_skus, and pending approvals for parentSku===childSku. Verifies the v2.9.88 chokepoint is holding the line. Expected: 0 findings.
Year-Boundary Patterns Audit
Hard deadline: Dec 31, 2026. Scans local state for any field/value that still references "2026" — `totals2026`, `months2026`, `ord2026`, etc. Documents the pattern surface for the eventual refactor session. Past Dec 31 these become silent misclassification bugs.
Combine Integrity Audit
Scans combines table for structural anomalies: duplicate parent_skus (two combine rows pointing to the same parent), empty child_skus arrays (combine with no children), non-string elements in child_skus, and parent_skus with no matching inv row (orphan parents). Expected: 0 across all four categories.
Combine Qty Integrity
For every active combine where all kids have an inv row (no phantoms), compares parent inventory.quantity against the sum of child quantities. Flags mismatches. Phantom-containing combines are skipped — you can't honestly sum kids that no longer exist locally. Same sweep also available on Combine Recovery page; mirrored here for general diagnostics use.
eBay Webhook Subscription
Registers your eBay account to push real-time notifications to the ebay-webhook Edge Function — sales, listing created/revised/closed, auction checkout. Without this, the app only learns of new sales via the periodic syncOrders poll; with it, sales appear within seconds via Supabase Realtime. One-time setup; idempotent if you click again. Per ef-security-audit notes: never been called → 0 events received in DB ever.
Queries tcg_eligible_inventory for drift between local and TCGplayer. Shows decrement candidates (sold on eBay since last push), increment candidates (restocked / new combine pulls), ghost listings (cards on TCG you don't have anymore), and total cards diverged. If decrements or ghosts are non-zero, the next CSV export will reconcile them.
TCG Projection Refresh
Reloads tcg_orders + tcg_order_lines and re-projects them into ST.ord as synthetic off-eBay rows so dashboards reflect any commits since boot AND any lot_id changes on the matched inventory. Idempotent — safe to click repeatedly. Cancelled/refunded/voided parents are excluded from the projection.
TCG Catalog Freshness
Queries tcg_catalog for the newest updated_at across all rows, plus per-game freshness, plus running count of tcg_order_lines with match_status='no_match'. Color bands: ≤7d green / 8-30d yellow / >30d red. New TCG sets release roughly monthly — refresh the catalog if it's been a while, especially before high-volume sales.
TCG Reconciliation
Shows the count of inventory rows where tcg_listed_qty > 0 (what local thinks is live on TCG), sum of cards listed, pending drift to reconcile on next CSV push, and last successful export from tcg_sync_log. Mentally diff the "Cards on TCG" number against your TCG seller dashboard's count — if they disagree materially, you have ghost listings TCG didn't reconcile.
Lot Attribution Coverage
Snapshot of Lot Backfill progress — how many combines.child_lot_map entries are populated, how many inventory rows have a lot_id, how many orders are attributed. Click Check to compute against current in-memory ST. Mirrors the KPI strip on the Lot Backfill tab; surfaced here so you can monitor progress without leaving Diagnostics.
Webhook Events Delivered
Queries the webhook_events table to confirm the subscription above is actually pushing. Shows total events ever, last 24h count, last event timestamp, and per-event-type breakdown. If you just registered, give eBay a few minutes — they don't backfill, only push events that fire AFTER subscription is active.
Data HealthSKU drift · combine recording · audit batches
Dup-SKU Drift Monitor
Counts SKUs shared by 2+ active inventory rows. Post the 2026-05-25 cleanup (930 rows renamed under batch 8d9c4cbf-…) this should sit at 0. Any drift indicates future imports / manual edits re-introducing duplicates. Re-run after CSV imports to confirm cleanliness.
Combine Recording Health
For every active combine whose parent has a live inv row, compares child_skus.length against parent quantity. Surfaces the 4,047-style backlog from the v2.16.33 audit (68% under-recorded). Companion to Combine Qty Integrity: that one checks sum-of-child-quantities; this one checks count-of-recorded-locations.
Malformed Combine Children
Counts child_skus elements with structural problems: trailing dash (the "Box 11 - M1 -" class from v2.16.31), leading/trailing whitespace, empty strings, non-string types, double-dash. Each becomes a manual fix candidate. Per v2.16.31's note, the app renders these as-is — auto-cleanup is a separate workflow.
Historical-Overlap SKU Tracker
Counts the SKU collision categories intentionally skipped in the 2026-05-25 dup-SKU cleanup: 1 active + N historical (functionally fine — single live SKU) and all-historical (audit noise only). Plus surfaces any new active-vs-active collisions that might appear later. Lets you decide later if/when to clean up historical overlap.
Recent Audit Batches
Merges the most recent batches across three audit tables: lot_backfill_audit, tcg_collision_cleanup_audit, dup_sku_rename_audit. Shows table, batch_id (first 8 chars), row count, reverted count, source/reason. Surfaces dup_sku_rename_audit which has no other UI today.
ST Length Sanity
For every boot-loaded ST array (ST.lots, ST.ord, ST.inv, ST.ebayTx, etc.), compares in-memory length against DB COUNT(*). Smoking gun = ST length stuck at 1000 while DB has more (PostgREST default cap signature). Caught the v2.16.52 silent truncation bugs; will catch the next one too. ST.ord + ST.inv legitimately exceed DB count (synthetics + carduploader staging).
Multi-Listed Cards Scanner
Scans inventory for (tcgplayer_id, condition) groups with 2+ active rows. This was the trigger for the 2026-05-25 Umbreon over-sell — pre-v2.16.14 the CSV dedupe summed wrong on these and inflated TCG state. v2.16.14 fixed the math, but multi-listing remains operationally fragile (hard to allocate when TCG sells one). Run before any TCG CSV push; consolidate flagged groups via the Combine Listings page first.
TCG State Readback (drift detector)
Compares TCG's actual listed inventory against our local tcg_listed_qty model. Upload a fresh TCGplayer MyPricing CSV export (Pricing → Generate Pricing Custom Export → download). We parse the Total Quantity column, aggregate by (tcgplayer_id, condition), and surface every drift bucket. This is the only path to detect TCG state corruption. Run after every kill-switch + push cycle to confirm TCG agrees with us.
Force-Drain CSV: uses TCG's exported Total Quantity per row to compute negative deltas. Drains TCG to 0 even when our local tcg_listed_qty under-counted (e.g., post-kill-switch stragglers from pre-v2.16.14 dedupe drift). Generate, upload to TCG, then re-run Drift Check to verify.
Admin
Cross-tenant operational view · admins only
You don't have admin access. This page is only visible to administrators.
Overview
Tenants
Money
Ops
Logs
Trello boardsOpen cards per board
Loading…
Inventory Health — cross-tenant drift & integrity
The nightly sweep that watches every tenant's inventory. Grouped by tenant, worst problems first. Click a tenant to expand; each finding explains what it means and what to do. Newest run shown.
Per-Tenant Breakdown
Email
Admin
eBay
Seller ID
Tier
Effective $
Calls 24h
Calls Total
Listings
Combines
Orders
Revenue
Last Sign In
Last eBay Use
Action
Image / training consent
Tenants who agreed (via the training-consent prompt) to let their scans and listing photos be used to improve the card matcher. Only opted-in tenants' images may be used for training.
Tenant
Email
Consent
Decided
Scans
Photos
Tenant Data Reset — clear inventory, keep the sales historyPreview first · executing needs the tenant's exact email
Gives a tenant a clean inventory slate so they can re-import or re-sync from scratch. It is not an account deletion and it does not erase anything they've sold.
This DELETES
Their inventory rows, their listings mirror, and their combine breadcrumbs. It also clears their first-sync marker, so their next "Sync from eBay" rebuilds inventory from scratch. A backup table is written for each of the three before anything is deleted.
This KEEPS
Every order and sale they've ever made, their eBay transactions and fees, the inventory ledger (intake and outflow), their profile and settings, their eBay connection, their subscription, and their catalog-SKU map. Their money history is untouched.
To remove an account entirely — the login and every last row including their sales — use the tenant's Edit button above, not this card.
Tenant
Buy-Back Rates — Sell to LeumasPick a TCG tab → set price, toggle ON/OFF, reorder. Shown on leumascc.com. Prices start blank.
Subscription TiersEdit price + calls/day inline; saves on blur
When a tenant types a card name to match it and the database has no result, it's logged here so you can add the missing card. Ranked by how often it's been searched.
Beta Grandfather (50% off effective price for life)
Catalog Contributor (may submit cards to the catalog queue)
Box = Listing mode (box-SKU seller — never combine; each box is its own listing)
Approve non-eBay store (skip the eBay-connection requirement)
Billing State (for sales tax)
Marketplace / Region
Sets this tenant's eBay site, currency & default timezone. US is the default; switching to Canada makes their eBay reads, dashboards & financials run in CAD and their local time. Takes effect on their next hard-reload + Sync.
Timezone (financial bucketing)
Pick-List Start Date
Orders sold BEFORE this date won't appear in this tenant's pick list (prevents already-shipped history from flooding it + being mis-picked into combines). Auto-set to their go-live day on first sync. Blank = show the normal last-30-days.
API Calls / Day Override
Custom per-user daily call cap, independent of the tier. Blank = inherit the tier's limit.
Admin Notes
Security
Flags the account so a non-dismissible "set a new password" box appears the next time they log in. Applies immediately — no Save needed.
For a tenant who FORGOT their password (can't log in to change it). Sets a temporary password you give them; they're forced to choose their own on next login. Applies immediately — no Save needed.
Permanently removes the login + every row of this tenant's data. Cannot be undone — asks you to type DELETE. Blocked for admins / yourself.
TCG Catalog
TCGplayer reference data · upload monthly Pricing Custom Export CSVs
Upload one CSV per game (TCGplayer · My Account · Pricing · Generate Pricing Custom Export). Re-uploading replaces existing rows on conflict — safe to refresh anytime.
Matching is now automatic — new inventory binds to the catalog on its own; anything ambiguous waits for a one-click review under Card Matching.
Match to Catalog
Matching now runs automatically — no button to press
Inventory now binds to the TCG catalog automatically. The moment cards land in your inventory (after listing/approval or manual entry) the safe matcher runs on your rows, and a nightly job re-checks everything as catalog data and prices change. Safe, unambiguous matches bind silently; the rare ambiguous card is held for a one-click Confirm / Reject under Card Matching. Nothing here needs your attention unless you want it.
Sync to TCGplayer
Send your prices and quantities to TCGplayer — you preview every change first
Sends every card that's new or has changed to TCGplayer, in the file format TCGplayer expects. Prices — and which cards qualify — come from your Pricing Tool rules. After a push, the next one only sends what changed since.
⬇ Download the Sync extension (.zip)Unzip → chrome://extensions → Developer mode → Load unpacked. Full steps in Help & Guides → "TCGplayer Sync".
Recent Sync History
TCG Orders
Bring in your TCGplayer orders and take the sold cards out of your inventory
PREVIEW FIRST, THEN COMMIT. Upload your Shipping CSV + Packing Slips PDF, then click Run Preview Match to see how each order line matches up with your cards. When it looks right, click Commit OK Orders to: (1) record the orders, (2) take the sold cards out of your inventory, (3) update the matching eBay listings (or end ones that hit zero). Safe to run again — orders already committed are skipped, never double-counted. Only orders marked 'ok' commit; anything marked 'review' or 'hold' waits for your decision.
1. Shipping CSV
No file selected
2. Packing Slips PDF
No file selected
Shipping Queue
TCGplayer orders ready to pack — print labels, mark them shipped
SHIPPING WORKFLOW. After committing TCG orders on the TCG Orders page, they land here as pending. Click 4×6 Label per row to print a pick/pack slip (works on thermal printers — Rollo/Munbyn/DYMO 4XL). Pull the cards using the SKU + LOT chips on the label. Attach the TCG-supplied shipping label and ship. Click Mark Shipped to drop the row from the queue. Filter switches between Pending (default), Shipped (history), and All.
Status:Search:
Card Shows
Take cards to a show, sell on the floor, and square everything up when you're back.
Add Listings
Hide sold
What's New
Roadmap, recent updates, and your feedback.
Roadmap
Recent Adds / Fixes
Suggestions & Issues
Aging Inventory
Active eBay listings by time on market — refresh the stale ones with End & Relist
New price on relist:A relist with a changed price locks that card from the auto-pricer (🔒)
AUTO END & RELIST
Every night, Leumas ends and relists your OLDEST active eBay listings (past your age threshold), optionally
dropping the price — a fresh listing without lifting a finger. Price-adjusted cards are locked from the
auto-pricer (🔒) so the discount sticks; cards already 🔒 locked relist at their current price.
⚠ Before you turn this on: eBay can see repeated end-and-relist churn — heavy use may flag your account
or affect search placement. Each relist starts a NEW listing, so its watchers, views, and sale history are
lost — and it counts against your monthly free-listing (zero insertion fee) allowance; past that, eBay
charges an insertion fee per relist (check your allowance in Seller Hub). This is optional and entirely
your call — it runs only while you leave it on.
Enable nightly auto End & Relist
Relist listings older than (days listed, 30–365)
Price on relist
Max listings per night (1–100)
Skip these from the nightly relist (optional)
Cards with watchers
Cards with sales
"Cards with watchers" uses your last-synced watcher counts — run 👁 Sync watchers on the Aging page to refresh them; a card whose count was never synced is treated as having no watchers.
Recent activity (last 3 nights)
Inventory Audit
Cycle counting — walk your physical inventory on a schedule so every card gets checked at least once per cycle
Audit setup
Audit mode
Game
Touch every card once per
Batches
Detected boxes (from your SKU prefixes) — tick the one(s) to audit right now
Whole-box mode ignores the cycle pacing above — every unit in a ticked box becomes today's batch. The cycle stamps still record, so those units count as checked when their cycle math runs next.
Confirmed / Mismatch only records what you saw — it never changes your inventory count and never touches eBay or TCGplayer. A mismatch is filed below for you to resolve through Inventory or Combine Listings when you're ready.
Record a mismatch
Actual count
Note (optional)
This records the variance only — it does not change your inventory count or touch eBay/TCGplayer. Resolve it through Inventory / Combine Listings when you're ready.
All pages
Pick a page — every card is one tab
Charts
Visual view of the same figures as Monthly / Master / Year Over Year
Monthly Sales · Earnings · Expenses
Cumulative P/L Trend
Social Monetization
Track every monetizable platform — progress toward the threshold, then earnings once you're in.
Cards Out / Sales
Cards out the door + daily sales & earnings across all platforms · Jun 1 – Sep 1, 2026 (owner only)
Money
Everything you sold and everything you kept — one page
Profit
Master
Snapshot
Monthly
Year over year
Historical
Profit
What you actually kept, by platform, after every fee and what the cards cost you
Profit by channel
Channel
Revenue
Fees + Shipping
COGS
True Net
Cost basis
Tax Summary
Your year organized into the lines the IRS tax form (Schedule C) asks for — sole proprietor / single-member LLC
Informational summary — not tax advice. This maps your tracked sales, card/lot purchases and expense ledger to the closest Schedule C lines for the selected year. Numbers come straight from your dashboards and may need adjustment for items the app doesn't track (vehicle/home-office/depreciation, personal-use splits, inventory timing). Always confirm with your tax professional before filing.
Income & Cost of Goods Sold
Schedule C line
Amount
Part II — Expenses
Schedule C line
Fed by
Amount
Line 31 — Net profit (or loss)
Line 1 gross receipts − Line 4 COGS − Line 28 total expenses
Break-Even Calculator
How many sales / how much revenue to hit a target — pre-filled from your data
Inputs
Target amount (e.g. monthly costs / a goal)Average sale valueAverage net margin %
Per-Platform Card Economics — admin only · real revenue, modeled net · where you're at
Real sold prices across the Leumas community, every platform — last 30 days plus all-time. Anonymized, minimum 3 sellers per card. Refreshes hourly.
Bulk Exchange
Move bulk lots member-to-member. Transact out-of-band via PayPal Goods & Services — Leumas is not a party to the sale.
Help & Guides
ADD LOT
Lot #
Date Purchased
Card Type
Source
Card Quantity
Cost Paid ($)
Notes
ASSIGN SKUs TO LOT
Select Lot
Search & Select SKUs
ASSIGN ORDER TO LOT
Assign to Lot
Links sale revenue to selected lot for P/L tracking.
RECORD SALE
Manual sale record. In Leumas Live with eBay API, this will push a real-time quantity update to eBay.
Sale Date *
Quantity Sold *
Sale Price ($) *
Platform
Buyer / Notes
SUGGESTION
What would you like to see added?
REPORT AN ISSUE
Describe the problem
Steps we captured automatically (your recent clicks)
ADD ROADMAP ITEM
Item (high-level, tenant-facing)
ADD UPDATE
Date
Type
What changed (major only)
NEW POLL
Question
Options — one per line (2–6)
Launching a new poll closes the current one (its votes are kept).
COST BREAKDOWN —
Each purchase entry behind the combined Paid figure.
Customize sidebar
Every feature you can see is listed below. Untick to hide one from the sidebar, use the arrows to reorder. Hidden features stay fully functional — their pages are still reachable from hubs and buttons.
TRACK PLATFORM
Your handle / username
Channel ID
UPDATE YOUR NUMBERS
Enter the latest figures from your creator dashboard. These drive your progress bars.
ADD EARNINGS
Period start
Period end
Amount ($)
Model
Source (optional)
Note (optional)
NEW CARD SHOW
Event name
Start date
End date
RECORD SALE
Sale price ($)
Qty sold
Payment method
TRADE
Cards received (you can add several)
Card name
Card #
Value ($)
Cash
Direction
Gives away 1 unit of the card above (its eBay listing is decremented or ended). Each received card becomes a sellable line. Cash received books as card-show income; cash paid books as a New Purchase cost.
PULL IN INVESTMENTS
Liquidating? Pull held investments onto the floor. Selling one books to the investment tab (decrements qty-on-hand) — it does NOT touch the card-show P/L; the "Investment Sold" tile is a visual aid only.
NEW PURCHASE
Title
Card number
Purchase value ($)
Does not touch eBay. Counts as a New Purchase (lowers show P/L + books to your Expense Ledger → monthly/yearly P&L). If it sells, it books to Orders. Export "New Cards" after the show to scan in.
BULK PURCHASE
Category
Rate is per-card (decimal). Total = Count × Rate. Tier abbreviations (C / UC / RH / H / IR…) come later.
Name
Count
Rate
Total
Rows to add
Grand Total: $0.00
SHOW EXPENSE
Label
Amount ($)
Books to your Expense Ledger (tagged to this show) → flows into monthly/yearly P&L.
CONSIGNMENT
Consignor name
Split model
Your commission %
RECORD SALE
Type
Item
Sale Date
Platform
Qty
Sale Price ($)
Earnings After Fees ($)
BIND TO CATALOG
Search TCGplayer catalog (TCGCSV)
Click a result to bind it to every copy of this item and set its market value.
ADD PRODUCT
Search TCGplayer catalog (TCGCSV)
Click a result to match it (sets market value + product id). Then enter what you paid and how many copies you're holding.
Paid ($)
Copies held
Purchase date
MATCH TO CATALOG
Search TCGplayer catalog
Pick the exact card + set + condition — binds this listing's identity.
REMATCH INVENTORY
ADD EXPENSE
Date *
Cost ($) *
Item / Description *
Type
ADD RECURRING COST
Item / Description *
Cost ($) *
Frequency
Type
Start date *
Auto-populates the ledger from the start date forward — monthly on that day-of-month, yearly on that month/day. Months already passed since the start date are filled in too.
EXPENSE TYPES
Add custom categories. Click × to remove unused types.
RETARGET PARENT
Search inventory for new parent SKU
AUTO-MATCH PARENTS
QUEUE HEALTH AUDIT
EDIT LISTING
Title0 / 80
Price
$
Lock this price — exclude from automatic market repricing
List only on
Listing description
Photos
Upload photo
First photo is the gallery image. Removing a photo only applies when you Save — nothing is removed without you.
Store category (primary)Store category (secondary — optional)
Editing specifics replaces the listing's ENTIRE specifics set — all rows below are sent.
Photos — add / remove
Add photo (after existing photos) Add as gallery (first) photo Remove this photo from the selected cards
Upload
BULK FIELDS
Every filled field below is applied to ALL listings. Blank = leave that field unchanged.
eBay policies (name; blank = unchanged)
Package (lb/oz + inches; blank = unchanged)
Best Offer
Store category
Listing description (blank = unchanged; applied to every selected card)
BULK EDIT TITLES
Find:Replace with:
Case sensitive
$ BULK EDIT PRICES
Quick actions (applies to all visible rows, doesn't save until you click Save):
Set all to $·Multiply all by·Decrease all by%·
LIST SELECTED CARDS
EDIT PRICING
Set your password
Your account was created with a temporary password. For security, please choose your own password before continuing. Minimum 10 characters.
Help improve card matching?
Leumas Live can get better at identifying cards — including sports and games with no catalog — by learning from
confirmed matches. If you opt in, we may use your card photos, titles, and the matches you confirm (never your
prices, costs, sales, or any personal or account information) to improve the shared matcher and catalog for everyone.
• It's completely optional — the app works exactly the same either way.
• Only cards you match or correct are used, and only after you opt in.
• Your prices, costs, orders, and account details are never used.
TRACK PLATFORM