Financial Accounting

Inventory Audit Before Go-Live: Are Your Costs and Counts Clean Enough for the Ledger?

On a go-live call in the fall of 2026 I told a seller that her opening count should match QuickBooks, and that I’d imagine the inventory number on her balance sheet “is not like 100% accurate.”

Then I told her not to worry. “If it’s not accurate on day one, it will be accurate over time. So don’t fret too much. If it’s not like 100% accurate, it will sort itself out.”

Half of that is true. Once the old stock sells, every new unit arrives on a purchase order with its own cost, and the inventory figure gets better by itself. The other half is the problem. A wrong opening cost doesn’t go away. It leaves the balance sheet and lands in cost of goods sold, in whichever months the old stock sells, and nobody sees it move. SKU.io now has a readiness check that asks the question I skipped.

This guide is the audit I would run before any inventory system is allowed to post to Xero or QuickBooks. It works on any system. The SKU.io part is near the end.

The rule: clean the data, then connect

The standard practice among ecommerce accountants is plain. Connect the inventory system to the general ledger only after the implementation is finished, the data has been cleaned, and the accountant has looked at the setup. Not before.

The reason is the cost of repair. A wrong cost in the inventory system is one correction in one place. The same cost after three months of daily journals is a cleanup across three closed months, and it is the accountant who does it.

Clean doesn’t mean perfect. No business ties to the penny on day one. It means you know which numbers rest on documents and which rest on somebody’s memory, and you have decided what to do about the second group before it starts posting.

What clean enough means

I ask eight questions. Each one is about a number the first journal entry will be built from.

  1. Does every unit you hold have a cost? Stock at zero cost posts zero cost of goods sold when it sells. Every one of those sales overstates gross profit.
  2. Does every cost have a document behind it? A cost typed in during a stock take and a cost read from a supplier invoice look the same in a valuation report. They are not the same evidence.
  3. Is each product’s default cost a landed cost? The default is often the purchase price alone, with no freight or duty in it. It gets used whenever there’s no better source.
  4. Does every warehouse have a recent physical count? Not a report. A count.
  5. Are your 3PL’s records complete? A 3PL’s on-hand number is only as good as the events it records. Kit builds are the ones most often left out.
  6. Does the opening value tie to the balance sheet? The inventory value on the day before your start date has to equal the inventory account in your books on that day.
  7. Does every payout code have an account? A marketplace fee code with nowhere to post either stops the entry or falls into a catch-all account.
  8. Are your open purchase orders real? A PO from two years ago with nothing received inflates what you think you owe and what you think is coming.

There is a ninth that isn’t about data: has your accountant reviewed the setup? Ask before you connect, not after.

The mistakes I see most

Taking the opening value from a ledger that was never right. Many sellers are honest that the ledger figure was never right. Many others don’t know. If the books held inventory as a plug for two years, matching your opening count to them only copies the plug.

Loading the purchase price as the cost. Freight, duty and brokerage are part of what a unit cost you. Leave them out and every unit of opening stock is undervalued by the same amount, and every sale of it overstates margin.

Counting the 3PL’s report as a count. A 3PL’s on-hand report is the 3PL’s opinion of what it holds. It is useful as a comparison. It is not evidence that the stock is there.

Saying “our costs are right” instead of checking. Confidence is real information. It tells the accountant where the owner thinks the risk is. It is not a document.

Planning to clean it up after go-live. After go-live, every correction is an adjustment with a date, an account and a reason. Before go-live, it’s an edit.

How to check your own books

You can run this audit on a spreadsheet before you pick any system. It takes an export and an afternoon. For a quicker first pass over the data itself, see how to audit your ecommerce data for errors in under an hour.

  1. Export a valuation. One row per product per warehouse: quantity, unit cost, total value, as of the day before your planned start date.
  2. Tag where each cost came from. Supplier invoice, purchase order price, typed in during a count or an adjustment, an average, an imported estimate, or nothing. Sort by value and do the biggest rows first.
  3. Weight the value by source. Give an invoice full weight and everything else less (the weights SKU.io uses are in the first worked example). The result is the share of your stock value you could defend with paper.
  4. List each warehouse’s last full count. Month by month. A month end with no count in the last three months is a month resting on records alone.
  5. Ask your 3PL which events it records. Receipts, picks, adjustments, damages, returns, kit builds and de-kits. Compare the list with what actually happens in that building.
  6. Tie the valuation to the balance sheet. Total from step 1 against the inventory account on the same date. Write down the difference and its cause.
  7. List every payout code. Pull one recent payout per channel and check that each line type has an account in your chart.
  8. Filter open purchase orders. Anything older than 90 days with nothing received gets closed or explained.

Worked examples

All numbers below are invented to show the arithmetic.

Example 1: how much of your stock value has a document

A seller holds $240,000 of stock. Weighted by where each cost came from:

Cost sourceStock valueWeightWeighted value
Supplier invoice$120,000100%$120,000
Purchase order price, no invoice yet$60,00080%$48,000
Cost typed in on an adjustment$36,00060%$21,600
Average or backfilled cost$24,00040%$9,600
Total$240,000$199,200

$199,200 divided by $240,000 is 83%. On SKU.io’s bands that is Medium (60% to 84%). Find the invoices behind the $24,000 of averaged cost and the figure rises to $213,600, or 89%, which is High (85% or more). The cheapest gain is almost always the averaged and typed-in costs, because the invoices usually exist somewhere.

Example 2: stock at zero cost

400 units of one product sit in a warehouse at $0.00. The real landed cost is $12.50. The inventory figure is $5,000 short. When those 400 units sell, cost of goods sold is $5,000 short and gross profit is $5,000 too high, in the month they sell.

Example 3: the opening cost that “sorts itself out”

A seller opens with 1,000 units at the purchase price, $8.00. Freight was $0.90 a unit and duty $0.50, so the landed cost is $9.40. The opening count says $8,000. The units really cost $9,400.

Say the stock sells at 250 units a month. For four months, cost of goods sold is $350 a month too low, and margin is $350 a month too high. Then the old stock is gone and the problem has “sorted itself out.” It did. It turned $1,400 of balance-sheet error into four months of wrong margin, and anyone pricing from those months priced on it.

Example 4: the tie-out

On September 30 the balance sheet shows inventory of $182,400. The opening count, valued, comes to $176,900. The difference is $5,500, or 3.0%.

Before go-live, find it. The usual causes are goods in transit that the books hold and no shelf does, a write-off booked in the books and never in the count, or freight capitalized in the books but missing from unit costs. Decide which side is wrong, correct it, and write down what you did.

Example 5: cost of goods sold for the months before you switched

Your accountant may want cost of goods sold for the quarter before go-live, and all you have is two counts and a pile of invoices. That is enough for the quarter:

  • December 31 count: $150,000
  • January to March purchases: $90,000
  • March 31 count: $160,000
  • Cost of goods sold for the quarter: $150,000 + $90,000 − $160,000 = $80,000

The quarter is measured. The split into January, February and March is not, because nothing was counted at the end of January or February. Any monthly figure inside the quarter is an estimate, and it should be labeled as one.

How SKU.io handles it

SKU.io feeds Xero or QuickBooks Online. It doesn’t replace them or your accountant. Three parts of it cover this audit.

The go-live readiness check

Go-live readiness runs before you turn accounting on for the first time. Three checks block the turn-on: product costs (stock held with no cost, and products sold in the last 90 days with no cost at all), payout and settlement codes with no account and no fallback, and the inventory tie-out against your opening balance. The rest are warnings that never block: stale open purchase orders, unfinished receipts, foreign-currency supplier bills, whether your accountant has reviewed the setup, and the cost and count trust checks below. Each check links to the exact records it counted.

If you go live over a blocking item, you record an override with a written reason. The reason, your name and the check’s figures at that moment are kept. Only the first turn-on is checked this way. The steps are in the go-live readiness guide.

Watch on YouTube

Cost trust, count trust and the 3PL rating

Product costs checks that a cost exists. The Costs and counts group checks how far it can be trusted. Cost trust is the share of your stock value with a documented cost, weighted by source exactly as in the first example, and labeled High, Medium, Low or Estimate. You can also say how confident you are. Your answer sits beside the figure and never changes it. When you say 95% or more and the evidence is under 60%, the page says so.

Count trust rates each warehouse at each month end by what its stock rests on: a full count that month, a partial count, a count in the last three months, a 3PL whose records you rated, or nothing. You rate each 3PL’s audit trail as Complete, Partial or Unknown. All of these are warnings for you and your accountant. None of them blocks go-live.

What this doesn’t cover yet: stock held at Amazon, in FBA and AWD, isn’t part of these figures. The Inventory Valuation CSV has no trust column, and count coverage isn’t measured bin by bin. The cost and count trust guide has the full table of weights.

Watch on YouTube

History before go-live

History before go-live is a separate register for the counts and supplier invoices you have from before your inventory start date. It works out each month’s cost of goods sold the way Example 5 does: opening value plus purchases minus closing value. It never creates stock, changes a cost or posts to your books. Months between two counts, and months outside them, are labeled Estimate. They are shown and never posted. The steps are in the history before go-live guide.

Watch on YouTube

When the evidence is thin

Two more things exist for when the audit turns up more than you can fix in an afternoon.

A cost check is a service the SKU.io team runs, not a button. It compares your costs with your supplier invoices, freight, duty and brokerage bills, credit notes and counts, and works out the landed cost of each product in each warehouse. It ends in an opening stock count ready to load and corrected default costs, and the team walks you through the report on a call. The price is agreed up front. The cost check guide says what to send.

The books health check compares SKU.io’s figures with your Xero or QuickBooks trial balance month by month, for up to 24 months a run, including inventory on the balance sheet. It only reads your books and never posts to them. It’s in the books health check guide.

Who this is not for

If you sell on one channel from one warehouse you count yourself, buy from a few suppliers and turn over less than $1M, the spreadsheet audit above is the whole job. Zoho Inventory or inFlow will hold the result well, and you don’t need a readiness check to tell you what you can see on one shelf.

The rest of this guide

  • The ecommerce accounting standards: the checklist this guide belongs to.
  • The go-live checklist for connecting inventory to your books: each check in order, and which ones I’d never go live without.
  • How far can you trust your inventory costs?: cost by source, and what to do when confidence and evidence disagree.
  • Inventory accuracy: how far can you trust your counts?: what counts as a count, month by month.
  • Auditing a 3PL’s inventory records: why kit builds go missing and how to rate a 3PL.

If you’re moving systems as well, what happens to your data when you switch inventory systems covers what the import finds, and Amazon FBA inventory reconciliation covers the stock this audit can’t yet rate. How SKU.io posts to your books once you’re live is on the accounting page.

If you’re about to connect an inventory system to your books, book a demo and bring your last balance sheet and your opening count.

Newsletter

Get the next one by email

Short, practical writing on inventory, fulfilment and multi-channel operations — sent when there is something worth sending.

Double opt-in — we send a confirmation link and you are not on the list until you click it. One-click unsubscribe on every email. See our privacy policy.

Ready to see SKU.io in action?

Bring your real numbers and the messy questions — we'll walk the system against an operation like yours, not a slide deck.

Book a Demo

Founder-led demo · 2-day onboarding · no onboarding fees