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
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 Setup Guide in the sidebar 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.
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 containing a card's market price wins. Each rule lists at a fixed $, a ±% off market, or a ±$ off market — pick with the toggle on the row. 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.
Caps how far a price can move from its current price in one apply — checked last, after every other rule, so nothing can push past it. Blank = no cap.
5 · Custom markup — a flat $ added ON TOP of the final price (the very last step, after rounding)
Adds on top of the computed price. It moves existing listings only when a pricing source is set (bands above, or "Let prices move with the market"); new listings always get it.
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
Existing Duplicates
Listings that are really the same card — merge them so your counts are right.
Existing duplicates
The same card listed more than once. Merging keeps one listing, adds the quantities together, and ends the extras on eBay — nothing runs without your confirmation. If two rows are actually different cards, use Deny to hide the group (or Card Matching if the card is matched wrong).
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.
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 keeps track of which box each copy lives in.
Combine Flow
New Uploads – Exact Matches — 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? Open the Existing Duplicates tab — it finds every duplicate across your live listings so you can merge each into one.
Existing (0)
New Uploads – Exact Matches (0)
Similar — Review (0)
Existing Duplicates 0
New Imports (0)
Queue (0)
Manual Combine
Denied (0)
Lot Backfill (0)
Combined Groups — 0 parent SKUs
Exact title matches — 0 waiting
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
Approved combines waiting for the next Push to eBay. If one gets stuck, remove it here
or point it at a different parent — the rest of the queue is untouched.
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 — pick one listing to keep, then add the ones to merge into it
KEEP THIS LISTING (the parent)
MERGE THESE INTO IT (tick as many as you need)
Pick the listing to keep, then tick the ones to merge into it
Denied Combines — these will never be re-suggested
Card A
Card 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
Fills in missing lot assignments everywhere at once — on combines, inventory rows, and past orders — so the Lots tab attributes profit to the right physical box going forward.
Safety: it only ever fills blanks, never overwrites an existing lot. Every write is logged under one batch and any batch reverts with one click (Audit Trail below).
SKU convention: new lots use SKUs starting with "Box ". Anything else is legacy and can be assigned to the old lot with 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
Item
Category
Type
Date
Cost
Docs
Repeat
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 matching cards — ON: identical cards are combined for you automatically, both on import and when listing to eBay. OFF: nothing is ever combined for you — each card keeps its own row and gets its own eBay listing (so the same card can end up with two listings). You can still combine by hand any time.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
Team Access
Let someone work in your account — you choose exactly what they can see or change
Team access isn't available on this account yet.
eBay Tools
Promoted Listings ads and markdown sales — you review every change before it goes live.
eBay Ads
Discounts & Offers
Business Policies
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.)
Shipping policy
Payment policy
Return policy
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.
eBay listing defaults
Cards brought in from TCGplayer or ManaPool don't come with an eBay description or photos. Set a default here and they list without you touching each one — any card that already has its own description or photos keeps them.
Default description
These fill in per card: {title}{set_name}{number}{rarity}{condition}{game}
Preview (a sample card)
Extra photos on every listing (optional)
Good for a store banner or a grading-scale card. They're added after the card's own photo. Cards with no photo of their own list with their catalog picture automatically.
Applies to eBay listings made from the app and to bulk-list files.
Packing slips & labels
What prints on the packing slip that goes in the buyer's box, and what paper your shipping labels print on. Everything here starts on the settings you have today, so nothing changes until you change it.
Show on the packing slip
Sort the cards
Row size
Message at the bottom
Small print underneath (optional)
Label paper
Turn sideways labels upright automatically
Pick Letter if you print on an ordinary printer and cut the label out — choosing 4×6 there is what makes the label shrink to fit the page.
The sample uses the real printer, so it looks exactly like a buyer's copy.
Shipping rules
Set the weight by how many cards are in the order, and the service by what the order was worth. When you hit Get Rates in Create Envelopes these are applied for you — you can still change any row before you buy.
Use my shipping rules
Weight by card count
Anything more than that
Package type
Orders worth at least
…should ship by
Otherwise pick the cheapest rate
If the service you picked isn't offered for a parcel, that row is left for you to choose rather than quietly dropped to a cheaper one.
Rules only choose — buying postage is always your click.
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 — required before this can be listed on eBay
Card game singles are 183454, card sleeves 183461, sports card singles 261328 — or enter any eBay category number.
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
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 matching cards — ON: identical cards are combined for you automatically, both on import and when listing to eBay. OFF: nothing is ever combined for you — each card keeps its own row and gets its own eBay listing (so the same card can end up with two listings). You can still combine by hand any time.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.
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
Flags
Affiliates
Logs
Affiliates
Name
Email (optional)Link code
Lowercase letters, numbers and dashes, 3–32 characters. Leave the code blank to build one from the name.
Feature flags
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
TCGplayer catalog toolsNeeds the Sync extension and a logged-in TCGplayer seller tab
Top API Consumers (7d)
Email
Calls 7d
Errors
Last Call
Suggestions
When
Tenant
Suggestion
Status · Notes
Issue Reports
When
Tenant
Description
Page · Steps
Status · Notes
Sell to Leumas — Submissions
When
Seller
Type
Email
Payment
Details
Photos
Catalog Gaps — searches with no match
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
How this works
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.
Recent Sync History
TCG Orders
Bring in your TCGplayer orders and take the sold cards out of your inventory
Preview, then commit. Upload your Shipping CSV and Packing Slips PDF, then run the preview to see how each line matched. Nothing changes until you commit — and only orders marked ok commit. Safe to run again; anything already committed is skipped.
1. Shipping CSV
No file selected
2. Packing Slips PDF
No file selected
Shipping
Every order ready to pack — print labels, buy postage, 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
Lock set
Lock condition
Pick the exact card + set + condition — binds this listing's identity.
NEW BATCH
A batch freezes your next orders into numbered slots — slot 1 is tray slot 1, and the numbers
never change while you pack. New orders wait for the next batch.
How many orders
Platform
Takes your oldest unshipped orders first, skipping anything already in an open batch.
If fewer are waiting than you asked for, the batch is created with what's there and says so.
REMATCH INVENTORY
ADD EXPENSE
Date *
Cost ($) *
Item / Description *
Type
Receipt / document (optional)
DOCUMENTS
Drop files here, or paste a screenshot with Ctrl‑V
Photos, PDFs, emails (.eml / .msg), spreadsheets — up to 25 MB each
CATEGORIES & TYPES
Drag a type into a bucket, or pick one from the dropdown on the chip. Any type can sit in any bucket, and moving it re-files every expense that uses it — nothing is rewritten in your ledger. Removing a bucket keeps its types; they return to Uncategorized.
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)
Loading store categories from eBay...
eBay category (the eBay site category this card lists into — required to list)
Any eBay category number works here — the list is just the common ones. Clearing the box removes the category, and the card can't list on eBay until one is set.
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
eBay category (blank = unchanged; applies to UNLISTED cards — required before they can list)
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