Review inventory and discrepancies
The Inventory tab is where you find out whether SKU.io and your 3PL agree about what is in the building.
It is a mirror, not a controller: SKU.io copies what VeraCore reports and compares it against its own stock. Nothing here changes anything at the warehouse. If the numbers disagree, the fix is either a mapping, a conversation with your 3PL, or a stock take — never editing this page.
If the quantity columns do not mean what you expect, read The inventory model first. VeraCore's available is not SKU.io's available, and that difference is behind most surprises.
Refresh the mirror
Click Refresh From VeraCore. You get Inventory sync queued — track its progress in the job tray, and the job runs under Sync VeraCore Inventory:. The page reloads itself when the job finishes.
While one is already running the button is disabled: An inventory sync is already running — track its progress in the job tray.
Reload re-reads what SKU.io already holds without calling VeraCore. Use it when you just want the page refreshed.
The subtitle under the heading tells you how current the mirror is — VeraCore Offer balances mirrored into SKU.io. Last synced: …, or Not synced yet. if it has never run.
Deal with unmapped facilities first
If any VeraCore facility has no SKU.io warehouse, a warning sits above everything else:
{n} VeraCore facilities are not mapped to a SKU.io warehouse. Balances from them are mirrored but cannot be compared against SKU.io stock.
The Map Facilities button next to it takes you straight to Warehouse Mappings.
Clear this before you trust anything below it. Stock from an unmapped facility is mirrored but sits outside the comparison entirely, so the discrepancy count is answering a narrower question than it looks like it is.
Read the numbers
Two rows of cards sit above the table.
The segment cards are clickable — each one switches the table to that segment and takes an outline to show it is active:
| Card | Sub-label | Means |
|---|---|---|
| Mirrored Offers | {n} multi-product offers | Every balance row SKU.io holds |
| Discrepancies | VeraCore available vs SKU.io stock | Mapped offers where the two disagree — turns amber above zero |
| SKU.io Only | Never reported by VeraCore | Products you stock that VeraCore has never reported |
| VeraCore Only | No SKU.io product mapped | VeraCore balances with nowhere to land — turns red above zero |
The balance cards total the mirrored stock itself: On Hand (with the row count beneath), Available (Sellable per VeraCore), Committed (Allocated to open orders), and Incoming (with a count of aggregate-only rows).
The Discrepancies count deliberately stays on screen when it is zero. Zero is an answer — nothing is out of balance — and hiding it would make "in balance" look identical to "not loaded yet".
The Warehouse selector at the top scopes everything — cards, segments, table — to one building. It lists only warehouses that are actually mapped, because an unmapped facility cannot scope a comparison. Leave it on All Warehouses for the overall picture.
Whichever segment you are on is written into the URL as ?tab=, so a link to a specific segment can be shared or bookmarked and survives a refresh.
The four segments
All Inventory
Every mirrored balance row, one per offer per facility.
Item, Title, SKU.io Product, Warehouse, UoM, then On Hand, Available, Committed and Incoming, then Source, Last Synced and Updated. Rows with no mapping show an amber Unmapped chip instead of a SKU; a facility with no warehouse shows Not mapped under its name.
Source is the column people miss:
| Chip | Means |
|---|---|
| Per-facility | VeraCore reported this balance against a specific facility |
| Aggregate | VeraCore reported no per-facility split, so the aggregate balance was mirrored against the default facility |
An Aggregate row is not wrong, but it is less precise — the quantity is real, the building it is attributed to is an assumption. See the aggregate fallback for when this happens and what it costs you.
Rows carrying the purple kit icon are multi-product offers, excluded from discrepancies and stock takes. The tooltip repeats the reason on hover.
The View Ledger action on each row opens the inventory ledger filtered to that item. Search covers item, title, and facility; the advanced filters go further — quantities, flags, dates, facility.
Discrepancies
The one that matters. Covered in its own section below.
SKU.io Only
Products you stock that VeraCore has never reported a balance for.
The alert on the tab states the ambiguity plainly: either the offer does not exist in VeraCore, or it exists but was never mapped. Both look identical from here, which is why the alert links to the Products tab — check there before concluding stock is missing.
Columns are SKU, Name, Type, Unit Cost, and SKU.io Qty — highlighted amber when it is above zero, because a product you believe you hold and your 3PL has never mentioned is worth a look. Export CSV takes the current filtered list.
An empty tab here reads Nothing unaccounted for — every SKU.io product with stock has a matching VeraCore balance.
VeraCore Only
The mirror image, and the more urgent one: VeraCore holds a balance and no SKU.io product is mapped to it, so that stock is invisible to SKU.io.
Each row shows the item, title, facility, the four quantities, and a status of either Needs Review (the matcher found candidates but could not choose) or Unmapped (it found nothing). Map Products in the header goes to the Products tab; the row action goes there pre-filtered to that item.
Until they are mapped these offers are excluded from discrepancies and stock takes, which is the point of the tab: they are the stock the discrepancy report cannot see.
Reading a discrepancy
A discrepancy is defined precisely, and the page says so at the top:
A discrepancy is VeraCore available minus SKU.io on hand for a mapped offer. A negative number means VeraCore holds less than SKU.io thinks — the overselling direction. Multi-product offers are excluded: their balance is a kit roll-up, not a countable position.
So:
- Negative — VeraCore has less than SKU.io believes. This is the dangerous direction: SKU.io will keep selling stock that is not in the building.
- Positive — VeraCore has more. Less urgent, but it means you are under-selling, and it often points at a receipt SKU.io never recorded.
The header chip totals the Impact in currency: every row's discrepancy multiplied by its unit cost. Use it to decide whether the list is worth an afternoon.
Each row gives you SKU (linked to the product, with its name beneath), VeraCore Item (linked to that item on the Products tab), Warehouse (linked, or an amber Unmapped, with the VeraCore facility beneath), Unit Cost, In Kits, SKU.io Qty, VeraCore Available, the signed Discrepancy, its Value, and Last Synced.
The Value column is absolute cost exposure and is never negative — the colour comes from the signed discrepancy instead, so a shortfall reads red rather than green.
Export CSV produces the full list with every column, for sending to your 3PL or working through in a spreadsheet.
Before you assume the warehouse is wrong
Most discrepancies are not counting errors. Check these first:
| Check | Why |
|---|---|
| Is the mirror current? | A discrepancy against yesterday's snapshot is a discrepancy against yesterday. Refresh first |
| Is the offer mapped to the right product? | A wrong mapping produces a large, confident, meaningless difference |
| Is it a kit? | Multi-product offers are excluded — if you mapped one anyway, its numbers are a roll-up |
| Is the row Aggregate? | The quantity is real but the warehouse attribution is assumed |
| Are there unmapped facilities? | Stock in one is mirrored but not compared |
| Is there an open transfer or in-flight receipt? | The two systems can legitimately disagree mid-movement |
When those are all clean and the difference persists, it is real. Reconcile it with a stock take.
When it is empty: No discrepancies found — SKU.io and VeraCore agree on every mapped offer, or inventory has not been synced yet. That second clause is not filler. Check the last-synced timestamp before celebrating.
How often to do this
Enable the inventory capability on Settings → Sync and the mirror refreshes on its own schedule. The button here is for when you do not want to wait — before a stock take, after your 3PL tells you they have adjusted something, or when a number looks wrong.
Reviewing discrepancies is worth a regular slot regardless of how the sync runs. A small difference caught weekly is a mapping fix; the same difference found after a quarter is an inventory investigation.
Next steps
- Create a stock take from discrepancies — reconcile SKU.io to what your 3PL reports.
- Read the inventory ledger — when a balance moved, and by how much.
- The inventory model — what each quantity column actually means.