← All posts
B2B wholesale · 13 May 2026 · 6 min read

Linnworks cost prices and margins: keeping the numbers honest

Every margin figure you will ever pull out of Linnworks is downstream of one field: the purchase price on each stock item. Get that field right and margin questions become arithmetic. Let it go stale and every report, every repricing decision and every trade quote is built on sand. Here is how to keep it honest, and what to do with it once it is.

The purchase price field, and what it is not

Each Linnworks stock item carries a single purchase (cost) price alongside its single retail price. It is worth being clear-eyed about the limits. It is one number — it does not track supplier price breaks, currency movements or landed cost components like freight and duty unless you bake them in yourself. And Linnworks has no built-in margin dashboard that watches this field per tier or per customer; margin work is something you assemble manually from cost price, or delegate to a tool that reads it.

Decide once what your cost price means — supplier invoice price, or fully landed cost including carriage and duty — and apply that definition everywhere. Mixing the two across your catalogue makes every margin comparison meaningless.

Cost price hygiene: a routine that actually sticks

Why margin visibility dies

Stale costs do not fail loudly. Your supplier raises prices 6% in January; the Linnworks purchase price keeps its old value; every margin you compute for the rest of the year is 6% too flattering. Nothing errors. Orders keep flowing. The rot only surfaces when the accounts do not match the reports — months later, unattributable.

It compounds for wholesalers, because trade prices are usually thinner than retail. A retail margin that quietly slips from 55% to 49% still pays the bills. A trade tier priced at cost-plus-25% that is really cost-plus-19% may be underwater once picking, packing and carriage are counted. The thinner the intended margin, the more a stale cost hurts.

Pricing from cost: the cost-up approach

Once the cost field is trustworthy, the most robust way to set selling prices — especially trade tiers — is to derive them from it. Cost-up means each price is cost multiplied by a markup: cost × 1.30 for your best distributors, cost × 1.55 for standard trade, and so on. The margin you intend is the margin you get, by construction, and a cost change tells you immediately which selling prices need to move.

The alternative is RRP-down — trade price as a discount off retail — which keeps your discount story tidy for customers but lets margin float wherever retail positioning takes it. Both are legitimate; the trade-offs are worth understanding properly, and we walk through them in wholesale price list formulas: cost-up vs RRP-down. Whichever you choose, apply a rounding rule at the end (.99, .95, .49) so derived prices look deliberate rather than computed.

The catch: Linnworks will not do this arithmetic for you. Natively, cost-up pricing means a spreadsheet full of formulas and a re-import every time costs move — with all the mapping risk that entails.

Finding SKUs sold below cost

Every catalogue of any size has a few. They get there by cost increases nobody repriced for, promotional prices nobody reverted, or import errors. A simple quarterly check catches them:

  1. Export SKU, retail price and purchase price from Linnworks.
  2. Add a margin column in your spreadsheet: (retail − cost) ÷ retail.
  3. Sort ascending. Anything negative is being sold below cost right now; anything under roughly 15% probably is too, once fees and carriage are counted.
  4. Repeat for each trade tier if you hold tier prices in extended properties — trade tiers sit closer to cost, so they cross the line first.

Run it quarterly and the list shrinks each time. The point is not the spreadsheet; it is that someone looks.

If you would rather the arithmetic ran itself, that is what we are building. B2B Price Tiers — coming very soon — reads your Linnworks cost prices and drives every trade tier from a cost-up (or RRP-down) formula with attractive rounding, recalculating when costs change and syncing every tier price back as native extended properties. £29.99/month, 14-day trial when live. Details at b2b-prices.mcp-g.com — register your interest and we will let you know the day it opens.

Ready to try it?

Two clicks gets you a hosted Linnworks MCP connected to Claude. Cancel anytime.

See the Linnworks MCP →