A CSV card inventory import reads a spreadsheet you have saved as a text file, matches each row to an exact Magic printing, shows you every change in a dry run, and only then turns the file into counted stock in Oskii.
From spreadsheet to store software
Plenty of shops start with a spreadsheet: one row per card, a quantity beside it, maybe a column for condition and another for foil. It works until a customer asks whether you have the foil, and nobody can open the cases to check. Moving that sheet into store software is mostly a question of getting the rows in without losing what they meant.
Oskii's importer is built for that move. It reads a delimited text file or a plain card list, turns each row into one line of stock, and tells you what it will do before it does it. Nothing changes until you apply the plan.
What file Oskii reads
Oskii reads text. Export the sheet from your spreadsheet program as a .csv file, or as a .txt file, and upload that. A table can be separated by commas, tabs or semicolons, and Oskii works out which from the header line.
An .xlsx or .xls workbook is refused with a plain sentence telling you to export a .csv or .txt file instead. The same goes for PDFs, images, zip archives and web pages. The file has to be UTF-8 text, so if your program offers an encoding choice, pick UTF-8.
A file can have up to 250,000 rows and be up to 48 MB.
- 250,000
- rows in one file
- 48 MB
- largest file
Two shapes of file
A table is a header row followed by one row per card, with a saved column mapping that says which of your columns is which. A card list is plain text with one card per line.
- Table: name and quantity are required. Set code, collector number, finish, condition, language, Scryfall ID and binder are optional columns you can map.
- Card list: a quantity, a card name, then optionally the set in brackets, a collector number and a finish marker, as in 2 Sol Ring (CMM) 410 *F*.
- Column headers are matched by name, ignoring capitals and spaces at the ends, so the order of your columns does not matter.
Example columns for a Magic card CSV
This example describes one row of a spreadsheet. Use the first row as column headers, save the sheet as CSV, and map the headers when you add the import source. Set code and collector number identify the printing; finish describes the copy you counted.
| Name | Quantity | Set code | Collector number | Finish |
|---|---|---|---|---|
| Sol Ring | 2 | CMM | 410 | foil |
How Oskii finds the exact card
A row has to name a printing, not just a card. Oskii looks first for a Scryfall ID in the row. If there is none, it looks for the set code, the collector number and the language together. Either one finds the exact printing in the Scryfall catalog.
A row with only a card name cannot be placed, because Oskii will not guess which of forty Sol Ring printings you meant. It becomes a problem row, and the dry run shows it to you. If your sheet has no set codes or collector numbers, adding those two columns is the most useful thing you can do before you export.
Finish, condition and language
In a table, Oskii reads the words your sheet uses. Normal and nonfoil both mean nonfoil, and foil and etched are their own finishes with their own counts. An empty finish cell is read as nonfoil.
Condition accepts near mint, lightly played, moderately played, heavily played and damaged, or the short forms NM, LP, MP and HP. Language accepts Scryfall's codes and common names such as English, Japanese and German.
An empty condition cell takes the default you set on the source, which starts as near mint, and an empty language cell takes your default language, which starts as English. A word Oskii does not recognise is never guessed at. That row is a problem row, so a stray symbol cannot quietly turn a played card into a near mint one.
Where each card is binned
A location is a binder, box, bin or case. You choose how a source decides it. The binder can be the file name without its extension, so a file called All Commander.csv fills the location All Commander. It can be a column in the sheet, one value per row. Or every row can go to one location you pick.
A name that matches no location puts the cards into Unsorted, so nothing is lost and you can sort them later.
Presets for common exports
If your list already comes out of another tool, you do not have to map columns by hand. Oskii has one-click presets for Cardmarket, Mana Pool, TCGplayer, Moxfield, Archidekt, Deckbox, Dragon Shield and Delver Lens exports. Each one sets the column names and the words that tool uses for condition, finish and language.
Some of those presets were built from public descriptions of the export rather than the tool's own documentation. Oskii marks those as unverified on the source, so you know to read the dry run closely the first time.
ManaBox and CrystalCommerce exports have their own readers, covered on the ManaBox and CrystalCommerce pages.
How to import a CSV card inventory
Start with one small file so you can check the result before you import the rest of your stock. In your spreadsheet, keep a name and a quantity on every row, add a set code and a collector number (or a Scryfall ID) to every row that does not have them, then save or download the sheet as a UTF-8 CSV.
In the Oskii console, set up an import source for this file first: add one and map your column names to Oskii's fields when you create it, check its defaults for condition and language, or choose the preset that matches the tool the list came from. Adding a new source comes with the Pro plan, as the plan section below says.
Open Imports, upload the file and choose the location the cards belong to, or let the file name or a column decide.
Read the dry run. It lists each card that will be added, changed or set to zero, and each problem row with the reason it could not be read.
Apply the plan. Oskii applies the plan you reviewed, checking the counts against your stock as it is at that moment, so a hold placed after the dry run is still kept. Then find a card in inventory and compare its printing, finish, condition and quantity with the file.
What the import changes
A table or card list is a full snapshot of the location it lands in. For every card in that location, Oskii sets the count to what the file says. A card that is in the location in Oskii but missing from the file goes to zero.
Because of that, a file with problem rows needs your explicit confirmation before it applies. A full snapshot is also refused into a location that Oskii counts itself, so two sources of truth never fight over the same bin.
The dry run warns you when an import would take you past your plan's card limit. Starter holds up to 20,000 different cards.
What the import never changes
An import never drops a hold. If a customer has a copy held and your file says you have fewer, Oskii keeps the held copy in stock and flags the card as a discrepancy for you to look at. A sheet that was out of date on Friday cannot cancel a request made on Saturday.
A table import carries counts, finishes, conditions and languages. It does not read a price column, so it does not set what a card costs or sells for. Market prices in Oskii are daily estimates from Scryfall and are labelled that way, and a price you set yourself is labelled Shop price.
What comes with which plan
Uploading a ManaBox file by hand is free on every plan. Adding a new import source, which is the saved column mapping or preset a spreadsheet needs, comes with the Pro plan, along with emailing files in. The sources you already have keep working.
Questions shop owners ask
- How do I move inventory from a spreadsheet to a POS?
- Save the sheet as a CSV, add a set code and a collector number to each row, map the columns once in the Oskii console and upload the file. Oskii shows a dry run, and nothing changes until you apply it. Oskii is not a point of sale, so your register stays as it is.
- Can I import a Google Sheet?
- Download the sheet as a CSV file and upload that. Oskii reads the file, not the live sheet.
- Does Oskii read Excel files?
- No. An .xlsx or .xls file is refused with a message asking for a .csv or .txt export.
- What if my sheet has only card names?
- Those rows become problem rows, because a name does not say which printing you hold. Add a Scryfall ID, or a set code and a collector number, and import again.
- Will an import remove a card a customer is holding?
- No. An import never drops a hold. The held copy stays in stock and the card is flagged for you to review.