Build or Buy Landed COGS and True Per-SKU Margin on Shopify?
Landed COGS and true per-SKU margin on Shopify is a CUSTOMIZE decision above $20M revenue: buy the receiving capture, build the allocation method. Stockroom records landed cost at receiving for free (5.0★, 43 reviews, verified Sep 2026), but no app allocates pick-pack labor or lets finance pick the method. Native Cost per item is static, and Stocky's allocation died on 2026-08-31. The allocation engine and margin model cost $15,000–$40,000 to build (Deploi estimate, illustrative).
Your profile — see how the verdict shifts
- Confidence
- Medium — Checked the four listings this market offers after Stocky's 2026-08-31 shutdown. Stockroom is the only one that states landed-cost capture at receiving, and it is free with 43 reviews (verified Sep 2026). Katana (4.2★, 131 reviews) and Craftybase (3.6★, 19 reviews) compute COGS from materials, labor and overhead without confirming freight or duty allocation; A2X posts COGS to the ledger and allocates nothing. Shopify's own profit-reports help page calls Cost per item static and sends merchants to an ERP or an app. Nothing found allocates pick-pack labor per SKU or lets finance choose weight, value or unit allocation, so the method is a build either way.
- Reference scenario
- $20M–$100M GMV · imports 30–200 purchase orders a month with freight, duty and broker invoices · 500–5,000 SKUs · NetSuite or QuickBooks Online ledger · agency dev bench
- As of
- September 2026
Decision at a Glance
| Your profile | Verdict | Why |
|---|---|---|
| Under $5M revenue | BUY | Install Stockroom (free, verified Sep 2026) to capture landed cost at receiving and let native Cost per item carry the result. A quarterly spreadsheet handles labor. Nothing at this size justifies a build. |
| $5M – $20M | BUY | Stockroom's receiving capture plus an accounting sync at $29–$115/month (verified Sep 2026) gets landed COGS into the ledger. Allocate pick-pack labor by hand each quarter until finance asks for a method it can defend. |
| $20M – $100M | CUSTOMIZE | The board-deck moment lives here: freight, duty and pick-pack labor need one finance-approved allocation method and a per-SKU margin view that no app produces. Buy the capture, build the method and the model. |
| $100M+ | BUILD | Your ERP already allocates landed cost on receipt. The missing piece is a per-SKU margin model that joins landed cost to fulfillment labor, outbound freight and returns, and that is a data build, not an app. |
What Landed COGS and true per-SKU margin Actually Drives
| Outcome | Impact | How it works |
|---|---|---|
| Data & insight | High | Per-SKU margin with freight, duty and labor allocated is the number that turns an assumed-profitable category into a known loss-leader, and every pricing, assortment and ad-spend decision downstream inherits it. |
| Revenue — indirect | High | True margin per SKU redirects promotions and ad spend toward products that earn contribution, and reprices or drops the heavy, cheap SKUs that never did. |
| Operational efficiency | Medium | Month-end close stops rebuilding the allocation spreadsheet; the engine applies the agreed method to every receipt and re-runs when a late freight invoice lands. |
| Retention & LTV | Low | Customers never see landed cost; the retention effect runs only through which products you keep stocking and promoting. |
Spend ceiling: Size the spend to the margin at stake, not to the tooling. An importer with 20–30% of landed cost sitting unallocated in opex is misreading margin on every SKU it sells. A $15,000–$40,000 build (Deploi estimate, illustrative) is cheap against one mispriced category; a $299/month MRP (verified Sep 2026) you use only for COGS is not.
What buying enables (top apps)
- + Landed-cost capture at receiving for free, with true-margin reporting per product, live this week (Stockroom, verified Sep 2026)
- + COGS posted to QuickBooks or Xero on a schedule, with a 30-day trial to validate the mapping (A2X, verified Sep 2026)
- + Materials, labor and overhead rolled into COGS for makers and assemblers without building a bill-of-materials model (Katana)
What building additionally unlocks
- + Pick-pack labor and outbound freight allocated to SKUs, which no app in the category does
- + One documented allocation method, versioned and auditable, that finance signs once and the engine applies to every receipt
- + A per-SKU margin dataset in your warehouse that joins landed cost to fees, discounts and returns, feeding pricing and ad-spend decisions
- + Landed unit cost written back to Cost per item, so Shopify's native profit reports agree with the ledger
Find Your Verdict in 3 Questions
Does finance need a documented, repeatable allocation method (weight, value or unit) it will sign off on for the board?
Yes: Go to question 2.
No: Your verdict: BUY — install Stockroom (free) to capture landed cost at receiving and keep pick-pack labor in a quarterly spreadsheet; revisit when a category's margin gets questioned.
Do pick-pack labor and outbound freight need to reach per-SKU margin, not just inbound freight and duty?
Yes: Your verdict: CUSTOMIZE — buy the receiving capture (Stockroom or your ERP) and build the allocation engine and per-SKU margin model; no app allocates labor.
No: Go to question 3.
Does an ERP such as NetSuite already allocate landed cost when stock is received?
Yes: Your verdict: BUILD — the ERP owns landed cost; build only the per-SKU margin dataset that joins it to fulfillment and returns data.
No: Your verdict: CUSTOMIZE — Stockroom captures receipts for free; build the allocation rules and write the result back to Cost per item so native reports agree with finance.
The TCC Scorecard — 12 Dimensions
TCC — Total Cost of Capability: what it actually costs to have this capability over three years, whichever way you get it. Each dimension is scored 0–5 for both paths. How we score →
| Dimension | Buy | Build | Why |
|---|---|---|---|
| Cost | |||
| Acquisition & implementation | Stockroom installs free in a day and Katana's Core tier starts at $299/month (verified Sep 2026); the allocation engine and margin model take 5–9 weeks (Deploi estimate, illustrative). | ||
| Recurring fees | The cheapest buy path is free plus a $29–$115/month ledger sync (verified Sep 2026); an MRP you keep only for COGS runs $299/month and up (verified Sep 2026); the build's recurring cost is upkeep. | ||
| Maintenance & upgrades | Apps carry their own upkeep; the build needs ~$2,500–$8,000/yr (Deploi estimate, illustrative) for API version bumps, new cost pools and duty-rate changes. | ||
| Switching & exit | App exports carry COGS by product but rarely the allocation inputs, so the method leaves with the vendor; a built engine's rules, ledger and write-back stay in your warehouse and in Shopify. | ||
| Risk | |||
| Vendor risk | Shopify itself killed Stocky on 2026-08-31, and the replacement most merchants are adopting is free with 43 reviews; a free-only app has no revenue line to guarantee its roadmap. | ||
| Security & compliance surface | Supplier costs and margins are commercially sensitive, not regulated; the risk is one more vendor holding your cost data versus one more pipeline your team has to secure. | ||
| Platform-deprecation exposure | Cost per item, purchase orders and inventory levels are stable Admin API objects; the app path already took one deprecation hit when Stocky shut down. | ||
| Value | |||
| Fit to requirement | Apps capture freight and duty at the purchase order; none allocates pick-pack labor or outbound freight, and none lets finance choose weight, value or unit allocation per cost pool. | ||
| Time to market | Receiving capture is live this week; a finance-grade allocation engine with a parallel-run quarter takes most of a quarter to trust. | ||
| Performance & scale | Neither path touches the storefront; at 5,000 SKUs and 200 receipts a month the difference is whether re-allocation after a late freight invoice is a button or a manual redo. | ||
| Data ownership & AI-readiness | True per-SKU margin is the input every pricing, assortment and ad-spend model wants; owned in your warehouse it feeds them directly, rented it is one export per question. | ||
| Focus & opportunity cost | The build is a finance-data project, not a storefront feature; it competes with other integration work on the same bench for 5–9 weeks. | ||
The App Landscape
| App | Status | Pricing | Best for |
|---|---|---|---|
| Stockroom — Purchase Orders | Live — 5.0★, 43 reviews; Built for Shopify; launched by MyWorks to replace Shopify's Stocky after the 2026-08-31 shutdown. Listing states it tracks landed costs at receiving and reports true margins on every product; free-only pricing and the young listing mean the freight and duty allocation rule is worth confirming on your own purchase orders before the close relies on it. | Free, no paid tiers listed (verified Sep 2026) | Replacing Stocky's receiving capture at zero license cost, especially under $20M |
| Katana Cloud Inventory | Live — Platform integration; no App Store listing. Every candidate handle tried returned a 404, including katana, katana-mrp, katana-cloud-inventory and katana-manufacturing-erp, so this is a platform with a Shopify connector rather than an installed app. Shopify is the only ecommerce integration available on the free plan, which tells you where its ecommerce focus sits. | Free up to 30 SKUs with unlimited users, integrations and locations; Core from $299/month including one inventory location, with additional locations billed separately; Advantage on custom pricing with an annual contract; the Manufacturing Management add-on covering routings and production cost tracking is $199/month extra, and the free plan includes 15 days of unlimited SKUs (verified Sep 2026) | Makers and assemblers who need a bill of materials anyway and want COGS to fall out of it |
| A2X Sync for QuickBooks & Xero | Live — 5.0★, 342 reviews; 30-day free trial. A general accounting sync that posts sales, fees and COGS to QuickBooks or Xero; it allocates nothing, so the COGS it posts is only as true as the cost-per-item you feed it. | Mini $29/month; Basic $45/month; Professional $79/month; Advanced $115/month (verified Sep 2026) | Getting the allocated COGS into the ledger cleanly once something else has allocated it |
| Shopify Cost per item and profit reports | Native — First-party: one static cost per variant. Shopify's own help page says the field contains static data, so profit reports are relevant to a specific point in time, and recommends running financial reports in an ERP or accounting system or through an App Store reporting app. No landed-cost allocation exists natively. | Included in every plan | Holding the landed unit cost once something else has calculated it; the write-back target |
| Allocation engine and per-SKU margin model (custom) | Build lane — A job that allocates freight, duty and broker invoices across a receipt's lines by weight, value or unit, allocates pick-pack labor and outbound freight to SKUs from your WMS or 3PL data, and produces a per-SKU margin dataset in your warehouse; optionally writes landed unit cost back to Cost per item so native reports agree with finance. | $15,000–$40,000 one-time plus ~15–20% a year in upkeep (Deploi estimate, illustrative) | Importers above $20M whose finance team needs a documented method and a margin view no app produces |
The Build Path
- Allocation engine on receipts: Freight, duty, brokerage and insurance invoices attach to a purchase-order receipt (from Stockroom or your ERP) and allocate across lines by weight, declared value, unit or a per-SKU duty rate. Every run stores its method and inputs, so finance can audit a unit cost back to the invoice.
- Fulfillment cost per order: Pick-pack labor, packaging and outbound freight from your WMS, 3PL invoices and labor logs allocate to orders, then to SKUs by units shipped. This is the cost pool no purchase-order app ever sees.
- Per-SKU margin dataset: Landed unit cost, fulfillment cost, payment fees, discounts and returns join per SKU per period in your warehouse (BigQuery, Snowflake or the ERP). This table is the board-deck view, and the input to pricing and ad-spend decisions.
- Optional: Cost per item write-back: The allocated landed unit cost updates Shopify's Cost per item through the Admin API for received quantities, so native profit reports stop disagreeing with the ledger. Version the change and keep the prior value.
- Effort band
- $15,000–$40,000 build — Deploi estimate (illustrative); lands in the $10–25K or $25–75K contact-form band depending on how many cost pools you allocate and whether you include the write-back
- Typical timeline
- 5–9 weeks (Deploi estimate, illustrative); run one full quarter in parallel with finance's spreadsheet before the board sees the new number
- Maintenance, honestly
- ~15–20% of build cost per year (Deploi estimate): roughly $2,500–$8,000/yr (Deploi estimate, illustrative) for API version bumps, new cost pools, duty-rate changes and a re-allocation path when freight invoices land late. There is no subscription line.
- What you own — and what you take on
- You own: the allocation rules, the audit trail, the margin dataset and the write-back. You take on: keeping freight, duty and labor inputs flowing every month, and the argument with finance about method, which is the whole point of the exercise.
3-Year Total Cost of Capability
| Buy (app path) | Build (custom path) | |
|---|---|---|
| Year 0 (setup) | $500–$2,500 (configuration and ledger mapping) | $15,000–$40,000 |
| Years 1–3 (recurring) | $1,600–$4,200 | $7,500–$24,000 (maintenance) |
| 3-year total | ≈$2,100–$6,700 | ≈$22,500–$64,000 |
- † All figures illustrative samples for the reference scenario — not quotes, not verified pricing.
- † Buy path: Stockroom free for receiving capture plus an accounting sync at the $45–$115/month tiers, with pick-pack labor still allocated by hand each quarter (that internal time is not costed here).
- † Build path: allocation engine, fulfillment cost per order and the per-SKU margin dataset, with Stockroom still doing receiving for free; three-year horizon.
What the Sticker Price Hides
On the buy path
- — Stockroom is free and 43 reviews young; confirm how it splits freight and duty across lines on your own purchase orders before the month-end close relies on the number
- — Katana's Core tier starts at $299/month and its add-ons stack to several hundred more (verified Sep 2026) for an MRP you only wanted for COGS
- — Accounting syncs post COGS to the ledger but never allocate it; the figure they sync is only as true as the cost-per-item you feed them
- — Pick-pack labor never enters any app in this category; it stays in opex, which is exactly how the loss-leader hid
On the build path
- — Method disputes with finance eat more calendar than the code; settle weight versus value versus unit per cost pool before sprint one
- — Freight and broker invoices arrive weeks after receipt; the engine needs a re-allocation path when the bill lands late
- — Cost per item write-back overwrites a field other apps read; version the change and keep the prior value
- — ~$2,500–$8,000/yr upkeep (Deploi estimate, illustrative)
What Merchants Say
Finance leads describe the same discovery: a category was profitable at supplier cost, then someone allocated inbound freight and duty per unit and the best-selling heavy SKU went negative.
The post-Stocky complaint shape: the replacement app receives stock fine, but its landed-cost figure differs from the spreadsheet and nobody can see which allocation rule it used.
If You Change Your Mind Later
If you bought and outgrow it
Stockroom stores purchase orders and landed costs in its own database; export what the free plan allows and reconcile it to your ledger before you switch. Katana and Craftybase exports carry COGS by product, not the allocation inputs, so the method leaves with the app. Cost per item values already written to Shopify stay yours.
If you built and want out
Nothing strands: the allocation rules, the audit trail and the margin dataset live in your warehouse, and landed unit costs sit in Shopify's Cost per item field. Any future ERP or app inherits clean history, which is the strongest argument for owning the method rather than renting the number.
When This Answer Changes
We're watching for:
- ▸ Shopify adding landed-cost allocation to native purchase-order receiving, or making Cost per item date-effective instead of static (neither exists as of September 2026)
- ▸ Stockroom passing 200 reviews or documenting its allocation rule, which would move the $5M–$20M band from app-plus-spreadsheet to app alone
- ▸ An app appearing that allocates pick-pack labor and outbound freight to SKUs (none found, September 2026)
Verdict change log:
- 2026-08-31Shopify's Stocky app shut down, taking first-party per-purchase-order landed-cost allocation with it (delisted 2026-02-02, hard sunset 2026-08-31). Stocky spread freight proportionally across line-item value; nothing native replaced it, and a cluster of young replacement listings appeared. That shutdown moved this decision from 'use Stocky' to build-versus-buy.
Common Questions
What does landed COGS include on a Shopify store?
Landed COGS is the supplier cost plus every expense to get a unit onto your shelf: inbound freight, duty, brokerage, insurance and receiving labor. Shopify's native Cost per item holds one static number per variant, so the allocation happens outside it. A finance-grade model adds pick-pack labor and outbound shipping to reach true per-SKU margin, and those two pools move a heavy, low-price SKU from 40% gross margin to a loss.
Which allocation method should finance use: weight, value or units?
Weight allocation fits freight, value allocation fits ad valorem duty and insurance, and per-unit allocation fits handling and receiving labor. Most importers land on a mixed method: freight by weight, duty by declared value, labor by units, applied receipt by receipt. Stocky spread freight by line-item value only, which is why heavy, cheap SKUs looked profitable until its 2026-08-31 shutdown forced a rethink. Document the choice once; the engine applies it to every receipt.
Can Stockroom replace Stocky for landed cost?
Stockroom replaces Stocky's receiving capture: the free app records purchase orders and landed costs at receiving and reports margins per product (5.0★, 43 reviews, verified Sep 2026). Stockroom does not allocate pick-pack labor or outbound freight, and the listing does not document which rule splits freight and duty across lines. Confirm the rule on three real purchase orders before finance relies on the number, and keep the spreadsheet running for one quarter.
Your Next Steps
If you're going with CUSTOMIZE(matches your selected profile)
- List every cost pool sitting in opex today: inbound freight, duty, brokerage, insurance, receiving labor, pick-pack labor, outbound freight
- Agree the allocation method per pool with finance (weight, declared value or units) and write it down before any code
- Install Stockroom or confirm your ERP's receiving capture, then attach three real purchase orders and check its split against the spreadsheet
- Build the allocation engine and the per-SKU margin dataset; run one quarter in parallel with finance's spreadsheet
- Switch on Cost per item write-back only after the parallel quarter reconciles
If you're going with BUY
- Install Stockroom (free) and record landed costs on every receipt from the next purchase order onward
- Pick an accounting sync tier that posts COGS to your ledger and validate the mapping inside the 30-day trial
- Allocate pick-pack labor by units shipped in a quarterly spreadsheet and book it as a COGS adjustment
- Diary a re-decision the first time a category's margin is challenged in a board deck
Official Docs & Sources
- Profit reports and the Cost per item field — Shopify Help Center
- GraphQL Admin API reference — shopify.dev
- Perform bulk operations with the GraphQL Admin API — shopify.dev
Official documentation linked for verification — our verdicts and estimates are our own.
Related Decisions
Build or Buy Receivables Aging and Collections on Shopify?
No Shopify app produces an AR aging report, and the specialist collections platforms sync from your ledger rather than from Shopify.
Build or Buy BOM and Production Scheduling on Shopify?
No Shopify app does BOMs or production runs. The decision is which MRP platform to connect, and how tightly to sync inventory truth.
Build or Buy Economic Nexus Threshold Monitoring on Shopify?
Shopify Tax already flags states at 80% of their nexus threshold. Nobody needs a monitoring app; what you pay for is registration and filing in each new state.
Build or Buy FX Exposure and Treasury Hedging on Shopify?
No Shopify app hedges currency risk, and Shopify Payments converts at checkout without ever measuring the exposure underneath.
Should You Build or Buy a PIM on Shopify?
PIM on Shopify is a scale decision: metafields cover most catalogs, PIM apps win at multi-channel breadth, custom pipelines at ERP-grade complexity.
Ready to know what every SKU really earns?
Buy the receiving capture, build the allocation method and the margin model finance will sign. We scope the cost pools, the rules and the write-back so the next board deck holds no surprises.
Contact us todayVerdict scored for the reference scenario above. Estimates are not quotes; app pricing carries its verification date and gets re-verified quarterly. Full scoring anchors: see the TCC methodology.
Read how we score these decisions (the TCC Framework). No affiliate links, no paid placement — no app vendor pays to appear here.