👤 Guest Mode — Export disabled  |  Expires in 24:00:00

🏷️ Label Generator

➕ Create Custom Barcode
📋 Generate from inventory
Check items above to select which labels to print.
Use print dialog → "Save as PDF" or your label printer.

🔍 QR / Barcode Lookup

Scan a TCG IMS label or any product barcode to see your inventory data.
Category
Qty in stock
Buy price
Landed cost
MSRP
Market price
Net margin
Inventory Management System
Powered by Fantasy TCG
TCG IMS
TCG Inventory Management System
Powered by Fantasy TCG
FILENAME
Selling Cost & Expense Settings
Product Acquisition Cost
Selling Costs
Scan barcode — known items auto-fill. Enter name once; it's remembered forever.
Unique SKUs
0
Total Units
0
Inventory Cost
Max Profit
Min Profit
Recent Scans
No items scanned yet.
BarcodeNameCategoryQtyCOST/ITEMTOTAL COST
NameCategoryQtyCost
⚙️ Application Settings
☁️ Cloud UPC Database
Auto-fills product names & prices when scanning using Cloud UPC Database
💱 Currency
Display currency for prices and totals
🎨 Theme
Choose the app appearance
📊 Price Column Display
Choose which price columns appear in the Inventory and Report tabs.
MSRP
Manufacturer suggested retail price from database
Market Price
Current market value from database
Suggested Sell Price
Calculated from your target profit %
Custom % of Market
Show a price column at a custom % of market price (e.g. 110% = 10% above market)
%
🎯 Target Net Profit
Target Net Profit %
Used to calculate suggested sell price. Shows % above/below market price.
%
Profit calculation method
How the target % is applied when calculating the suggested sell price.
📂 Category Management
🏪 Vendor & Show Settings
Vendors Dashboard
Show the Vendors tab for convention & show expense tracking
⛽ Gas Type
Used to calculate fuel costs for shows & conventions
🚗 Vehicle MPG
Miles per gallon for gas cost estimates (default: 25)
📋 Release Notes
v1.0 June 2026
Initial Release
📖 User Guide
📷 1. Scanning Barcodes ↑ top
The Scan tab is the primary way to add items to inventory. You can use your device camera, a USB/Bluetooth barcode scanner, or type a barcode manually. When a barcode is recognised, product name, MSRP, and market price are fetched automatically from the cloud database.
ControlWhat it does
📷 Open Camera / Stop CameraToggles the live camera barcode scanner. Works on phone and desktop. Point the camera at any UPC/EAN barcode and hold steady — scan triggers automatically. Uses the rear-facing camera on mobile.
Barcode fieldType or paste a barcode manually and press Enter to trigger a lookup. Also receives input from a USB or Bluetooth barcode scanner connected to your device — just focus the field and scan.
Item NameAuto-filled from the cloud database if the barcode is found. If not found, type the product name. Once entered for a barcode, the name is remembered permanently for that barcode.
Buy Cost (WS)Your wholesale / buy price per unit. Used to calculate landed cost, net margin, and suggested sell price. Can be set via the Buy Cost Prompt when scanning. Rescanning the same barcode at a new price updates the weighted-average cost across all units already in stock.
Retail / Sell PriceOptional. The price you plan to sell at. Used in the net profit preview bar beneath the scan form.
CategoryDropdown populated from your category list (Settings → Categories). Controls which wholesale % is used in the Buy Cost Prompt wholesale calculation.
QtyNumber of units being added this scan. Defaults to 1. If the item already exists in inventory, qty is added and the weighted-average cost is recalculated.
Add / ✓ Add Item buttonSaves the item to inventory. Keyboard shortcut: Enter in any field triggers the lookup; a second Enter or pressing the button confirms.
Buy Price ModeDropdown to auto-fill the buy cost field: Wholesale (% of MSRP), Market, MSRP, Custom % of market, or leave blank for manual entry. The mode can be saved per-barcode (see Buy Cost Prompt).
🔴 Remove ModeToggles scan-to-remove. In remove mode, scanning a barcode decrements qty by 1. If qty would reach 0 you are prompted to remove the item entirely. A red badge appears in the header when active. Disables buy cost prompt automatically. Returns to normal when toggled off.
💡 USB Scanner tip: Click the barcode field once to focus it, then scan — the scanner keystroke stream is captured and the lookup fires on the Enter that most scanners append automatically.
💡 Net Profit bar: The coloured bar below the scan form updates live as you type, showing estimated margin at the current buy cost and sell price, after all your expense settings are applied.
💰 2. Buy Cost Prompt ↑ top
When the camera scans a barcode (or a barcode is entered manually with the prompt enabled), a modal appears letting you choose how to set the buy cost before adding the item. This keeps scanning fast while still capturing accurate cost data.
OptionHow the cost is calculated
WholesaleMSRP × the wholesale % for this item's category (configured in Settings → Categories). E.g. if MSRP is $10 and category wholesale is 55%, cost is set to $5.50.
Market PriceSets cost to the current market value from PriceCharting. Useful when buying at market rate.
MSRPSets cost to the manufacturer suggested retail price. Use when buying sealed product at full MSRP.
Custom % of MarketEnter a percentage (e.g. 80) and cost is set to market × that %. Useful for consistent deal-buying strategies.
Manual EntryType any dollar amount directly. No automatic calculation.
SkipAdds the item with $0.00 buy cost. You can edit the cost later in the Inventory tab.
Prompt controls
ControlDescription
Don't show for this barcodeSuppresses the prompt for this specific barcode on future scans and applies your last-used mode automatically. Saved to browser storage per barcode. Can be cleared in Settings.
Enable buy cost prompt (Settings toggle)Master on/off for the entire prompt. When off, items are added immediately at $0 cost. Lives in Settings → Scanning.
💡 The prompt is automatically re-enabled each time the app loads, even if Remove Mode turned it off last session — so you always start a new session with cost tracking active.
📦 3. Inventory Tab ↑ top
The Inventory tab shows your full stock list. Every column is sortable and most fields are editable inline. The table respects the price columns you've enabled in Settings.
Filter & search controls
ControlDescription
SearchFilters by item name or barcode. Case-insensitive, partial match.
Category filterDropdown — show all items, or only items in a specific category.
SortSort by: Name A→Z / Z→A, Qty high→low / low→high, Buy Cost high→low / low→high, MSRP high, Market Price high, Suggested high, or Net % high for any price column.
Inventory table columns
ColumnDescription
☐ (checkbox)Select rows for bulk actions. Selecting a row prompts to also select all rows with the same barcode. Use Select All to check everything visible.
BarcodeUPC/EAN or custom barcode string. Editable inline.
NameProduct name. Editable inline. Changes also update the barcode database so future scans of the same UPC use the new name.
CategoryDropdown — select from your configured categories. Affects wholesale % used in the Buy Cost Prompt.
QtyUnits in stock. Editable inline. Clicking the field and typing a new value saves on blur.
Buy CostWeighted-average buy price per unit. Editable inline.
Landed CostBuy Cost + all Product Acquisition expenses (inbound shipping, taxes, tariffs, custom costs). Calculated from Settings — not editable directly.
MSRP / MSRP NetManufacturer suggested retail price from the database, and net profit at that price (MSRP − landed cost − selling expenses). Shown when enabled in Settings.
Market / Mkt NetCurrent market value from PriceCharting, and net profit at market price. Shown when enabled in Settings.
Suggested / Sugg NetPrice calculated to hit your Target Net Profit % (Settings). Shown when enabled. Recalculated automatically when your target % or expense settings change.
@X% / NetCustom % of market price column. Header shows the current percentage. Shown when enabled and a % is set in Settings.
✎ (edit icon)Opens the full inline editor for that row — lets you change name, barcode, category, qty, buy cost, and retail price in one place.
Bulk actions (appear after selecting rows)
ActionDescription
Edit PriceSet buy cost and/or retail price for all selected rows at once.
Delete SelectedPermanently removes selected items from inventory. Prompts for confirmation.
Print LabelsOpens the Label Generator with the selected items pre-checked.
💡 Item count shown above the table (e.g. "47 of 312") reflects the current filter. Export always exports the full unfiltered inventory.
📊 4. Reports Tab ↑ top
The Reports tab provides a financial summary of your entire inventory — total value, margin by price column, and a per-item breakdown. Useful for understanding your overall position before a show or a buying run.
SectionDescription
Summary cardsTotal SKUs, total units, total buy cost (inventory investment), and total landed cost across all items.
Price column summariesFor each enabled price column (MSRP, Market, Suggested, Custom %), shows: total revenue if everything sold, total net profit, and average margin %. Also shows the best- and worst-margin scenarios.
Per-item tableSame columns as Inventory. Sorted by the same sort controls. Use to find your highest-margin items or items underwater on cost.
Export (CSV)Downloads a CSV of the report. Includes all enabled price columns and net profit columns.
Export (Excel)Downloads a two-sheet Excel workbook: Sheet 1 is the summary, Sheet 2 is the full per-item inventory with all price columns.
💡 Net profit in reports uses your full expense settings (landed cost + selling costs), so the numbers reflect what you'd actually pocket per item.
💾 5. Sessions ↑ top
Sessions let you group a batch of scans into a named buying event — e.g. "Hobby Con June 2025" or "Alpha Investments buy". While a session is active, every item added to inventory is also logged to the session. Sessions are stored locally and can be exported as CSV.
ControlDescription
💾 Save SessionPrompts for a session name and saves a snapshot of everything scanned since the last save. Items already in inventory from before the session are not included — only new additions during the session window.
Session listShows all saved sessions with name, date, item count, and total buy cost. Click a session to expand it and see the individual items.
Export (CSV)Downloads the session as a CSV with barcode, name, qty, buy cost, and timestamp for each item.
Delete sessionRemoves the session record. Does not affect inventory — items remain in stock.
💡 Start a session before a buying run, scan everything you buy, then save. The session gives you a clean record of that purchase separate from your existing inventory.
🏪 6. Vendor & Show Tracking ↑ top
The Vendors tab lets you log each show or selling event as a record with its own expense breakdown — table cost, mileage/gas, and any additional costs. The app calculates gas cost automatically from your vehicle settings.
Creating / editing a show
FieldDescription
Show DateDate of the event. Used for sorting and display in the dashboard.
Show NameName or description of the event (e.g. "Hobby Con", "Local Game Store Buy"). Defaults to "Unnamed Show" if left blank.
Table Cost ($)The fee paid for your vendor table or booth space.
Miles DrivenRound-trip distance. Copy from Google Maps directions. The app multiplies this by your vehicle's MPG and the current fuel price for your selected fuel type to estimate gas cost.
+ Additional Expense rowsAdd any number of labelled expenses (e.g. "Hotel", "Advertising", "Food"). Each row has a label text field and a dollar amount. Click + Add Expense Row to add more. These appear in the show's expense breakdown and in CSV exports.
Show dashboard cards
Display elementDescription
Show headerShows name, date, table cost, miles driven, and any additional expenses at a glance.
Expense totalTable cost + estimated gas + all additional expenses combined.
Net profit badgeIf the Sales Tracker has been used for this show, displays net profit (revenue − COGS − selling expenses − show expenses). Red = loss, green = profit.
✎ EditRe-opens the show form to change any field. Saves as "Update Show".
✕ DeletePermanently removes the show record including all sales and expense data.
Vehicle settings (used for gas cost)
SettingDescription
MPGYour vehicle's fuel efficiency in miles per gallon. Formula: miles ÷ MPG × price per gallon = estimated gas cost.
Fuel TypeRegular (87), Mid-grade (89), Premium (91/93), or Diesel. The app uses a built-in regional price table keyed to your fuel type to estimate cost per gallon.
💡 Get mileage from Google Maps: enter your home address and the venue, select "Directions", and copy the total miles shown. Enter the round-trip total (there and back).
📦 7. Sales Tracker NEW ↑ top
Each show card has a 📦 Track Sales button that opens a live sales panel. Use it at the show to log every item sold. The panel calculates true net profit using your real landed cost and selling expense settings — not just the raw buy price.
Adding items to sales log
MethodHow to use it
Inventory picker + AddSelect an item from the dropdown (populated from your current inventory) and click + Add. If that item is already in the sales list, its qty is incremented by 1 instead of adding a duplicate. Sell price defaults to the item's retail or market price.
Barcode field + EnterType or paste a barcode and press Enter. If found in inventory, adds the item (or bumps qty). If not found in inventory but exists in the barcode database, adds it with the stored name and price. If completely unknown, adds with the barcode as the name.
📷 Scan buttonOpens the camera scanner inline within the sales panel. Point at any product barcode — lookup and add happen automatically. The camera closes after each successful scan. Same logic as the barcode field for inventory matching.
+ CustomOpens a prompt for item name, sell price, and buy cost. Use for items not in your inventory (e.g. trade-ins, store credit sold, one-off items). Buy cost entered here is used in profit calculation.
Sales row controls
ControlDescription
Qty fieldEditable inline. Changing qty recalculates revenue and profit totals immediately.
@ price fieldThe sell price per unit. Editable inline. Change this if you sold at a different price than the default (e.g. discounted at the show). Updates the summary totals live.
✕ Remove rowRemoves that item from the sales log. Does not affect inventory.
Day-of Additional Expenses
Below the sales list is a section for expenses you incur on the day that weren't in the original show record — lunch, parking, supplies, etc.
FieldDescription
LabelName of the expense (e.g. "Lunch", "Parking", "Bags").
Amount ($)Dollar value of the expense.
+ AddSaves the expense. It appears in the list above and is included in the P&L summary and CSV export.
✕ (remove)Deletes an individual day-of expense entry.
P&L Summary
Line itemHow it's calculated
RevenueSum of (qty × sell price) for all items in the sales log.
Landed COGSSum of (qty × calcTotalProductCost(buy_price)) per item. This applies your full Product Acquisition Cost settings — buy price + inbound shipping + taxes + tariffs + custom acquisition costs.
Selling expensesSum of (qty × calcTotalSellingCost(sell_price)) per item. Applies your Selling Cost settings — outbound shipping + packaging + platform/payment fees.
Show expensesTable cost + estimated gas + additional expenses from the show record.
Day-of expensesAdditional expenses entered in the Sales Tracker panel (only shown if > $0).
Net profitRevenue − Landed COGS − Selling expenses − Show expenses − Day-of expenses.
Action buttons
ButtonDescription
⬇ Export Show ReportDownloads a CSV with two sections: Expenses (table cost, gas, all additional expenses) and Sales (per-item name, qty, sell price, landed cost, selling expense, revenue, and COGS), plus a summary block at the bottom with net profit.
Remove sold from inventoryFor each inventory-linked item in the sales log, decrements qty in your main inventory by the qty sold. Items with remaining stock stay in inventory; items that hit 0 are removed. Custom items (not linked to inventory) are skipped. Prompts for confirmation before running.
⚠️ "Remove sold from inventory" is permanent. Run it once at the end of the show after confirming your sales log is complete.
🏷️ 8. Label Generator ↑ top
Generate printable price tags with barcodes or QR codes for any item in your inventory. Labels print directly from the browser — use a label printer, a standard printer, or save as PDF.
Label settings
SettingOptions / description
Label TypeBarcode — Code 128 barcode with the product UPC beneath. QR Code — TCG IMS QR code encoding the item ID for instant lookup. Both — stacks QR and barcode on the same label.
Price to showPer-item dropdown: Market, MSRP, Suggested, Custom % of market (enter your %), or None. Each item in the list can have a different price mode.
Copies per itemNumber of identical labels to print for each selected item. Useful when tagging multiple copies of the same SKU.
Label size2×1″ (standard), 3×2″, 4×2″, 4×3″, Letter (8.5×11″ sheet — labels arranged in a grid), A4 sheet. Sheet sizes print multiple labels per page.
Item selection
ControlDescription
Search fieldFilter the item checklist by name or barcode.
Item checkboxesCheck items to include in the label batch. Custom items created in this session appear at the top.
Select All / Deselect AllCheck or uncheck all currently visible (filtered) items at once.
Create Custom BarcodeAdd a one-off item with a custom name, barcode, and price. The item is added to inventory and appears in the label checklist. Use for store credit, mystery packs, or any item not in the cloud database.
Printing
ActionDescription
Live previewThe right panel shows a live preview of all selected labels at the chosen size and settings. Updates as you change options.
Print / Save PDFOpens a new browser window with only the labels and triggers the print dialog. Select your label printer, or choose "Save as PDF" to create a file. The browser handles page sizing — the CSS page size matches your selected label.
💡 QR codes printed by TCG IMS encode the item ID. Scanning them in the QR Lookup tab gives you instant access to that item's full record — faster than scanning a product barcode, and works even for custom items.
🔍 9. QR & Barcode Lookup ↑ top
The Lookup tool lets you scan any barcode or TCG IMS QR code and instantly see that item's full inventory record — without navigating to the Inventory tab. Ideal for quickly checking a price or margin at a show or while buying.
ElementDescription
Camera viewLive camera feed. Point at any barcode or QR code. Lookup triggers automatically on detection — no button press needed.
Result cardSlides in after a successful scan with: item name, category, qty in stock, buy cost, landed cost (with all acquisition expenses applied), MSRP, market price, and net margin at market.
Scan nextDismisses the result card and restarts the camera for the next scan without closing the Lookup panel.
Close (✕)Closes the Lookup overlay and stops the camera.
💡 TCG IMS QR codes (from the Label Generator) look up by item ID — more reliable than barcode matching for items with identical UPCs across different conditions or sets.
📤 10. Import / Export ↑ top
Export your inventory at any time and re-import it cleanly. The export format matches the import format exactly, so the file can be edited in Excel and brought back in without issues.
Export
FormatDescription
CSVSingle flat file with all inventory rows. Opens in any spreadsheet app. Column picker lets you choose which columns to include before downloading.
Excel (XLSX)Two-sheet workbook. Sheet 1: Summary (totals, margin by price column). Sheet 2: Full inventory with all enabled price and net columns. Column picker applies to both sheets.
Column picker (export)
ColumnIncluded by default
Barcode, Name, Category, Qty, Buy Cost (WS)✓ Always included
Landed Cost, MSRP, Market Price, SuggestedOptional — check to include
Custom % column, Retail PriceOptional — check to include
Import
DetailDescription
Accepted formatsExcel (.xlsx, .xls) or CSV (.csv). Row 1 must be a header row.
Column name matchingCase-insensitive. Accepted aliases for each field are listed in the Import Format Guide below this section.
Merge behaviourImport adds items — it does not wipe existing inventory. If a barcode already exists in inventory, the import row is skipped. Use the Settings → Import to replace-all if you want to start fresh from a file.
Unknown columnsIgnored. Extra columns in the file will not cause errors.
💡 To bulk-update buy costs: export to CSV, edit the buy_cost column in Excel, save, and re-import. Tip: clear inventory first (Settings → Danger Zone) then import the edited file.
⚙️ 11. Settings ↑ top
Settings persist across sessions (saved to your account via cloud sync, or to browser storage for guest users). All expense settings affect cost calculations app-wide in real time.
Application Settings
SettingDescription
☁️ Cloud UPC DatabaseToggle on/off. When ON, scanning a barcode fetches product name, MSRP, and market price from the TCG IMS cloud database automatically. When OFF, you rely on a manually imported product list or enter names by hand. Turning it off also reveals an Import Product List button.
💱 CurrencySets the currency symbol shown throughout the app. Options: USD ($), EUR (€), GBP (£), CAD ($), AUD ($), JPY (¥). Does not convert values — only changes the display symbol.
🎨 Theme☀️ Light, 🌙 Dark, or ✨ Fantasy TCG. Fantasy applies a special colour palette themed for TCG collectors.
Price Column Display
ToggleDescription
MSRPShows the MSRP and "MSRP Net" columns in Inventory and Reports. MSRP comes from the cloud database.
Market PriceShows Market Price and "Mkt Net" columns. Market price is the current PriceCharting value from the database.
Suggested Sell PriceShows the Suggested and "Sugg Net" columns. Suggested price is calculated to achieve your Target Net Profit % after all expenses.
Custom % of MarketShows an extra price column at X% of market price. Enter the percentage in the adjacent number field (e.g. 110 = 10% above market). The column header updates live.
Target Net Profit
SettingDescription
Target Net Profit %Enter a percentage (e.g. 30). The Suggested Sell Price column is then calculated so that after all your selling and acquisition costs, the net margin on each item equals this target. The scan form net profit bar also uses this target to colour-code margins. Set to 0 to disable the suggested column.
Product Acquisition Cost
These costs are added to every item's buy price to compute its Landed Cost. Each field has a value and a mode ($ flat or % of buy price).
FieldModeDescription
Inbound Shipping$ or %Cost to receive the item — postage, freight, etc. Set as a flat per-item fee or as a % of the buy price.
Taxes Paid (on purchase)% or $Sales tax or VAT you pay when buying. Usually a % (e.g. 8.5).
Tariffs / Import Duties% or $Import duties on goods purchased from overseas. Usually a % of buy price.
+ Add acquisition cost$ or %Add any number of custom product cost line items (e.g. "Grading fee", "Storage"). Each has a label, value, and flat/% mode.
Selling Costs
These costs are deducted from the sell price when calculating net profit. Each field has a value and a mode ($ flat or % of sell price).
FieldModeDescription
Outbound Shipping$ or %Postage or courier cost when selling online. Set as a flat amount if you charge a fixed rate, or as a % if your marketplace rolls it into the sale price.
Packaging$ or %Cost of boxes, bubble mailers, sleeve/toploader materials, etc. per sale.
Platform / Payment Fees% or $Marketplace or payment processor fee (e.g. eBay ~13%, TCGplayer ~10.25%, PayPal ~3%). Usually a % of the sale price.
+ Add selling cost$ or %Add any number of custom selling cost lines (e.g. "Show table spread across items", "Insurance").
Categories
ControlDescription
Category listShows all configured categories. The default categories are Pokémon, Supplies, and Other.
Wholesale % per categoryThe percentage of MSRP used as the buy cost when "Wholesale" is chosen in the Buy Cost Prompt for items in that category. E.g. set Pokémon to 55% — when scanning a Pokémon item and choosing Wholesale, cost = MSRP × 0.55.
Add categoryType a new category name and click Add. It immediately appears in category dropdowns across the app.
Remove category (✕)Deletes the category. Items already assigned to it keep the category name but it won't appear in new dropdowns.
Vehicle Settings (for gas cost)
SettingDescription
MPGYour vehicle's fuel efficiency. Used to convert show mileage into a gas cost estimate.
Fuel TypeRegular (87), Mid-grade (89), Premium (91/93), or Diesel. Sets which regional fuel price is used in the cost formula.
☁️ 12. Cloud Sync & Account ↑ top
Paid accounts sync inventory, vendor shows, categories, and settings to the TCG IMS cloud automatically. Guest access is local-only and expires after 24 hours.
FeatureDescription
Auto-syncEvery change (scan, edit, delete, settings update) is synced to the cloud with an 800ms debounce — changes are batched briefly to avoid excessive requests during rapid scanning.
Sign-in loadOn sign-in, cloud data is fetched and merged with local data. Cloud wins if newer. This means you can clear your browser, switch devices, or open the app on a new phone and your full inventory is restored.
Guest modeGrants 24-hour access with all features. Data is local-only — no cloud backup. Expires after 24 hours; you'll be prompted to sign up to retain your data.
Sign outClears your session token. Local inventory data remains in browser storage until manually cleared. Cloud copy is preserved.
Google Sign-InClick the Google button on the login screen to sign in or register with your Google account. No separate password needed.
Password resetClick "Forgot password?" on the Sign In screen to receive a reset link by email.
💡 If you make changes on two devices simultaneously, the last-write-wins for each data type (inventory, vendors, categories, settings are each synced independently).
📊 Import Format Guide

Excel or CSV with a header row in row 1. Column names are case-insensitive:

Column Also accepted as Example
barcodesku, upc, code, id196214154155
nameproduct, title, description, itemChaos Rising 3-Pack Blister
categorytype, game, catPokemon
qtyquantity, count, stock, units12
buy_pricewholesale, cost, buy, buyprice, purchase14.99
sell_priceretail, price, sell, sellprice24.99

⚠️ Numbers only in price cells — no $ signs. Extra columns are ignored.

✅ Only barcode and name are required. Files exported from this app re-import cleanly.

📬 Support & Contact
Questions, bugs, or feature requests? Reach out anytime.
📧 support@fantasytcg.com
Fantasy TCG — fantasytcg.com
📷 Scan Barcode
Saved
Point camera at barcode…
Help