Stockkeep
an inventory management and costing app for Shopify · by Stockroom Labs

Shopify records what you paid the supplier. Not what the stock cost you.

Freight, duty and handling arrive on a different invoice from the goods, so they never reach unit cost. Every margin you read is flattering. Stockkeep spreads those charges across the purchase order, averages them into the cost you carry, and keeps the history of every change.

Install from the Shopify App Store or read what it doesn’t do

Free to install, and the free plan doesn’t run out. Forecast is $25 a month and Pro is $49, each with a 14-day trial, so the costing half is yours either way and you only pay when you want the forecasting or the close on top. If you’d sooner ask something first, support@stockkeep.app reaches me and not a queue.

PO‑1042 · Nordwerk GmbH · received 14 Aug 2026
lineqtyunit freightlanded
Skillet 26 cm6014.206.1720.37
Enamel pot 4 L2031.0013.4844.48
$640.00 freight, allocated by each line’s share of value.
Skillet 26 cm · new weighted average
40 on hand @ 12.50
500.00
60 received @ 20.37
1,222.44
100 units
17.22 / unit
Shopify on its own would record 14.20.
Margin at $39.00 retail is 55.8%, not 63.6%.

What it does

Ten things. The first five are on Shopify’s own migration guide as reasons to go to the App Store; the rest are why you would pick this one.

  • 01

    Weighted-average cost

    Every receipt re-averages the cost you carry against what is already on the shelf, instead of overwriting it with the newest invoice. The average is taken against on-hand quantity rather than available, so units committed to unfulfilled orders still carry their weight.

    Switchable to last-cost if that is your convention.
  • 02

    Landed cost

    Enter freight, duty and handling once on the purchase order. Stockkeep allocates it across the lines by value or by weight, folds it into unit cost, and only then writes that cost to Shopify.

    Lines with no weight recorded take no share of a by-weight allocation.
  • 03

    Full-location stocktakes

    Count a whole location against on-hand, see each variance with the money attached to it, then post every adjustment in one action rather than editing variants one at a time.

  • 04

    Labels from the purchase order

    Code 128 barcode labels for the lines you just received, generated from the PO in front of you and laid out for a sheet, so the box gets labelled where it is opened.

  • 05

    A daily record of what the stock was worth

    One snapshot per location per day: quantity, unit cost, value. Shopify keeps no such history, so the question “what was this worth at the end of last month” has no answer until something starts writing it down.

    It starts the day you install. Nobody can sell you last year’s.
  • 06

    Supplier price check

    Your purchase order says what you expected to pay. Receiving records what the supplier actually invoiced. Stockkeep compares the two across every line you’ve received and totals the difference by supplier, so the extra 8% that crept onto the last three deliveries shows up as money instead of as a feeling.

    Nothing that reads your costs after the fact can do this, because the figure it would need is the one you wrote down before the goods arrived.
  • 07

    Reorder points

    How fast each product leaves the shelf, measured from your own daily snapshots, set against how long each supplier actually takes, measured from the orders you sent through the app. You get a reorder level for every variant and a list sorted by whatever runs out first, and each product says how much to order and can draft the purchase order in one click.

    The only part of the app that predicts rather than records.
  • 08

    Month-end close

    Pick two dates and you get the opening value, the closing value and the movement between them, read off the same daily snapshots rather than recalculated from today’s costs. Under that sits the evidence an accountant asks for next: when the last delivery of the period landed, and which orders were still in transit across the cut-off with the money still attached to them.

    Then you close it. A closed period’s figures stop moving, whatever anyone does to a cost afterwards, and the roll-forward behind them ties opening plus receipts, less what left the shelf, plus whatever the stocktakes corrected, back to the closing number — with the bit none of those explain shown as its own line rather than folded into the total. Reopening is allowed and it is recorded, so a filed figure that changed is visible instead of just different.

    The journal comes out in Xero’s shape or QuickBooks’, posted to your own account codes, so the month ends in your ledger rather than in a spreadsheet.

    Shopify’s cost field is a single editable number with no memory, so editing a cost silently changes what last month was worth. A snapshot taken on the day doesn’t.
  • 09

    A reason on every adjustment

    Shopify removed stock-adjustment reason codes in May 2026 and merchants went back to keeping the date, the SKU, the quantity and the reason in a spreadsheet next to it. Stockkeep asks for a reason on any counted line that disagrees with the system figure, and carries it through to the stocktake report and the close.

    Damaged, theft or loss, quality control, expired, found stock, transfer out, short ship, or a plain cycle-count correction.
  • 10

    Write-downs that survive an audit

    Stock that can’t be sold for what it cost gets carried at what it can be sold for, item by item, which is what the standards require and what editing the cost field does not achieve. Record the write-down with a reason and the closing valuation drops by exactly that. If the value comes back, the reversal is recorded as its own event and capped at the original cost, so the month that took the loss still shows it.

    Inventory is never written up. An unrealised gain on stock isn’t income, and recognising one is the fastest way to make every other figure inadmissible.

What it doesn’t do

Listed here rather than discovered in week three.

  • —

    No forecast on the first day

    Reorder points need roughly a week of daily snapshots before they mean anything, because the demand figure comes from the change in your own stock rather than from your order data. The app tells you how many days it has instead of showing you a number it can’t stand behind.

  • —

    No FIFO cost layers

    Weighted average is the basis, and it is one of the two that IAS 2 permits, so a valuation on it is a valuation your accountant can use. What the app cannot do is track individual cost layers and tell you which of them a particular unit came out of. If your filing needs FIFO specifically, this is the wrong tool and you should hear it now rather than at year end.

    Last cost is offered too, for pricing the next order. It isn’t an accounting basis and the app says so where you choose it.
  • —

    No transfers between locations

    Purchase orders receive into one location. Moving stock between them stays Shopify’s job.

  • —

    No live accounting sync

    The month-end close hands you a journal in Xero’s import shape or QuickBooks’, posted to your own account codes, and you import it. Nothing is pushed over an API and nothing reaches your ledger without you looking at it first, which is the right way round for a number that ends up on a return.

  • —

    No seats, roles or approval chains

    Anyone with access to your Shopify admin has access to Stockkeep. No user management, and the price is the same whether one person uses it or six.

Why it exists

Stocky, the inventory app Shopify gave Retail merchants for years, is being retired. Shopify’s migration guide covers purchase orders and receiving with native features. For weighted-average costing, landed cost, full-location stocktakes and label printing, it sends merchants to the App Store.

Stockkeep is those four things, plus a daily record of what the stock was worth, and nothing else. Being narrow is deliberate. Cost arithmetic is the part nobody notices is wrong until the stock is valued at year end.

Price

Free everything that records · no seat limits · no card · your data out any time

Free covers everything that records something that happened: purchase orders, receiving, weighted-average and landed cost, full-location stocktakes, barcode labels, the daily value record, the supplier price check, reasons on your stock adjustments, margin alerts on anything selling too thin, and a year of cost history. No seat limits, no card, and no trial running out underneath you.

Forecast is $25 a month, or $250 a year, and adds the demand forecast and reorder points, how much to order with a one-click draft purchase order, and a supplier scorecard. The history has no limit.

Pro is $49 a month, or $490 a year, and adds the month-end close with its roll-forward, write-downs and the journal export for Xero and QuickBooks, on top of everything in Forecast. Both start with a 14-day free trial, and billing goes through Shopify, so it appears on the Shopify bill you already pay.

Your accountant costs nothing either. Anyone with a Shopify staff account on the store can open the app and read the close themselves, on any plan, because charging per seat for the one person who actually reads a stock valuation would be a strange way to run this.

That first line is where the split comes from. Everything free is arithmetic about something that already happened, so it’s either right or it’s wrong and you can go and check it. A reorder point is a guess by construction, and a guess is worth paying for only when it’s built out of your own numbers rather than an industry average.

Lead time is where that shows. Most apps ask you to type in how long a supplier takes and then never ask again, so the number rots in a settings screen while the supplier drifts to three weeks. Stockkeep sent your purchase orders and recorded the deliveries, so it measures the gap per supplier from your own history, and when it’s got nothing to measure it says so on the row rather than inventing a figure.

The history keeps being written on the free plan either way. A shop that pays after eighteen months gets all eighteen back, because the limit is on reading it, not on recording it, and starting your series from the day you happened to pay would make the whole thing worth less.

The free plan isn’t a trial and it doesn’t expire. If you never want a forecast then don’t take one, because the costing half is the half that stops your margins being wrong, and that half stays free. Uninstall whenever; there is nothing to cancel.

What it can see

The permissions Stockkeep asks Shopify for, in full.

  • readsproducts and variants, SKUs, locations, inventory quantities, unit costs, units sold on recent orders
  • writesinventory quantities, inventory item costs, and stocking an item at the location you receive or count it into
  • nevercustomer names, emails and addresses, payments, checkout. Not requested, so not accessible