Spare Parts Pricing: Building Up From Landed Cost
Three customers, three prices, one part — and a margin nobody can compute because the landed cost was never calculated. How to price a parts business deliberately, and the one supplier-contract gap that means an invoice price is never checked against an agreed rate.
Parts pricing in Kenya is mostly done by markup on the invoice price, which is a defensible method with one problem: the invoice price is not the cost. On an imported container the cost is the invoice plus duty, plus clearing, plus transport from Mombasa, plus the demurrage nobody expected — and a 30% markup on the invoice can be a 12% margin on the actual cost, or a loss on a heavy item.
Which is why parts businesses regularly discover that their best-selling lines are their worst-performing ones.
Start from landed cost or do not start
Landed cost is the invoice plus everything it took to get the goods onto your shelf, spread across the shipment. It is the only number a markup should ever be applied to, and most parts dealers have never computed it because it requires attributing a single freight invoice across two hundred item lines.
A KES 1.2m container, landed
A 30% markup on invoice price on this container sells at KES 1,560,000 against a cost of KES 1,658,000 — a loss of nearly KES 100,000 across the shipment, on goods everyone believed carried a healthy margin. This is not a rounding error; it is the single most common structural pricing mistake in the import trade.
The allocation problem, and where the tooling stops
How you spread that KES 458,000 of additional cost across the shipment changes which lines look profitable. Two bases are available here — by value and by quantity — and each is wrong for a different kind of container.
| Basis | Right when | Wrong when |
|---|---|---|
| By value | The shipment is broadly similar goods, and cost tracks bulk reasonably well. | You have shipped one KES 200,000 ECU alongside a pallet of brake discs. The ECU absorbs freight it did not cause. |
| By quantity | Items are broadly similar in size and weight — pads, filters, bulbs. | You have 5,000 clips and 40 radiators. The clips absorb almost all the freight. |
| By weight or volume | Not available. This is the basis that would be correct for a mixed container. | — |
The absence of a weight or volume basis matters most on exactly the containers where it matters most — mixed shipments of heavy-and-cheap alongside light-and-expensive, which is what a parts container usually is. The practical answer is to allocate by value and manually adjust the handful of lines you know are distorted, which is imperfect and much better than a markup on invoice price.
One defect worth knowing about
Landed cost allocation resolves the batches for a purchase order through the most recent check-in for that order. So a container received in two deliveries can have the whole freight cost allocated against one of them. If you split-receive, allocate the cost after the final delivery rather than after the first, and check the resulting unit costs before you price anything.
Three customers, three prices
A parts business sells the same part to a walk-in retail customer, a garage on account, and a fleet on contract, at three different prices. That is correct commercial practice and it needs to be deliberate rather than remembered.
Where each customer type should sit
Fleet on contract
Volume, predictable, pays on time. Lowest margin per unit and the best cash cycle in the business.
Trade — garages on account
The core of most parts businesses. Margin is thinner and the risk is credit rather than price — which is a different problem entirely.
Trade — cash garages
Same discount logic without the credit risk. Should be priced better than an account customer, and usually is not.
Walk-in retail
Highest margin, lowest volume, and the customer least able to check your price. Treat that asymmetry carefully — it is also the customer most likely to tell everyone.
Emergency / after-hours
A legitimate premium for genuine availability. Also the price most likely to lose a relationship, so charge it deliberately or not at all.
The gap worth noticing: the cash garage should be cheaper than the account garage, because you are financing one and not the other. Almost nobody prices it that way, and it is free margin on the account side and a free incentive on the cash side.
What the system supports, and the gap that will annoy you
What AWRA OpsHub does today
- Landed cost on a purchase order, allocated across the shipment by value or by quantity, rolling into the item's weighted average cost.
- Weighted average cost as the single cost basis everywhere — POS margin, journal postings, valuation and reports all read the same number.
- A buying price and a markup percentage per item, so a default selling price can be derived.
- Customer accounts with credit limits, so trade pricing sits alongside credit control.
- Quotations with their own pricing, for contract and fleet work.
- Margin analytics on POS sales, computed against the same cost basis as everything else.
More we can add to your workspace
- A customer price list and a price tier. A per-customer or per-tier price is not a stored relationship — the price is set on the document. Trade discounting is therefore a discipline your counter staff keep, not a rule the system applies.
- A supplier contract or agreed price list, so an invoice price is never checked against a rate you negotiated. A supplier who quietly raises a price will not be caught by the system.
- Weight or volume allocation basis for landed cost.
- An FX inside landed cost — payment-date rate, weighted rate across staged payments or per-shipment variance.
- Re-costing of stock already sold when a landed cost arrives late, which is the normal case for demurrage.
- A choice of costing method, with a FIFO cost-flow engine alongside the weighted average that ships today.
The first two are the ones that will actually annoy a parts business. Until customer price tiers exist, a discount is a decision at the counter every time, which is where margin leaks; and until a supplier price list does, the check on your buying prices is somebody noticing, which is exactly the control that fails during a busy month.
Anything above that you need, we can build for you
Everything listed above as something we can add describes what ships in the standard product today — it is a starting point, not a limit on what AWRA OpsHub can do for your organisation. Kenya's eTIMS integration and its maintained payroll engine are both in the product because clients needed them and commissioned them; neither appeared by itself, and the same door is open for whatever you just read about. One qualification so this is worth what it claims: a small number of things on this blog we deliberately leave to a specialist rather than build — a statutory ledger we will not sign our name to, a rule that would decide a tax question for you, a clinical or member-funds record that belongs in a regulated system — and where that is true the post says so in those words. Everything else is a scope, a timeline and a price.
The operational work, which is what most commissions actually are
An extra approval stage in a chain that does not match the standard one, a custom field set on employees or assets that only your sector needs, an expiry that has to block an order rather than send an email, a report your board asks for in a shape nothing produces, or a scanner or weighbridge feeding the goods-in door. These are the commissions we are asked for most often and the smallest ones we quote — and unlike a revenue-authority pipeline, none of them waits on a regulator.
The module-shaped additions, which are the ones readers ask for most often
A price list with real discount authority, a customer-facing quotation that expires, a bill of materials or recipe costing, a staff advance that is issued, acquitted and chased, a member or unit ledger, a matching rule that holds a payment. Each of these is a build rather than a setting, and each has been quoted before — a bigger piece of work than a custom field, with a written spec and a date instead of a roadmap slide.
The report, document or pack nothing currently produces
The board pack in the shape your board actually asks for, a donor or funder layout, an invoice or receipt template carrying what your regulator or your customer expects, a dataset the report builder cannot reach yet. Usually the fastest thing on this list to deliver, because the data is already in the system.
Systems, rails and hardware you already run
The accounting package, CRM, online store, core banking or custom database you intend to keep — connected through our API so a fact is entered once and appears everywhere it is needed. Plus the physical edge: a scanner, a scale, a weighbridge or a till peripheral feeding the door it belongs to.
How it works: you describe the requirement, we return a written scope, timeline and cost, and once agreed it is built into your environment and maintained as part of the product. Nothing here waits on a regulator or a published specification, which is why operational builds are the ones we quote fastest. Tell us the requirement that would otherwise rule us out — that is a better first conversation than a demo.
Tell us what your operation needsWorking around the two gaps
What to do since the system will not do it
- Publish three price lists, on paper, at the counter. Retail, trade, fleet. Printed, dated, and visible. A discount then requires deviating from a published number, which is a much stronger control than remembering a policy.
- Put the customer tier in a custom field on the customer record. It does not price anything and it tells whoever is serving them which list applies, which is 80% of the benefit.
- Check three buying prices a week against your last purchase. Not all of them — three. A rotating spot check catches a creeping supplier faster than an annual review and takes four minutes.
- Re-derive selling prices after every container, not once a year. Landed cost moved, so the markup applied to the old cost is now a different margin.
- Allocate landed cost after the final delivery of a split shipment, and read the resulting unit costs before pricing anything from them.
Our take
Price from landed cost, not invoice price — a 38% landed uplift turns a 30% markup into a loss, and that is the ordinary case for an imported container rather than a bad one. Allocate by value and manually correct the lines you know are distorted, because the basis that would be right for a mixed container is not available. Then publish three printed price lists, since customer price tiers are not a stored rule here and a printed number is a better control than a remembered policy.
Know the landed cost before you set the price
Landed cost allocated across a shipment and rolled into one [weighted average cost](/glossary/weighted-average-cost) that every report, journal and margin figure reads — with the allocation bases and the missing customer price tier stated plainly.
See plans & pricingFrequently asked questions
Why is marking up the invoice price wrong?
Because the invoice is not the cost. On an imported container, duty, clearing, port charges, transport and any demurrage typically add 30–40% — so a 30% markup on invoice price can sell a container below what it cost you. It is the most common structural pricing mistake in the parts import trade, and it explains why businesses discover their best-selling lines are their worst-performing ones.
How should landed cost be allocated across a shipment?
By value when the goods are broadly similar, by quantity when items are similar in size and weight. Both are wrong for a mixed container of heavy-and-cheap alongside light-and-expensive, which is what a parts container usually is — and a weight or volume basis, which would be correct, is not available. Allocate by value and manually adjust the handful of lines you know are distorted.
Can we set different prices per customer?
Not as a stored rule. There is no customer price list and no price tier — the price is set on the document, so trade discounting is a discipline your counter staff keep rather than something the system applies. The practical answer is three printed, dated price lists at the counter and the customer's tier in a custom field on their record, so a discount means deviating from a published number.
Does the system check supplier invoice prices against agreed rates?
No. There is no supplier contract or agreed price list, so an invoice price is never checked against a rate you negotiated and a supplier who quietly raises a price will not be caught. Substitute a rotating spot check: three buying prices a week against your last purchase of the same item, which takes four minutes and catches creep faster than an annual review.
What happens if freight costs arrive after we have sold some of the stock?
There is no re-costing of stock already sold, so the late cost lands on what remains. Since demurrage and final clearing charges routinely arrive after the first sales, expect the recorded margin on early sales from a container to be flattering. Allocate as soon as the numbers are known, and treat pre-allocation margins on a new shipment as provisional.
Which customer should get the best price?
Fleet on contract, then trade on account, then trade paying cash, then walk-in retail — with one common error worth fixing: the cash garage should be cheaper than the account garage, because you are financing one and not the other. Almost nobody prices it that way, and correcting it is free margin on the account side and a free incentive on the cash side.