Receiving is where a purchase order pays off: the stock you ordered becomes stock you can sell. In Stockroom, receiving happens right on the purchase order - enter what arrived, and your Shopify inventory updates at the location you choose. Receive everything at once, or in as many partial deliveries as it takes. You can also record what each delivery actually cost, so your product costs stay accurate.
When a purchase order can be received
A dark Receive button appears on a purchase order once it's been marked as Ordered, and stays available while it's Partial (some items received, some still outstanding). Click it and you pick one of two ways to receive. Receive & count opens the receiving card, where you enter or scan what actually arrived - that is the flow below. Receive all takes the whole remaining order in one step, without opening the card; see Receiving a whole order without counting. Draft POs can't be received yet - mark them as ordered first.
1. Open the Receive stock card
Open the purchase order, click Receive, and choose Receive & count. A Receive stock card opens right on the page:
Only a few items turned up? You do not have to open the whole order. On the Items card, every line that still has units on order carries a small package button on the right: click it and the Receive stock card opens holding just that line, with the quantity already filled in to what is still outstanding. Change it to what actually arrived, correct the cost if the invoice differs, and receive. To do several lines at once, tick their checkboxes and click Receive selected - the card opens holding just those lines, so you can still adjust any quantity or cost before you receive. A line at the top of the card tells you how many of the order's lines you are looking at, and Show all lines brings the rest back. On a partially received order, Receive & count itself opens the card this way too - holding just the lines with items still outstanding, so the deliveries already put away are not in the way while you count the rest. While the card is open the Items list below it is hidden, so you are only ever reading one copy of the lines.
The rest of the order is untouched either way. Each line keeps its own count of what has arrived and what is still owed, and each delivery records the cost you were actually charged - so if the price changes before the rest ships, the later delivery simply records the new one.
Receive to location - where this stock is arriving. It defaults to the PO's destination, and you can pick any of your Shopify locations. On an order split across several destinations it starts on Each item's ordered destination instead - more on that below.
A line-by-line table showing Product, Ordered, Receive, Unit cost, and a Status column. Before you count anything, Status shows what earlier deliveries already covered - a green Received badge on a fully received line, "1 of 3 already received" on a partial one - and as you count it tracks this delivery instead.
An Invoice # field for the supplier's invoice number on this delivery, and an optional Note (handy for "Box 2 of 3" or "2 units damaged"). This is where supplier invoice numbers belong: each delivery keeps its own, so one purchase order can carry several. The PO number field on the order itself is a different thing - whatever you type there replaces the number Stockroom generated for the order, on the order and on every document.
A Received date - defaults to today. Entering a delivery that actually arrived earlier? Pick that day, and the receipt, your reports, and your cost history all use it.
On a purchase order split across more than one destination, the lines are grouped into a band per location and Receive to location starts on Each item's ordered destination. Count the whole delivery in one pass and every item is received into the location it was ordered for: Stockroom writes one receipt per destination, and each one appears in the order's History card with its own location.
Everything turned up at one store instead? Pick that location in Receive to location and the whole count lands there. Each band then reads either Receiving here or Ordered for another destination, so you can see what is going where before you confirm.
2. Enter what arrived
Each row shows the product name with its codes underneath: the supplier's code first when you have one on record, then Our SKU, followed by the pack code and how many units that location already holds. When several variants of one product are on the order, those codes are how you tell one row from the next. You can also put the whole order in SKU order - open Sort items on the Items card and choose SKU - and the receive rows follow the same order.
Every line's Receive quantity starts at zero, so you can scan or type what actually turned up without clearing a number first. Scan to count sits at the top of the card - each scan adds one to the matching line, and the line you have just scanned moves to the top of the list, so the row you are about to type into is always the one in front of you. Only scanning reorders the list; typing a quantity leaves everything where it is.
Whole order arrived? Click Max counts and every line fills with the quantity still outstanding - then adjust anything that came up short. For a partial delivery, either enter just the lines that arrived, or click Max counts and lower the ones that fell short. Lines left at zero are skipped, so you can receive them in a later delivery. If more arrived than you ordered, enter what actually turned up - the extra units are recorded and land in stock, and the line is flagged so you can see it. See Receiving more than you ordered.
Zero counts sits next to it and clears every quantity, so you can count a delivery from scratch. When your supplier has told Stockroom what's actually in the shipment the quantities pre-fill on their own, a banner says where they came from, and the two buttons become a Set all menu with a third option, Fill from ship notice, for putting those numbers back after you've changed them.
Record where it went on the shelf
Open the Columns picker on the receive card and switch on Bin to record a shelf location per line while you put the delivery away. Each field pre-fills with whatever is on record for that item at the location you are receiving into, so a settled item just gets confirmed along with the count.
The bin is saved against the location the delivery arrived at, and an empty field never clears a bin you already had. Full details in Bin locations: record where each item is shelved.
Track lot numbers and expiry dates (early access)
Lot tracking is available as an early-access feature and is off by default. Turn it on under Settings > Purchase orders > Early access, then mark each product you want to track with the Track lots checkbox in its product page’s Costs & replenishment section. On an order with marked items, the receive card’s Columns picker also offers Lot and Expiry - type the supplier’s batch number (and its expiry date, if it has one) as you count the delivery, and Stockroom records which batch arrived on which receipt.
Recorded lots live under Inventory > Lots: search by lot number, open a lot to see the purchase orders it arrived on and its full history, correct its dates, or adjust its quantity with a reason. The Expiring lots report lists every dated batch that still holds stock, soonest first. Lot balances are Stockroom’s own records - they never change your Shopify inventory. For the full walkthrough, see Lot tracking: batch numbers and expiry dates.
Add a barcode while receiving
Sometimes an order is placed against products that have no barcode yet, and you only have the codes once the cartons are open. When any item on the order is missing one, Add barcodes appears at the top of the receiving card. It lists just those items, so you can scan or type a code for each and then Save barcodes.
If you scan something the order doesn't recognise, the banner that appears also offers Assign to an item. Choose the row the code belongs to, press Use it, and save. The scans that missed are counted onto that item, so you don't have to scan the box a second time.
If the code is not on any product in Stockroom at all, the same banner offers Create product - it creates the product in Shopify with the scanned barcode filled in, adds it to this order, and receives the scanned count in one step. It is created as a draft, so it stays off your sales channels until you finish and activate it in Shopify.
Codes are saved to the product in Shopify, so they work everywhere afterwards - scanning, stocktakes, and printed labels. Three things worth knowing:
Stockroom only fills a barcode that is empty. Changing a code a product already has is an edit in Shopify, deliberately - so a busy receiving session can never overwrite the identity of the wrong item.
If another product already uses the code, Stockroom names it and asks first. You can still Assign anyway when two products genuinely share a code, but a scan will no longer tell them apart.
Typed codes are checked against the digit maths a UPC or EAN has to satisfy, which catches a transposed pair before it reaches your catalog. It is a warning, not a block - internal codes that were never UPCs are fine.
3. Record true costs (optional)
Invoices don't always match the PO. As you receive, you can:
Edit each line's Unit cost to match the supplier invoice. This updates the receipt, not the PO - the PO stays your original agreement. Lines you have already received in full are greyed out here, because this card only records what is arriving now - correct those from the delivery itself, in Correct a delivery's costs below.
Enter the supplier Invoice # for this delivery.
This is the place to record a price you only learn when the goods turn up, which is how a lot of buying from smaller suppliers works. The Unit cost column is shown by default - if you cannot see it, open the Columns menu on the receive card and tick Unit cost. That choice is remembered per device, so it can be on at your desk and off on a warehouse tablet.
If the PO has shipping or duty charges, a Landed / unit column shows what each unit truly costs once those are spread across the items. See Landed cost: what your stock really costs for the full picture.
Already confirmed the receive with the wrong costs? You can correct them without undoing anything - see Correct a delivery's costs below.
4. Confirm
Click Receive stock. You'll see "Stock received!", and:
The purchase order's status updates - Partial if items are still outstanding, Received once everything's in.
Your Shopify inventory at the chosen location updates moments later (the update runs in the background, so give it a beat before checking the product page) - received units move from incoming to available.
The receipt is added to the History card on the PO, with the date, units, location, invoice, note, and who received it.
If receiving at these costs would change a product's average cost, an Update costs and prices? dialog opens. Update costs sets your Shopify cost per item to the new weighted average, and Update prices lets selling prices move with it - each row pre-fills a New price that holds your current margin at the new cost, rounded the way you choose, and blank fields are left untouched. Tick either, both, or neither - the confirm button says exactly what it will do. (For a PO in another currency, set the Exchange rate on the PO first - without one the dialog is not offered.) Full price-update details: Keep your product costs current when you order.
Ordering only some of a product's sizes or colours, but the new figures apply across the range? Both cards carry Also update the other variants of these products, with the exact count they will touch - one for costs, one for prices - so a range that shares a cost or a price stays aligned without you editing it one variant at a time. Prices spread exactly as you typed them here.
After receiving: a suggested transfer
If you stock more than one location, Stockroom checks the items you just received the moment the receipt lands. When another location is at or below its reorder point on one of them - and the receiving location now holds more than its max level - the purchase order shows a Suggested transfer card: which location is short, and how many units to send to fill it back up to its max.
Create transfer makes a draft transfer in Shopify - nothing moves until you ship it. The button unlocks a few seconds after receiving, once Shopify has recorded the new stock. After creating, the card offers Open transfer and Mark in transit, and if two locations are short you get one button per destination. Dismiss hides the card for that delivery.
The card uses the same reorder points and max levels as the suggestions on the Transfers page - set those on the Reorder page to power it. If the other locations have no levels set, or nothing is short, the card simply does not appear.
Receiving a whole order without counting
If the delivery matches the order and you have no reason to check it line by line, click Receive on the purchase order and choose Receive all instead. It receives every outstanding item at once - at the PO's own destination, or, on an order split across several destinations, into the destination each item was ordered for - and never opens the card.
Nothing gets typed on this path, so Stockroom asks you to confirm first - and the dialog says exactly what is about to happen:
How many units are being received, and which location they are going into.
On a split order, that each item is going into the destination it was ordered for, as one receipt per location.
The same Update costs and Update prices choices the counting flow offers, with the products whose cost would change listed underneath. Leave both unticked and your catalog stays exactly as it is.
Because nothing was counted line by line, this path cannot tell you a delivery came up short. If something did not turn up, undo the receipt afterwards and receive again with counts - see Undo a receipt below. This path also always dates the receipt today - to date a delivery in the past, use Receive & count, where the Received date field lives.
Receiving across multiple deliveries
Nothing special to set up - just repeat the flow as each delivery arrives. The Status column keeps score, Max counts always fills with whatever is still outstanding, and each delivery can go to a different location if needed. When the last item is received, the PO moves to Received automatically.
The dates land on your exports too - useful for matching deliveries back to supplier invoices. Once an order has received items, Export CSV on the order adds a Received dates column listing the day each line arrived, one date per delivery. For a per-delivery view across orders - each receipt with its invoice number and landed costs - use Received lines with landed costs (CSV) under Export options on the Purchase orders page. And when printing or downloading the PDF, tick Show received status in PDF options to add Received and Remaining columns - your copy only, never the supplier's.
When the rest isn't coming
Suppliers short-ship. When you know the remaining items will never arrive, you have two ways to settle the order - both remove the missing units from the order's totals and stop them showing as incoming in Shopify:
Cancel remaining on one line - on an ordered or partially received PO, every line with items still outstanding carries a small ✕ button at the end of its row, beside the line total - hover or tap it for Cancel remaining, then confirm. The cancelled units drop out of the totals, the line keeps a "cancelled" note for your records, and the rest of the order stays open. Swapping in a substitute? Pair it with Add items.
Close the whole order - under More actions, click Close. Closing an order with outstanding items asks you to confirm, then cancels everything still unreceived the same way.
Stockroom also asks at the natural moment: when a delivery leaves items outstanding, an Items still on backorder prompt offers Keep open (another delivery is coming) or Close order (the supplier won't ship the rest).
Cancel remaining can't be undone - if the items do arrive later, add the product back with Add items and receive it. Close is different: a closed order can be reopened, and what closing took off comes back with it. And if MyWorks Sync is connected, the reduced quantities sync to QuickBooks automatically.
If the delivery was received in Shopify instead
Some stores take deliveries in as a Shopify transfer rather than receiving them against the purchase order here. That adds the stock in Shopify, but the purchase order stays open - so its units keep showing as incoming in Shopify for a delivery that already arrived, and Shopify gives you no way to edit incoming from the admin.
Stockroom watches for this. When a Shopify transfer receives items from an open order at the same location, the order shows Items on this order were received in Shopify, names the transfer with the units it took in and the date, and links to it with View transfer. If that covers everything the order still had outstanding, the notice also offers Close order, which takes those units back out of Shopify's incoming stock. If only some of the items arrived that way, the notice tells you what it found and leaves the order alone - a delivery that is still coming should not be cancelled.
Closing an order this way records no receipt in Stockroom, so that delivery's costs live in Shopify only. If you want landed cost and cost of goods tracked here, receive against the purchase order in Stockroom instead of creating a transfer for it.
Reopen a closed order
Closed an order by accident, or need it back? Open it and choose More actions → Reopen. The order goes back to where receiving left off - Received, Partial, On the way or Ordered, depending on what had arrived - so you can receive against it again. Whatever was still unreceived when you closed it goes back on the order and shows as incoming stock in Shopify again; the confirmation tells you how many units that is before you commit, and the reopen is recorded in the order's History card.
Two things worth knowing:
An order closed before reopening was available can still be reopened, but its incoming stock in Shopify can't be restored - Stockroom has no record of what that close removed. The confirmation says so when it applies, so check the order in Shopify if you were expecting incoming units.
If the order had already been sent to QuickBooks or Xero as closed, reopening it here doesn't reopen it there - push the order again when you're ready.
Reopening is also the way in when a receipt on a closed order needs undoing: reopen the order first, then use Undo on the receipt.
Change a receipt's date
Every receipt in the PO's History card has an Edit date button - useful when you're entering past deliveries after the fact, or a receipt was recorded on the wrong day. Pick the correct date and save: your reports and cost history follow the new date, and your inventory and recorded costs are not touched.
A few details:
It works even after the order is Received or closed - changing the date never changes what was received or what it cost.
It also works on receipts imported from Stocky (which can't be undone), so a wrong imported date is still fixable.
Dates can't be set in the future, and a receipt that has been undone can't have its date changed.
Correct a delivery's costs
Supplier invoices often arrive after the goods. When one prices a delivery differently from what you recorded, you can correct that delivery on its own - the rest of the order is left alone.
There are two ways in:
On the purchase order's History card, click the cost icon on the delivery you want to fix.
Or click the figure in the Received cost column on the items card. If that item arrived on more than one delivery, Stockroom asks which one the invoice covers.
The dialog lists what that delivery brought in, with an editable Unit cost per line. A running Delivery total sits underneath, and if you recorded an invoice total when you received it, the Difference tells you how far off you still are - so you can type until it reaches zero.
Saving updates that delivery's costs, its landed cost, and your cost history - dated to the day the goods actually arrived, so your reports don't move. If the correction changes a product's average cost, the same Update costs and prices? dialog appears, and nothing reaches Shopify unless you tick it.
A few things worth knowing:
Only the costs change. Quantities, dates, locations and your Shopify stock stay exactly as they are - to change what arrived, undo the receipt instead.
The purchase order's own line costs never change. The order is what you agreed; the delivery is what you were invoiced.
If the order has shipping or duty charges, correcting one line re-spreads those charges across the delivery, so other lines' landed costs can move too.
Costs can be corrected while an order is Partial or Received. On a closed order, choose More actions → Reopen first. Receipts you've undone, and receipts imported from Stocky, can't be corrected.
Undo a receipt
Received the wrong quantities, or confirmed costs that don't match the invoice? Every receipt in the PO's History card has an Undo button. Undoing voids the receipt: received quantities reverse, the order steps back to Ordered or Partial, and the Shopify inventory move is reversed in the background - so you can receive again right away with the correct numbers.
Undoing everything to re-edit the order? More actions → Revert to draft undoes every receive and reopens the order as an editable draft in one step - the confirmation spells out what will happen before anything changes.
The voided receipt stays in History marked Undone, and the undo itself appears as its own row with who did it, so your records stay complete. A few limits:
Product cost updates already pushed to Shopify are not reversed - the corrected receive offers a fresh cost update instead.
Receipts on a closed order can't be undone while it is closed - use More actions → Reopen first, then undo the receipt.
Receipts imported from Stocky can't be undone - their inventory never moved through Stockroom.
Sending stock back to a supplier
Undoing a receipt is for a delivery that was recorded wrongly - it rewrites your records as though it never happened that way. When the goods genuinely arrived and now have to go back, that is a supplier return: its own document, which ships the stock out of Shopify under a reason and tracks the credit your supplier owes you. On a purchase order with a recorded receipt, More actions and Create return starts one prefilled with what arrived. See Return stock to a supplier.
Dropship orders: Mark as delivered
On a purchase order that ships straight to your customer (a Ships to customer badge sits next to its status), the two buttons read Mark as delivered and Mark all delivered instead. The card works exactly the same - quantities, costs, partial deliveries - but there's no location picker and your Shopify inventory never changes: the goods went to your customer, not to you. When everything's in, the order's status reads Delivered. See Dropship purchase orders: ship straight to your customer.
Good to know
Click a product image to see it full size - on the purchase order and in the receiving card, the small thumbnail beside each product opens the full picture, so you can check what should be in the box without opening Shopify. Variants with their own image in Shopify show that image - so on a colour run you see the exact colour you ordered, not just the product's main photo.
Print labels as you receive - from a receipt in the PO's History card, print one label per unit that arrived. See Print barcode and price labels.
After a PO is ordered, its lines are locked - you can still edit the Reference, PO number, Notes, Expected arrival, and Payment due, but not the products or quantities. This keeps your receiving history accurate against what was actually ordered. You can still Add items to an ordered PO, and cancel a line's unreceived remainder with Cancel remaining.
Payment due fills itself in - when a purchase order is marked ordered without a due date, Stockroom derives one from the supplier's payment terms (Net 30 dates it 30 days out; "due on receipt" dates it same day). It's a prefill, not a lock - edit it any time.
Supplier didn't ship everything and never will? Receive what arrived, then cancel the rest - see When the rest isn't coming above. Cancelled items stop counting toward the order total and no longer show as incoming in Shopify.
Receiving into a location that has never held the item is fine - Stockroom stocks the item at that location as it receives, so a new store or warehouse can take its first delivery without any setup in Shopify first.
Imported the order from Stocky? Receiving updates your available stock as usual, and Stockroom also clears Stocky's leftover "incoming" entry for the items you receive - so nothing lingers in Shopify. If an order you received earlier still shows a leftover incoming amount, that's Stocky's original entry from before this worked automatically - contact support and we'll clear it for you.
Using MyWorks Sync? Receiving is the moment your purchase order becomes a real cost - connect MyWorks to send POs and bills to QuickBooks automatically.






