Why a short or damaged delivery leaves no record in Shopify

Twelve were ordered, nine arrived, one of those was broken. You accept nine, reject one, and Shopify records almost none of it. Rejecting a line does not change a quantity, and Shopify's inventory reporting is built entirely on quantity changes — so the rejection writes no row anywhere. Three months later there is nothing to show the supplier. This page explains exactly where the record stops, and what has to be in place before a discrepancy report is possible at all.

Rejecting a line while you receive a delivery changes no quantity in Shopify, and everything Shopify reports on is a quantity change. That single sentence is the whole problem. Shopify says it plainly of the Reject action: it "doesn't change inventory quantities." Nothing moved, so the adjustment history — which is what every inventory report is built on — has no row for it to find. The shortfall you just handled leaves the building with the delivery driver.

Accepting is recorded — but not the way you would want either. This page walks the receiving screen one action at a time, says exactly what each one leaves behind, and then sets out what has to exist before a discrepancy report is possible.

What the receiving screen actually does

Receiving now happens on a transfer rather than on the purchase order, and Shopify's staff have confirmed there is no setting that puts it back. Each line offers three actions.

Action What Shopify records
Accept An automatic inventory adjustment named Transfer created. No reason is asked for and none can be chosen.
Reject Nothing in inventory. "Doesn't change inventory quantities" — so no adjustment row exists.
Cancel The line is closed off. Again no quantity moves.

There is one place to write down why, and it is a comment box: "Optional: To record why you chose an action, click the comment icon next to the action, and then enter a note." Free text, attached to that transfer, and read by nobody but a person who opens that transfer.

The seven reasons are not available here. Correction, Count, Received, Return restock, Damaged, Theft or loss and Promotion or donation are the reasons Shopify offers when somebody adjusts a quantity by hand. Receiving is not a manual adjustment, so the list never appears — Damaged is not something you can select while receiving a damaged item.

Rejecting a line is also not the same thing as sending goods back once you have taken them in. That is a separate route with separate gaps, set out in sending stock back to a supplier.

Why the report you want cannot be built

Shopify's inventory reporting reads adjustment history, and the three facts above decide what it can and cannot contain.

Rejections are not in it at all. They produced no adjustment, so they produced no row. Half of what you want to report on was never recorded.

Accepted stock is in it, under one name. Every receipt looks like Transfer created, so a delivery that arrived complete and one that arrived three short are indistinguishable after the fact — the three that did not arrive simply are not there.

And there is no supplier. The report can be cut by location, SKU, status, reason and the reference document, and that is the list. "Everything supplier X shipped short last quarter" is not assemblable from Shopify's own data on any plan, because the supplier is not one of the things it records against the movement.

A merchant put it this way on the forum in June 2026: "a few units were short, damaged, or the wrong variant — and none of that gets recorded." A request for a supplier-specific shortfall report, posted in May 2024, has never been answered.

Chasing a supplier and finding nothing to show them? Describe what you receive →

Stocky was where a lot of people kept this, and it has gone

Stocky stopped working on 31 August 2026. It held purchase order history, and Shopify is direct about what does not come across: "historical purchase orders can't be imported into Shopify." If your record of past shortfalls lived in Stocky, export what you can while the export is still there — the Stocky supplier data page sets out which reports carry the supplier name and which fields have no replacement at all.

What the purchasing apps do and do not do

The receiving apps are good at the mechanical half and none of them solves this one.

App Price Records a partial receipt Records why
Full Shelf $9.99 a month Yes No
Ultimate Purchase Orders $9.99–$34.99 a month Yes No
Purchase Management $25 a month Yes No
Purser See listing Yes No
SKUSavvy See listing Yes No — see below

SKUSavvy is the only one with a Discrepancies view, which is worth knowing and worth reading carefully: its own documentation defines it as the difference between what was ordered and what was counted in. That is a number, not a reason. It will tell you three are missing. It will not tell you whether they were never sent, arrived broken, or were the wrong colour — and the difference between those three is the entire conversation with the supplier.

This is not a gap any of these vendors has overlooked. Shopify gives them nowhere to put a reason, so an app that wanted to record one would have to keep its own record alongside, which is exactly the job described in the next section.

What has to be true before a discrepancy report exists

Three things, in this order, and the first is the one that gets skipped.

Somebody has to type it at the moment it happens. Not at the end of the week. The person opening the box is the only one who knows whether the carton was crushed, and there is a window of about a minute in which that fact is free. After that it costs a phone call.

It has to be stored somewhere Shopify keeps. A note in the transfer comment is not storage — nothing can read it. What is readable is a record defined under Settings › Custom data: supplier, line, ordered, received, rejected, reason, photo. Defining it there is what makes it visible and editable in your admin, and it is the same answer Shopify gives for supplier lead times, case packs and the supplier's own SKU on a purchase order.

And only then is there something to report on. A report is a view over a record. With the record in place, "everything short-shipped by this supplier this quarter" is a straightforward question.

Without it, the question has no answer — and it is worth being exact about which part is missing, because one part is not. The quantity is written down: a shipment line records what was accepted and what was rejected, and since Shopify's October 2026 API version an app can read both. What was never written down is everything that makes the number mean something — why a line was rejected, and which supplier it came from. Shopify's shipment line has no field for a reason and none for a supplier. So the count exists and the question does not, which is a narrower and more useful thing to know than "nobody can get the data".

One thing worth being clear about: none of this recovers the past. Deliveries you have already received are gone as far as Shopify is concerned. A discrepancy record starts producing evidence from the day it starts, which is the argument for starting it on a Monday rather than after the next argument with a supplier.

What Shopivibe does here

Start from the fact at the top of this page: a rejected line moves no quantity, so Shopify's adjustment history holds no row for it — the rejected count does sit on the shipment line, but the reason it came back and the supplier it came from do not sit anywhere. The record has to be written at the moment the box is opened, and writing it is the job.

The record is yours, and building it is our job. The fields live under Settings › Custom data in your own admin — supplier, line, ordered, received, rejected, reason, photo — so your team can change them without asking anybody. A person here sets that up and builds the rules that act on it: flag a supplier whose shortfalls pass a threshold, tag the orders affected, raise it before the invoice is paid rather than after.

One part stays with your team because nothing else can do it: the person opening the carton types the reason — no system can know the box was crushed. And the shortfalls you already keep in a spreadsheet are brought in once, by a person, as part of the setup — so the record starts with your own history in it rather than empty.

Describe what you actually want to be able to prove to a supplier, and a person here takes it on straight away and has it working in your store within 24 hours.

Shopivibe solves the problem in your store and keeps what it adds maintained, including when Shopify changes something underneath. Shopivibe is free during early access, with 3,500 credits included. Credits beyond the included 3,500 cost $0.06 each.

Deliveries arriving short and nothing recording it? Describe it in your own words →

Checked against Shopify's documentation and the App Store on 15 October 2026.