Importing Your Inventory from a CSV

Step-by-step guide to importing a spreadsheet of cards into CardNexus — uploads, column mapping, error fixing, and bulk listings.

Last updated 4 days ago

Got a spreadsheet of cards exported from TCGPlayer, Dragon Shield, Manabox, Deckbox — or your own collection tracker? The CSV importer turns it into CardNexus inventory in three guided steps. You can also use it to list cards for sale in bulk by including a price column.

This guide walks through every step, every error message you might see, and how to fix it.

Where to find it

  • From your inventory — click Import from CSV.

  • From a list — open the list, then Add products → CSV.

  • To list cards for sale in one go — use List for sale via CSV from your inventory.

Before you start

You'll need:

  • A .csv file (most spreadsheet apps and trading-card tools can export one).

  • At least one way to identify each card: a vendor ID (Cardmarket / TCGPlayer / Scryfall ID), or the card number, or the card name.

💡 File limits: up to 250 MB and 500 000 rows per upload. Larger files need to be split before importing.

💡 Don't have a CSV yet? On Step 1, click Download template to grab a ready-made file with the right column titles and a couple of example rows for the game you picked. Fill it in and re-upload.

Step 1 — Upload your CSV

  1. Open the importer from one of the entry points above.

  2. Pick the game you're importing for at the top of the page.

  3. Either drag your file onto the upload area or click to browse.

  4. Wait a few seconds — for a typical 1 000-row file this is instant; very large files may take up to a minute.

Errors you might see at this step

What we show you

What it means

How to fix it

**The file is empty**

The file has no content.

Re-export from your source tool.

**The first row doesn't contain any column names**

Your CSV is missing a header row.

Add a header row (e.g. Name, Set, Quantity, Condition…) and re-upload.

**The CSV only contains a header — add at least one data row**

You uploaded just the column titles.

Add at least one card row and re-upload.

**Your file exceeds the 500 000 row limit**

The file is too big.

Split it into smaller files.

**File too large. Maximum size is 250 MB**

Same idea — the file itself is too heavy.

Split into multiple files, or remove unused columns / images before exporting.

**Unsupported file type. Please upload a .csv file**

We only accept .csv.

If you have an Excel file, use File → Save As → CSV and re-upload.

**We couldn't parse the file**

The file is corrupted or uses an unusual encoding.

Open it in a spreadsheet app and save as UTF-8 CSV.

Step 2 — Map the columns

This is where you tell CardNexus what each column in your spreadsheet means. We'll auto-detect most of them (a column called "Qty" will be matched to Quantity, "Set Name" to Expansion, and so on), but you can always change our guesses.

The columns we support

CardNexus column

What it is

Examples in your CSV

**Vendor ID**

A unique product code from another platform

Cardmarket ID, TCGPlayer ID, Scryfall ID…

**Print Number**

The number printed on the card

223/264, EN001, 12a

**Card Name**

The card's name

Black Lotus, Charizard ex

**Variant** *(only on some games)*

Alternate styles

Extended Art, Borderless, Full Art

**Quantity**

How many copies

1, 4, 10

**Expansion**

The set the card belongs to

Alpha, Stellar Crown

**Finish**

Foil treatment

Foil, Non-foil, Reverse Holo, Etched

**Condition**

The card's state

Near Mint, NM, LP, Lightly Played

**Language**

Printed language

English, EN, Japonais, Japanese

**Price** *(only when bulk-listing)*

What you want to sell for

12.50, 12,50 €, $12.50

What if a column isn't in my CSV?

Three options for each CardNexus column:

  • Map a column from your CSV — the normal case.

  • Use a default value instead — apply the same value to every row. Useful when every card you're importing is, say, English and Near Mint.

  • Not in my CSV — skip it entirely. Only works for columns that aren't required (see "Identifiers" below).

Identifiers: how we recognise each card

This is the most important part of mapping. CardNexus needs at least one way to identify each card. Ranked from most to least reliable:

  1. Best — Vendor ID + Vendor ID Type. A Cardmarket / TCGPlayer / Scryfall ID is unique and gives us a perfect match every time. If your CSV has one, use it.

  2. Great — Card Name + Print Number. Very accurate. The print number scopes the match to the right printing.

  3. Good — Print Number only. Works as long as the Expansion column is also correct.

  4. Risky — Card Name only. Many cards share names across sets and printings. We may not be able to tell them apart and you'll see "Multiple matches found" errors on Step 3.

A little banner at the top of the mapping step tells you which level of confidence you're at.

Values we don't recognise (e.g. "M/NM" condition)

If your CSV uses unusual spellings — M/NM, EX-NM, proxy, etched-holo, Anglais — we'll handle the common variants automatically. For anything we don't recognise, you'll be asked to pick the matching CardNexus value once, and we'll apply your choice to every row that had the same raw value. No need to fix them one by one.

When you're done

The footer at the bottom shows you a hint if anything is missing:

  • "Map an identifier to continue" — you haven't mapped any of Vendor ID / Print Number / Card Name.

  • "Map X required fields to continue" — required attributes for this game still aren't mapped or given a default.

  • "Resolve X unmapped values to continue" — some values in your CSV (e.g. an unusual condition spelling) still need you to pick the matching CardNexus value.

Once everything is green, hit Validate & continue.

Step 3 — Check results & fix errors

Now we run every row against the CardNexus catalog. Most rows usually come back as Valid & ready. The rest are grouped by error so you can fix many at once.

You'll see four counters at the top:

  • Total rows — how many rows your file had.

  • Valid & ready — rows we can import as-is.

  • Errors remaining — rows that still need a decision from you.

  • Excluded — rows you chose to skip.

Two ways to fix errors

  • Group by error (default) — collapses identical errors together (e.g. all 47 rows that wrote the set as "Alfa" instead of "Alpha" show up as one group; fix once, fix all). This is the fastest way to clean up a large file.

  • All invalid rows — flat list, row-by-row, if you prefer to handle each one individually.

Toggle between them with the buttons in the toolbar.

The errors you can encounter

Invalid expansion

These expansion names don't match any expansion in our catalog. Pick the closest match from our suggestions.

You wrote "Stellr Crown" — we'll suggest "Stellar Crown". Click the suggestion to fix every row at once. If none of the suggestions look right, your CSV may be referring to a set we don't support yet — exclude those rows for now.

Card not found

We couldn't find these cards in our catalog. Check the name and print number, or remove these rows.

The card name + print number combination doesn't exist for the expansion. Most common causes:

  • Typo in the card name or number.

  • Wrong expansion mapped on the previous step.

  • The card is from a set we don't yet have in our catalog.

You can edit the row manually (a search dialog opens — pick the right card from CardNexus), or exclude it.

Multiple matches found

Several cards match this name. Pick the specific printing you meant.

A card with that name exists in multiple printings (different sets, alternate arts, promos…). We list every printing as a suggestion — pick one. If many rows have the same ambiguity, Fix all rows uses the same choice for the whole group.

Language not available

These cards exist but weren't printed in the requested language. Switch to an available language or exclude the rows.

The card exists but not in the language you wrote. We show every language it was printed in — pick one and we'll update every affected row.

Finish not available

These cards weren't printed in the requested finish. Switch to an available finish or exclude the rows.

Same idea: the card isn't available as "Foil" (for example), but only as Non-foil. Pick a finish that exists, or exclude.

Duplicate entry

Multiple rows are the same card. Click Merge to sum their quantities into a single entry.

You have several rows that describe the exact same card (same printing, language, condition, finish). Merge sums the quantities into one entry — usually what you want. Or keep just the first / last occurrence.

Invalid vendor ID type

These rows use a vendor ID that doesn't apply to this game.

You picked, say, "Cardmarket ID" as the vendor ID type on Step 2, but this game isn't sold on Cardmarket. Go back to Step 2 and pick the right type (or exclude these rows).

Other actions

  • Exclude row — skip just this row.

  • Exclude from import (button at the bottom of a group) — skip every row in the group. Useful for "these 200 cards aren't on CardNexus yet — let's deal with them later".

  • Undo my fix — every fix shows an undo link in case you change your mind.

  • Download error file — once you're partway through, you can download a CSV containing only the invalid rows with their error labels. Handy if you want to fix them in your spreadsheet tool and re-import later.

Selling your cards as you import them

If you opened the importer through List for sale via CSV, two things change:

  1. A Price column becomes required on the mapping step.

  2. Each imported card is created and listed for sale in one go, at the price from the CSV, in your seller-profile currency.

We accept many price formats — 12.50, 12,50, 12,50 €, $12.50 all work. We do not convert currencies; the value goes straight into your active currency.

💡 Heads up: you need a verified seller profile to use List for sale via CSV. If you haven't completed seller verification yet, finish that first — then come back here.

⚠️ Listings are created immediately when the import finishes. If you want to review prices before they go live, import without prices first and use the bulk-list flow from your inventory afterwards.

Finishing up

Click Import valid items when you're ready. A confirmation dialog summarises what's about to happen:

  • How many rows will be imported.

  • How many you chose to exclude.

  • How many invalid rows will be skipped.

  • How many rows we couldn't read at all (missing identifier or quantity).

Confirm and we'll add everything to your inventory. You'll be redirected to your inventory (or your list) once it's done.

FAQ

Will importing duplicate rows that already exist in my inventory? Yes — each row in the CSV adds quantity to your inventory. If you already own three copies of a card and your CSV has two copies of the same printing/language/condition/finish, you'll end up with five. Use the duplicate-merge feature to combine within a single import, but cross-import deduplication is on your side.

Can I re-upload the same file after fixing it? Absolutely. Each upload starts a clean session — your previous mapping and fixes are reset.

My CSV is huge (hundreds of thousands of rows). Will this work? Up to 500 000 rows in a single file, yes. Larger files should be split (your spreadsheet tool can usually do this with a filter or by saving in chunks).

Does CardNexus keep my original CSV file? No. Your file stays in your browser while you map and fix errors, and only the cards you actually import are saved to your account. If you close the tab before finishing, nothing is kept.

I see a "We can't recognise your cards yet" warning. What do I do? You haven't mapped a Vendor ID, Print Number, or Card Name column — we need at least one to identify a card. Go back to Step 2 and map one of those three (a Vendor ID is best when you have one).

My import partially succeeded — some rows landed, some didn't. What now? This is rare and usually means a temporary hiccup on our side. Open your inventory to confirm which rows made it, then re-upload a fresh CSV with just the missing ones. If it keeps happening, contact support.

Can I import a CSV exported from TCGPlayer / Manabox / Dragon Shield directly? Yes — that's the most common use case. Auto-detection should match most of the columns. If a few aren't recognised, just map them manually on Step 2.

What about Cardmarket? Cardmarket doesn't offer a CSV export of your stock through its website — only sellers with API access can pull their stock programmatically. If you've gotten a CSV that way (or built one by hand from your Cardmarket data), the importer will read it just like any other CSV — and mapping the Vendor ID column to Cardmarket ID gives us the most precise match.