AegisSwift ← All guides
Home/Guides/Spreadsheets
Migration guide

Moving inventory off spreadsheets

The spreadsheet is the most common inventory system in the world, and it is usually the last one that ever fit the business exactly. Replacing it is not hard — but almost nothing that makes it hard is in the software. It is in the sheet.

The honest summary. The upload takes minutes. The clean-up pass takes an afternoon, and you have to do it whichever system you choose, so it is worth doing before you have committed to one.

1.Why this is different from leaving an ERP

Every other migration guide on this site starts with an export screen: the old system has a schema, and the job is finding the button that hands it over. A spreadsheet has no schema. Nothing has ever stopped you writing ~40 in a quantity cell, using the same code twice, or keeping three items on one row because they arrive together.

That flexibility is the entire reason the sheet lasted this long, and it is the entire reason the move takes a pass of work. Software will not accept ambiguity, so somebody has to resolve it — and the only person who can is whoever maintains the sheet. Not a consultant, and not us. That is the trade, stated plainly.

If you actually do have an ERP underneath the spreadsheets, start from the migration guides instead — the extract is a better starting point than a re-typed sheet.

2.Decide what one row means

Do this before you touch a single cell, because everything else depends on it. Software needs exactly one row per item. Working spreadsheets are very often something else:

Variants are the other grain question. If you stock a shirt in four sizes, four rows with four codes is right; one row saying "S/M/L/XL" cannot be counted, ordered, or scanned.

3.The clean-up pass

Six things, in roughly the order they cost you time if you skip them.

Every row needs a code, and it has to be unique

The code — SKU, part number, whatever you call it — is the identity of the item. It is what an import matches on, which means it is also what makes a second import update your catalogue rather than duplicate it. If your sheet identifies items only by description, you are inventing codes now; short and mnemonic beats clever.

Case will not save you. Matching is case-insensitive, so WIDGET-1 and widget-1 are the same item, not two. Sheets that grew over years are full of that pattern, and it is the single most common reason a row silently does not arrive as its own item.

Quantity and cost have to be numbers

~40, 40 ea, 40?, 40 (check) and an empty cell are all things a spreadsheet is perfectly happy with and an importer is not. Sort each numeric column and look at both ends — the junk collects there. If a quantity is genuinely unknown, decide whether it is zero or whether that item needs counting before go-live; do not import a guess and let it become a fact.

If your columns are formulas, paste them back as values first. You are exporting the answers, not the arithmetic.

Check that your cost column is a cost

This is the one to get right, because it is the one you cannot quietly correct later. AegisSwift costs inventory on a moving average, and the cost you import becomes the opening basis for every margin figure afterwards. What you want is a current average or last purchase cost. What is often sitting in a column labelled "cost" is a retail price, and importing that produces margins that look plausible and are wrong.

If nobody can produce a trustworthy cost for an item, leaving the cost blank deliberately is better than importing a number you do not believe.

Long numbers get destroyed on the way out

Barcodes and UPCs of twelve digits and up will render in scientific notation and lose their tail if the file passes through a default CSV open. Do not double-click a CSV to open it — import it and set those columns to text first, or open it in LibreOffice, which does not do this. Check one long barcode by eye before you import; it takes five seconds and it is not recoverable afterwards.

Trailing spaces

"WIDGET-1 " is not "WIDGET-1". Years of copy-paste leave whitespace on the ends of codes and names, and it turns duplicate detection and vendor matching into near-misses. Trim every text column. It is one formula and it saves a re-import.

Customers and suppliers are a second file

They import separately from items, with a party_type column marking each row customer or vendor. The thing worth knowing in advance: addresses arrive as one free-text field each, billing and shipping. Almost every sheet keeps street, city, state and postcode in separate columns, so join them into a single cell before importing rather than picking one column and losing the rest.

4.Pin the cutover

On-hand quantities are only true at an instant. Export stock on Monday, go live on Friday, and you have imported a week-old picture — after which every discrepancy anyone finds gets blamed on the new software.

Agree a freeze point with everyone who edits the sheet. Then either have the team work on paper between the freeze and go-live and key the gap in, or accept the drift and reconcile with a full count on day one. Both are fine. Drifting silently by a week is not.

A spreadsheet makes this harder than an ERP does in one specific way: there is usually no single moment when the file is authoritative, because two people have copies. Decide which copy is the one being migrated, and say so out loud.

5.What breaks if you skip the pass

None of these announce themselves. That is why they are worth the afternoon.

Skipped What you see instead
Duplicate codes differing only in case Fewer items than rows, with no error — the second row matched the first instead of creating an item.
Text in a quantity column Those rows import at zero on hand, so the items that were hardest to count are the ones that read as out of stock.
Price in the cost column Margins that look right and are not, on every report, until someone reconciles a purchase order against them.
Items imported before suppliers Every item row warns and imports with no supplier link, and reordering has to be rebuilt by hand.
Barcodes through a default CSV open Scanning fails on day one for the items whose barcodes were longest, which reads as a scanner problem.
No agreed freeze point A permanent argument about whether the numbers were wrong when they arrived or went wrong afterwards.

6.What happens on our side

The import wizards take Excel (.xlsx / .xls) or CSV with a header row, one record per row. They auto-match the obvious column headers to fields, show you the mapping with sample values from your own file, and write nothing until you confirm it. There are four of them — items, customers & suppliers, stock counts, and bills of materials — and you run one file at a time.

Order matters: suppliers and customers first, then items.

Import twice on purpose. The first run tells you what your file actually contains; matching is on the item code, so a second run updates rather than duplicates.

If the sheet is too far gone to fix by hand, there is an AI-assisted import that reads files in whatever shape they are in — including several at once, and including PDFs and photographs of printed pages — correlates them, and proposes rows in the right shape. Nothing is written until you review it. It is metered against a per-company budget, so think of it as the tool for the awkward files rather than for the whole catalogue.

One accounting note if you are moving from a sheet that fed your bookkeeping: we cost inventory on a moving average, which will not tie out penny-for-penny with FIFO. It is a method difference rather than an error, and it is worth ten minutes with your accountant before go-live. If your books live in QuickBooks, connect it rather than exporting from it — the QuickBooks Desktop guide covers the Web Connector setup.

7.Questions people ask

How long does it take to move inventory from a spreadsheet into software?

The upload itself is minutes. The clean-up pass is the real work, and for a few hundred items it is usually an afternoon. Expect to import twice — once to see what the file does, and once for real.

Do I have to clean up my spreadsheet before importing it?

Some of it, yes, and it is worth doing deliberately rather than discovering it later. A spreadsheet has never been forced to have one row per item, a unique code on every row, or a quantity that is a number rather than text. Those three are what an import actually requires. If the sheet is too far from that shape to fix by hand, an AI-assisted import can read it as it stands and propose rows for you to review.

Will I lose my inventory history when I leave spreadsheets?

You carry over balances, not history. What you import is an opening position — items, quantities and costs as of your cutover — and the new system starts its own transaction ledger from there. Keep the old workbook as your archive; do not try to replay years of edits into a new system.

What if my inventory is spread across several spreadsheets?

That is normal, and it is a decision rather than a problem: pick which sheet is authoritative for each column before merging, because reconciling two disagreeing quantity columns is a stock-count question and not a migration one. Where the files genuinely hold different facts — quantities in one, prices in another — an AI-assisted import can correlate several documents into one proposed import.

Do I need a consultant to move off spreadsheets?

No. Nothing on this page needs anyone but the person who already maintains the sheet, and that person is the only one who knows what its columns actually mean. The import wizards accept Excel or CSV with a header row, auto-match the obvious columns, and show you the mapping before anything is written.

Can I keep using the spreadsheet alongside?

For a week or two of overlap, sure. Beyond that it stops being a safety net and becomes a second system to reconcile, which is the problem you were leaving.

Written from our own import wizards and from onboarding customers off spreadsheets; it makes no claims about anyone else's product. If something here does not match what you see, tell us at hello@aegisswift.com and we will correct it.

Try it with your own sheet

Real-time inventory, barcode scanning, work orders, and QuickBooks sync from $69/month. 14-day free trial, no credit card, and we'll walk the import with you.

Start a free trial