Buy, refurbish and resell laptops for profit
Used business laptops are cheap because most people cannot tell a worn-out one from a bargain. You can learn to in an afternoon. This is the full workflow: source cheap stock, test it with free tools and the real Windows commands, wipe the previous owner's data properly, price from real comps with a calculator that gives a straight go or no-go, then list and sell within the law. Margins are thin and it is work, so the numbers come first.
- A Windows 10 or 11 PC, and Python installed to run the calculator. New to the terminal? Start with Terminal survival kit
- Comfort checking drives and sending files to the Recycle Bin, as covered in Find the duplicate photos eating your space
- A small float to buy your first test machine, and a USB stick for wiping and reinstalling
- Download the kit: the profit calculator, the test and wipe checklist and the listing template
The model, and the honest margins
Before you buy anything, see what a thin deal looks like on paper. Most laptops you could buy are not worth buying.
The business is simple to describe. Buy a used laptop cheaply, make it work well and look presentable, wipe it, and sell it for more than the whole job cost you. The money is in the gap between a scruffy working machine and a clean, tested, warranted one. The sweet spot is ex-business laptops: Dell Latitude, Lenovo ThinkPad, HP EliteBook. They were built to last, bought in bulk, and come off lease in large numbers.
The reason this is work and not free money is that the costs stack up. The buy price is only the start. Then come parts, your time, postage both ways, packaging, and the selling platform's fee, which on a general marketplace is often more than a tenth of the sale price. The kit's profit calculator adds all of that up so you never guess. It is Python standard library only, so there is nothing to install beyond Python itself.
Run the calculatorpython laptop_profit.pyThe example built into it is a tatty but working ThinkPad bought for £55, given a £18 SSD and a £20 battery, with 2.5 hours of your time at £12 an hour, sold for £185 on a marketplace that charges 12.8% plus a fixed fee. Here is exactly what it prints:
Output==================================================== LAPTOP RESALE PROFIT CALCULATOR (example figures) ==================================================== MONEY OUT Buy price GBP 55.00 Parts (SSD/battery/RAM/etc.) GBP 38.00 Inbound postage GBP 0.00 Consumables GBP 6.00 Your time (2.5h @ GBP 12.00) GBP 30.00 Outbound postage GBP 5.49 Packaging GBP 0.00 Sale fees (12.8% + fixed) GBP 23.98 ------------------------------------------------ TOTAL COST GBP 158.47 THE SALE Sell price GBP 185.00 PROFIT GBP 26.53 Net margin 14.3% Break-even sale price GBP 154.58 RULE: NO-GO - profit GBP 26.53 is below your floor of GBP 40.00 - margin 14.3% is below your floor of 25.0% ====================================================Read that carefully, because it is the whole lesson in one screen. A sale that looks like a £130 win (185 minus 55) is really £26.53 once parts, time and fees are counted, and the calculator calls it NO-GO against a sensible floor of £40 profit and 25% margin. The break-even line says you lose money below £154.58. This is why you cannot pay much for stock: the fees and parts eat a deal that looked healthy.
To make this one work you would need to pay less for the machine, spend less on parts, or sell higher because the model genuinely commands it. Change the numbers at the bottom of the file to your own and run it again. A good habit: set your floors once (the
min_profitandmin_margin_pctlines) and let the tool say yes or no, so a tempting but thin deal gets a cold answer.TipCount your time at a real rate, even when you are starting out. A machine that takes four hours to fix for £30 profit is a worse use of an evening than it looks, and the calculator is the only place that truth shows up.
If it breaks'python' is not recognised + 1 more
'python' is not recognised
I want to compare several machines fast
Deal(...) block at the bottom of the file, paste a second one with different numbers, and print both. It is plain Python, so you can keep a short list of candidate buys and run them all at once.