Search the Linnworks order screens for as long as you like — there is no quote button. No proforma, no estimate, no "save this as a price offer and convert it later". Linnworks was built to pull orders in from channels and push them out the door, and quoting simply is not part of that pipeline. If you sell B2B, though, quotes are half the job. Here is what sellers actually do about it, what goes wrong with each workaround, and the clean way out.
Why Linnworks does not do quotes
It helps to understand the design intent. In Linnworks, everything revolves around the order lifecycle: an order arrives (from a channel or manual entry), sits in open orders, and gets processed when it is despatched. Every object in that pipeline is a real order with real stock implications. There is no lightweight "document" concept sitting alongside — no proforma invoice, no estimate, no draft that exists outside the stock and reporting engine.
That is fine for ecommerce, where nobody asks for a quote before buying a garden hose. It falls apart the moment a trade customer rings up and says "can you price me up 40 of these and 12 of those, and email it over so I can get it signed off?"
Workaround 1: the Word or Excel template
The most common answer. You keep a quotation template in Word or Excel, and every time someone asks for a quote you copy product names, SKUs and prices into it by hand, work out the VAT, and email it off.
It works, but the costs are real:
- Manual price lookups. Linnworks holds one retail price per SKU. If this customer gets trade pricing, you are looking that up somewhere else — a spreadsheet, an old email, memory.
- Typos become promises. A mistyped price on a quote is a price you are honour-bound to sell at. Every hand-keyed line is a chance to give margin away.
- No stock check. The template does not know your inventory. You quote 40 units, the customer accepts a week later, and you have 6 in stock.
- Nothing to convert. When the quote is accepted, you re-key the whole thing into Linnworks as a manual order. Every line, again.
Workaround 2: the dummy order
The other common approach: create a real open order in Linnworks, print or PDF the invoice, send that as the "quote", and park the order until the customer decides. This feels cleverer because the prices and SKUs come straight from your inventory. But it has sharp edges.
Stock side-effects
An open order is not a passive document. Depending on your configuration it will allocate or reserve stock, which means your available levels drop the moment you create the quote. Quote three customers for the same popular SKU and your channels can show it as low or out of stock while every unit still sits on the shelf. Multichannel sellers have lost real sales this way to quotes that were never accepted.
Housekeeping debt
Dummy orders that are never accepted have to be found and deleted, or they clog open orders forever and skew every open-order report and email digest you run. In practice someone forgets, and three months later you are auditing a pile of mystery orders trying to work out which were real. If the quote sits under a generic source, it also pollutes your channel reporting — see our guide on using sub-source to keep non-channel orders attributable.
The document looks wrong
Whatever template you use, the customer receives something labelled as an invoice or order confirmation for goods they have not agreed to buy. Accounts departments query it; some will even pay it by mistake. A quote should say quotation.
What a proper fix looks like
The requirements are not complicated, they just do not exist natively:
- Build a priced basket from your live Linnworks inventory — real SKUs, real stock levels, so you never quote what you cannot supply.
- Apply the right prices for that customer, not the single retail price Linnworks stores.
- Produce a clean, VAT-correct PDF that actually says "Quotation".
- Send it — without creating an order, so no stock is touched and nothing needs deleting later.
- When it is accepted, convert it to a real open order in one step instead of re-keying.
This is exactly what we built into Trade Order POS. You build the basket the same way you would build an order — barcode scan or live SKU search with real-time stock — and the app remembers what each customer paid last time, so trade pricing fills itself in. Then instead of submitting, you generate a tier-priced quotation PDF and download it or email it directly. No order is created, nothing is allocated, there is nothing to clean up. If the customer says yes, the same basket becomes a real Linnworks order with one click.
Practical tips whichever route you take
- Put an expiry date on every quote. Costs move. Thirty days is standard; shorter if your supply prices are volatile.
- Quote from live stock where you can. If you must use a template, at least check availability at quote time and note any long-lead items on the document.
- Record who asked. Linnworks has no customer database, so quote requests are easy to lose entirely — we cover that problem in building a customer lookup from your order history.
- If you do use dummy orders, tag them. A dedicated sub-source like QUOTE makes them findable and filterable, and gives you a fighting chance of purging the stale ones.
The honest summary
Linnworks is not going to grow a quoting module — it has been requested for years and it sits outside what the platform is for. Word templates are slow and error-prone; dummy orders quietly eat your available stock and your reporting. If quoting is an occasional thing, a disciplined template with an expiry date is fine. If trade customers ask you for prices every week, quoting deserves a tool that reads your live inventory and prices, and leaves your open orders alone until there is a real sale.
Trade Order POS produces tier-priced quotation PDFs straight from your live Linnworks stock — download or email them without creating an order, then convert to a real order when the customer says yes. Start a 14-day free trial at trade-pos.mcp-g.com.