How to export your data from Fishbowl Inventory
Fishbowl is the inventory layer bolted onto QuickBooks for a great many small manufacturers and distributors. Its export module is genuinely good — the work is in knowing which five exports to run, and how Parts and Products fit together.
Reading this for your own shop? Start a free 14-day trial — no credit card, and your data is yours to export at any time.
1.Before you export: pin the cutover
The single most common way a migration goes wrong has nothing to do with columns. On-hand quantities are only true at an instant. If you export stock on Monday and go live on Friday, you have imported a week-old picture and every discrepancy afterwards will be blamed on the new system.
Agree a freeze point with everyone who touches Fishbowl. 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 cycle count on day one.
Both are fine. Silently drifting by a week is not.
2.What to pull
Ask for these five things, whatever else you decide to bring:
- Item master, including the inactive/obsolete flags so you can filter rather than lose them.
- On-hand quantity per item, as of a stated date and time.
- Current average or last cost per item.
- Customer and vendor master, with addresses and terms.
- Open purchase orders and sales orders, if the cutover isn't on a quiet day.
3.The export, step by step
Data Import/Export module
- Open the Data Import/Export module —
File → Export. - Run these exports: Part, Product, Customer, Vendor, and Inventory (for on-hand quantities).
- Hit Export Template first on each one. That gives you the exact column headers for your install, including any custom fields your team has added — which the generic documentation won't show you.
- Output can be CSV, TXT, XLS, or XLSX. Any of them is fine.
4.Field mapping into AegisSwift
AegisSwift's item importer accepts a plain spreadsheet. These are the columns worth filling and where they come from in Fishbowl:
| Fishbowl column | AegisSwift column | Notes |
|---|---|---|
PartNumber / ProductNumber |
sku |
Required. The match key for duplicate detection and re-imports. |
PartDescription |
name |
Required. |
PartDetails |
description |
Long description. |
UPC / ProductUPC |
barcode |
Worth chasing — it makes receiving and counts scannable on day one. |
UOM |
uom |
Unit of measure. |
StdCost (or Cost on vendor rows) |
cost |
Seeds the moving-average cost basis. |
Price (Product export) |
price |
Default sell price. |
Vendor / DefaultVendor |
vendor |
Matched by name. Names you don't have yet are listed on the mapping step and created with the import, so vendors need not be loaded first. |
VendorPartNumber |
vendor_sku |
Stored on the supplier link. |
| Quantity from the Inventory export | quantity |
Opening on-hand, received into your default location. |
Import vendors before items. The vendor column matches on name
against vendors that already exist. Run the party import first and the links form
automatically; run it second and every item row warns instead.
5.Gotchas
Filter on Active — but export everything first
Fishbowl databases accumulate years of dead parts. Export the lot including the active flag, then filter in the spreadsheet. Filtering at the source is how you discover six months later that "inactive" was also hiding something you still sell.
Custom fields hide at the right-hand edge
They come through prefixed CF- on parts and CFP- on products.
Teams often keep something load-bearing there — a bin location, a customer part number, a
compliance code. Always scroll right and ask.
Multi-location quantities need consolidating
The Inventory export reports quantity per location group. Decide whether those become separate AegisSwift locations or one opening balance, and consolidate before importing.
Anything the module won't give you
Fishbowl runs on MySQL. On self-hosted installs a read-only database connection will get you whatever the export module won't — useful for transaction history, which no export path covers well.
6.What happens on our side
You upload the two spreadsheets — items, and parties (customers and vendors) — and the
import wizards match on sku and name respectively, so a re-import
updates rather than duplicates. That matters more than it sounds: you will almost certainly
import twice, once to see what breaks and once for real.
One difference to expect if you're coming from Fishbowl via QuickBooks: AegisSwift costs
inventory on a moving average. Your opening cost column seeds
that basis. If your accounting uses FIFO, the two will not agree penny-for-penny after the
first receipt — that's a costing-method difference, not an error, and it's worth telling
your accountant before go-live rather than after.
If you manufacture: bringing the bills of materials
Fishbowl's base is manufacturers, so the item and party files are usually not the whole
move. Add a third export: the Bill of Materials CSV, which Fishbowl writes
one row per BOM line with the BOM number, the part number, quantity and unit of measure, the
item type, and — where a BOM is built in stages — an IS STAGE flag with the
STAGE BOM NUMBER it refers to. Keep the item types: they distinguish the
finished good, the raw materials and any sub-assembly that has a BOM of its own. Export the
BOM instructions too, if the steps carry text you want to keep.
On our side the BOM importer takes a flat file of parent_sku,
component_sku, qty_per and scrap_percent — one row
per component, parents and sub-assemblies alike — and builds each bill of materials whole or
not at all, with a warning list for anything odd rather than a half-imported BOM. Import the
items first, so every SKU the BOM file names already exists, and import sub-assembly BOMs
before the products that use them, so the parent's cost can roll up through them. Two things
do not come across in a file and are set once afterwards: the routing steps with their times
and rates, and the scrap allowance, which Fishbowl's line does not carry and which the
cost rollup guide explains.
Open work orders are the one thing not to migrate. Finish or cancel them in Fishbowl before the cutover, so the on-hand quantities you export are not partly inside a job; release the first work orders in AegisSwift against the imported BOMs. The work order guide covers what a released order does to stock, which is why a job open across the cutover is a count discrepancy waiting to happen.
7.Questions people ask
Can I export my data out of Fishbowl myself?
Yes. The Data Import/Export module is self-serve and needs no ticket or professional-services engagement. Self-hosted installs additionally expose MySQL directly.
Will I lose my custom fields?
Not if you look for them — they export as CF- and CFP- columns.
Map the ones that matter to AegisSwift fields, or keep them in the description.
How long does this take?
The exports themselves are minutes. Joining Parts to Products and agreeing what counts as active is the real work — budget an afternoon for a typical catalogue, and expect to run the import twice.
Bring it into AegisSwift
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