Sending stock back to a supplier

There is no return-to-supplier feature in Shopify, and there is no supplier credit anywhere in it either. What there is, and what almost nobody uses, is an inventory transfer with the destination left blank — Shopify's own way of recording stock that leaves your building for somewhere it does not track. Here is what that gives you, what it still will not do, and the part you will be keeping in a spreadsheet.

There is no "return to supplier" in Shopify. No button, no reason code, no document — and, worth saying early because it is the part that costs real money, no supplier credit anywhere in the product. Not in the admin, not in the API. Whatever you are owed for the faulty pallet is tracked by you, outside Shopify.

What Shopify does have, and what hardly anyone uses, is an inventory transfer with the destination left blank. Its own documentation says what that is for:

"You can leave the origin or destination blank when creating an inventory transfer. This can be useful when you receive inventory from an external supplier or ship to an external location that isn't tracked as a location in Shopify."

Most merchants know the first half of that sentence. The second half is the return.

What the blank-destination transfer gives you

  • A record that survives, with room to write in it. The transfer exists in your admin with its lines, quantities, note, reference name and tags. An adjustment does leave a history row — who, when, and a reason — but nowhere to say who the goods went to.
  • Stock coming off at the right moment. Marking the transfer ready to ship commits the items at the origin, which takes them out of what is available to sell.
  • Tracking, if you want it. Moving the transfer to in transit creates a shipment, and you can put the courier's number on it.
  • A place for the supplier's name. Not a field on the way out. Shopify does put a supplier on a transfer — but as its origin, when stock is coming in — so an outgoing one has the note, the tags, the reference name and, since mid-2026, metafields defined for transfers.

What it does not give you

No structured reason. Nothing on the transfer says why the stock went back. Faulty, over-shipped, wrong item, end of season — all of it lives in a free-text note that no report can group by.

No supplier on an outgoing transfer. A purchase order has a supplier, and an incoming transfer carries one as its origin. A transfer going out has nowhere to put it — so "everything we returned to this supplier this quarter" is not a question your admin can answer, unless the return went back through the supplier's own transfer as above.

No money owed to you, anywhere. This is the verified gap, and it is worth being blunt about: Shopify has no vendor credit, no debit note, and no way to record that a supplier owes you for what you sent back. The goods leave your inventory and the value simply stops being represented.

One thing Shopify does not document, so check it on screen. The removal itself is intended and Shopify says so — its own release note describes leaving the destination blank as the way to "write off, discard, or send inventory to places Shopify doesn't track—like third-party warehouses, mobile teams, or suppliers". What no page states is exactly when the origin's on-hand count drops. The create screen previews the change before you save, so read that, then run one small transfer and watch the numbers before you trust the process with a pallet.

Sending stock back and tracking the credit in a spreadsheet? Describe what should happen instead →

The rejection path, and why it probably does not apply to you

If you look for this in Shopify's documentation you will find rejecting items, and it is worth knowing exactly what it covers so you do not plan around it.

When you receive an incoming transfer or purchase order, each line can be accepted, rejected or cancelled. Rejected stock "is recorded on the transfer, but doesn't change inventory quantities at any location" — it never enters your inventory in the first place.

That is a genuinely good mechanism, and it is available only at the moment of receiving. Technically the reason lives inside the receive operation and nowhere else. So:

  • The pallet you are unpacking right now, that is visibly damaged — reject the lines. Clean, recorded, and the stock never counts.
  • The pallet you accepted three weeks ago, if it arrived on a transfer or a purchase order — open that shipment, choose Manage received items, and move the units from accepted to rejected. Shopify documents this for corrections, and it is the one route that keeps the record on a transfer that names your supplier. What it does not document is what that does to your on-hand count once the stock was already accepted, so try it on one line and watch the number.
  • Stock that never came in on a transfer at all — no rejection exists. It is on your shelves, and getting it off them is the transfer or the adjustment.

The adjustment path, and its one honest limitation

The alternative is adjusting the quantity down. It is faster, and it loses the thing you most want to keep.

Shopify's adjustment reasons are a fixed list: Correction, Count, Received, Return restock, Damaged, Theft or loss, Promotion or donation. There is no "returned to supplier" — not in that list, and not in the wider set the API allows either. The closest it comes is a reason called "other", which records only that it was none of the above. So you pick the closest untruth, usually Damaged or Correction, and your inventory history records something that is not quite what happened.

You lose the supplier and the reference number. The history will show the movement and who made it — Shopify records adjustments as a move to "Inventory removal" — but not where the goods actually went, or why in your own words.

Doing it by hand today

The transfer route, as the admin actually walks it:

  1. Products → Transfers → Create transfer.
  2. Set the origin to the location the stock is leaving, and leave the destination empty. Both are optional in the admin, and the API insists on at least one of them; for a return it is the origin.
  3. Add the products and the quantities going back.
  4. Put everything you will want later into the note and the reference name — the supplier, their RMA number, the reason — or into a metafield, if you have defined one for transfers under Settings → Custom data. Nothing else on the transfer will hold it.
  5. Mark as ready to ship, which commits the stock at the origin, or move it straight to in transit if it is already on the courier. If it left days ago, marking it transferred completes it in one step.

The faster route, when the paperwork genuinely does not matter, is to adjust the quantity down with the reason set to Damaged — one screen, and a history row that says "Inventory removal" without naming who received the goods. (The reason cannot be set from the Shopify mobile app at all, so that route loses even the nearest half-truth.)

Whichever you use, write the credit down somewhere else. That is not a workaround for a missing setting; it is the whole of what Shopify offers here.

Which route is yours

Your situation What to do
Faulty goods you are unpacking now, from a transfer or purchase order Reject the lines while receiving — they never enter stock
Stock already on the shelf, going back Transfer with the destination left blank
Stock on the shelf that arrived on a transfer or purchase order Reopen the received shipment and reject the units — check the on-hand effect on screen
A quick write-off where the paperwork does not matter Adjustment, reason Damaged or Correction
"What did we send back to this supplier, and what are we owed?" Not in Shopify — a spreadsheet, or built for you
A credit note from the supplier Does not exist in Shopify at all

What Shopivibe does

You describe it the way it happens on the loading bay: "When we send something back, take it off the shelf, record which supplier it went to and why, tell them it is coming, and keep it on a list of what we are owed until the credit arrives."

What you get is the return recorded as a return — the supplier, the reason and the reference on it — the stock off your shelf, the supplier told, and what you are owed still visible until it is settled.

And here is the split, exactly. The return record — supplier, reason, reference, what you are owed — is kept for you and shown in your admin. Shopify's own inventory history shows the same movement as a correction, because its list of reasons has no "returned to supplier" — which is the whole reason this page exists. What is added is the half Shopify has no place for.

Three more things to say plainly. Shopify has no concept of a supplier credit, so the day yours is settled is a day you mark, not one Shopify knows about. The supplier's address and the list of what you are owed are rows you keep — a person sets those up with you, and where supplier details live at all is its own question. And the negotiation itself is yours — we hold the record and remind you; the conversation with the supplier stays with you.

Shopivibe solves the problem in your store and keeps what it adds maintained, including when Shopify changes something underneath. If the app cannot complete your request on the spot, somebody at Shopivibe takes it on straight away and has it working in your store within 24 hours, included in the plan at no extra charge. Shopivibe is free during early access, with 3,500 credits included. Credits beyond the included 3,500 cost $0.06 each.

Know what you are owed and nowhere to keep it? Describe it to Shopivibe →

Checked against Shopify's documentation and the App Store on 20 September 2026.