Sell excess stock to trade customers through private, fenced offers rather than public discounts. Set a price floor from landed cost plus carrying cost, offer it first to buyers who already use that product, bundle it with fast movers, and add a minimum quantity and closing date. AI drafts the offers; you set the floor and approve each one.
The reason this protects list price is that nobody sees a new price, they see a deal with conditions. A customer who buys 20 bundles of a fast mover at list and gets slow ridge cap at a reduced rate has not been told the ridge cap is worth less. Everything below shows how to build those conditions in a spreadsheet, then turn each into an email in a few minutes.
What excess stock costs while it sits
Slow stock feels free because the money is already spent. It is not free. Each month it sits it ties up cash, takes shelf space, risks damage or expiry and needs counting. Your finance person may already have a carrying-cost rate, expressed as a percentage of stock value per month or year. If not, pick a conservative monthly figure and write it in the sheet, for example 2 percent of cost a month. Then the comparison is simple: a sale at cost plus 5 percent today beats a sale at full list price that may never come.
This is the number most distributors skip. Without it, every discount looks like a loss against list. With it, you see that holding 180 rolls bought at $78 a roll for another nine months costs around $2,500 in carrying cost, so a sale at $84 that earns $1,080 is the better result.
The spreadsheet: one row per slow line
Start from your stock report. You want, for every item that has not moved in a set period (say 120 days with no sales, or more than 12 months of stock at the current rate), these columns:
- SKU and description
- Quantity on hand and landed unit cost (purchase price plus freight and duties you paid)
- List price and current trade price tiers
- Last sale date and units sold in the last 12 months
- Months of cover (quantity on hand divided by average monthly sales)
- Minimum acceptable price (the floor), calculated below
- Pairs well with (a fast-moving SKU the same customers buy)
If your system cannot produce months of cover, ask ChatGPT or Claude to write the formula for your sheet. My guide to finding dead stock and slow movers with AI covers how to build that list from an export, so the steps below start from the point where you already have it.

The Complete Excel Course with AI Integration
From formulas and pivot tables to Power Query, DAX, VBA and AI with Copilot, ChatGPT and Claude — hands-on from the first lesson.
By Sagnik Bhattacharya and Virginia Thorn, Primetime Emmy Award winner
Buy nowWorked through: a roofing distributor with $30,840 of slow stock
This is an illustration. Say a roofing-materials distributor has three slow lines after a supplier changed a colour range and a product line sold more slowly than forecast.
| Line | On hand | Unit cost | List | Cost tied up | Months of cover |
|---|---|---|---|---|---|
| Ridge cap shingle bundle | 420 | $31.00 | $46.00 | $13,020 | 19 |
| Synthetic underlayment roll | 180 | $78.00 | $112.00 | $14,040 | 26 |
| 3-inch pipe boot flashing | 900 | $4.20 | $7.50 | $3,780 | 14 |
Total cost tied up: $30,840. At a carrying-cost assumption of 2 percent a month, that is $617 a month, or roughly $7,400 over a year. The floors come next. For this firm, the floor on a first round is cost plus 5 percent; that recovers the cash, covers handling and gives a small margin. Ridge cap floor: $32.55. Underlayment floor: $81.90. Pipe boot floor: $4.41.
Now the offers, each built around a different technique.
- Ridge cap bundled with a fast mover. Buyers of architectural shingles also need ridge cap. The distributor sells shingles at $38 a bundle against a $27 cost. Offer: buy 20 bundles of shingles at list ($760) and take 5 ridge cap bundles at $34 ($170). Total $930 against a list value of $990, a blended discount of 6.1 percent. Cost is $695, so margin is $235 (25.3 percent) against $295 at full list. List price stays unchanged on the invoice, and only the ridge cap line carries a lower figure.
- Underlayment by the pallet, collected. A pallet holds 30 rolls in this example, so there are six pallets. Offer to secondary accounts at $84 a roll, pallet quantities only, collected from the warehouse, no returns, offer open for 14 days. Revenue if all sell is 180 x $84 = $15,120 against $14,040 cost, a gross profit of $1,080. Compare that with about $2,500 of carrying cost if it sat nine more months.
- Pipe boots as a box add-on. Repackage into boxes of 25 at $5.20 a unit ($130 a box). 900 units make 36 boxes, revenue $4,680 against $3,780 cost. Offer one box as an add-on line on any roofing order over $1,500 as the "add this to your van" line. The order value gate protects the price on small orders.
Add those up and a full sell-through brings back about $34,080 of cash from three lines (ridge cap $14,280, underlayment $15,120, boots $4,680), with a small margin on each and none shown as a public price cut. The sheet columns for this are: offer type, offer price, minimum quantity, fences, offer close date, target segment, expected units, expected cash.
Segmenting buyers: who sees which offer
Different customers value different things, and the wrong person seeing the wrong offer is how list prices leak. A practical split of trade accounts into four groups, using your sales export:
- Core accounts. Buy often, pay on time, order your fast lines at list or close to it. Give them bundles that pull the slow line in alongside what they already buy. Never offer them a straight discount; it teaches them to wait.
- Category buyers. Bought the slow product, or its close relative, in the last 18 months. They know it and use it. They get the first direct offer, quantity-based.
- Occasional accounts. Order a few times a year, often at the point of need. Offer pallet-quantity or box-quantity deals with collection, because they have space and time and you save on delivery.
- Dormant accounts. No order in 12 months. A well-priced offer is a reason to reactivate them. Put a closing date on it and treat any order as a win beyond the clearance.
Give ChatGPT or Claude the sales export with customer IDs and no contact details, and use a prompt that states the rules. Customer names and emails are not needed at this stage; keep them out. If your customer list is messy, fix that first with a customer-records clean-up.
Below is a 24-month sales export, one row per order line: customer ID, date, SKU, category, quantity, net price.
Group each customer ID into one segment:
- Core: 8 or more orders in the last 12 months
- Category buyer: bought any SKU in the category "roofing underlayment" or "ridge" in the last 18 months, and is not core
- Occasional: 2 to 7 orders in the last 12 months, not in the other groups
- Dormant: no order in the last 12 months
Output: customer ID, segment, number of orders in 12 months, last order date, most-bought category. At the end give a count per segment and list any customer ID that fits two segments, with the one you chose and why.
Do not guess. If a column is missing for a customer, put "check".
An illustrative reply gives you a table and a count such as 38 core, 61 category buyers, 94 occasional, 140 dormant. What you check: the customers who fit two segments, and the top five core accounts by hand. The AI cannot know that one occasional account is a contractor about to start a large re-roofing job next month, so you move that one yourself.
Fences that keep the offer from becoming a price
Every private offer needs conditions that make it clear the deal is a one-off. Choose several:
- Minimum quantity: a pallet, a carton, or a number of units that a small buyer cannot reach.
- Collection: from the warehouse, which also removes your delivery cost.
- As-is terms: no returns and no warranty beyond what the manufacturer gives. Say it plainly.
- Closing date: 7 to 14 days, so the offer cannot be held up as a standing price.
- Named stock: state the batch or colour, so buyers know it is a specific lot and not a new product price.
- Pairing: a discount attached to buying a full-price line.
- Not for advertised resale: a sentence asking the buyer not to advertise the price.
A caution on supplier terms. Some supplier agreements and brand programmes restrict how you may price or advertise their products, and a bundle can fall within the rules. Check the agreement before you send anything, and ask a qualified adviser if you are unsure. A better route for some lines is to ask the supplier to take stock back or credit a rotation, which costs you nothing in list price.
Drafting the offer email with AI
Once segments and fences exist, the email is the easy part, and a good place to use AI because you can create five versions in a minute. Give it the facts and the voice, and tell it what not to say. The prompt below produces a message for the category-buyer segment on the underlayment.
Write a short email from a roofing-materials distributor to a trade customer who has bought synthetic underlayment from us before.
Facts, use only these:
- Product: synthetic underlayment, 10-square roll, discontinued colour grey
- Offer: $84 per roll, minimum one pallet (30 rolls), collected from our warehouse
- No returns; stock is as-is, manufacturer warranty applies as normal
- Offer closes Friday at 5 pm; first come, first served; 180 rolls in total
- Please do not advertise this price
Tone: plain, friendly, like one tradesperson writing to another. Under 120 words. Subject line under 50 characters. Use [first name] and [your name] as placeholders. Do not use the words "clearance", "fire sale" or "unbeatable".
An illustrative reply:
Subject: Grey underlayment, pallet price until Friday
Hi [first name],
We have 180 rolls of grey synthetic underlayment, the colour the maker has dropped, and we'd rather it went to people who use it. A full pallet (30 rolls) is $84 a roll, collected from the warehouse.
It's as-is, so no returns, and the manufacturer's warranty is unchanged. The offer closes Friday at 5 pm, or when the pallets are gone. Please keep the price between us.
Reply with the number of pallets and I'll hold them for you.
[your name]
What to fix before sending: check the "10-square roll" detail is true for your product, confirm the warranty line with your supplier, and ensure the closing day matches your calendar. AI sometimes polishes away a fence, such as "as-is", so read the final text against your fence list. See also setting up human review for AI work, which shows a light version of that check.
Bundles in other trades: three quick pictures
The same logic works wherever a distributor supplies trades. A few more cases, so you can see how a different product changes the fence.
- A cleaning-supplies distributor holds 1,200 bottles of a floor cleaner whose label changed. The bottles are sound but the old label confuses some buyers. Offer cleaning companies a case of 12 at 20 percent under case price, bundled with any order of microfibre cloths over $200. The label is mentioned openly in the offer so there is no complaint later.
- A pest-control wholesaler has bait stations close to their shelf-life limit. The offer goes only to accounts that use them often, with the date printed, 30 days to use them, and a clear no-return line. Date-limited stock is the strongest case for a clear closing date; stock past its date is usually unsaleable, so the cost of waiting is the whole value.
- A car-parts supplier has brake-pad sets for a model that garages rarely see now. Offer them to independent garages as a "workshop stock" lot of 10 sets at a fixed set price, with a note that fitting guidance is the garage's responsibility. Because the lot is mixed, price per set is low, but the lot price is high enough to protect the per-pad price on the catalogue.
When a discount leaked: a worked mistake
Here is an illustration of how it goes wrong. A distributor sent one email to its entire list with a headline "Pallets of underlayment at $84". Within two days a core customer rang to ask why the normal price was $112. The offer had gone to everyone, with no fence about quantity or collection, and nobody had thought about the core segment. Two big accounts wanted the lower price on their next order, and the distributor ended up giving it to keep the business.
The cost was bigger than the stock. It was an extra $28 a roll on the following three orders for those accounts. The fix was procedural: every offer now has a "who must not see this" line, sent only to a chosen list, with the price expressed against the lot rather than per roll. When you build your own sheet, add that "must not see" column.
Sequencing: three rounds over 60 days
Do not throw everything at the first email. A sensible order, with a check between each:
- Days 1 to 14: bundles for core accounts and direct offers to category buyers. Pitch at roughly cost plus 10 percent, which leaves room to come down to the floor in later rounds. Track units taken and which accounts bit.
- Days 15 to 35: collected-pallet offers to occasional accounts, plus a nudge to anyone who opened but did not reply. Floor price here, cost plus 5 percent.
- Days 36 to 60: dormant accounts and, if allowed, a sale through a separate liquidation channel or return to the supplier. If units remain at day 60, decide on write-down, donation or removal, whichever your adviser says is best for the accounts and for tax.
Tracking after each round is a two-minute job: units remaining, cash recovered, orders by segment. Paste the numbers into the AI and ask for a summary and a suggestion for the next round, then override its suggestion if your own knowledge says otherwise. The same sheet makes a good weekly ritual alongside your demand forecasts, so the pile does not return.
Pricing the discount for a mixed bundle
A quick sum helps when you have several lines and one blended price. Say a buyer takes 10 pallets of mixed stock: 4 of the underlayment, 3 of ridge cap and 3 of boots. Instead of agreeing a price for each, quote one lot price and check it against the sum of floors.
Underlayment: 4 pallets x 30 rolls x $81.90 floor = $9,828. Ridge cap: say 3 pallets of 56 bundles x $32.55 = $5,468 (rounded). Boots: three lots of 25 boxes would exceed stock, so use 3 x 100 units x $4.41 = $1,323. The sum of the floors is $16,619. A lot price of $17,500 clears the floor with a margin of about $880. If the buyer asks for $16,000, you know you are below the floor and can decide whether the gap is worth the cash. The floor does the arguing for you.
Ask the AI to build this as a spreadsheet with formulas: floor per line, quantity, line total, lot total and lot margin, plus a cell that turns red when the quoted price drops below the floor. Check the formulas by changing a number and watching the total move.
Answering the replies: objections you will hear and what to say
Offers bring replies, and the replies are where margin leaks. Prepare short answers in advance, and have AI draft variants in your voice, which you then keep in a text file.
- "Can you do $80?" Check the floor first. If $80 is below it, say the price is set by the lot, and offer a larger quantity at the same price instead of a lower price on the same quantity. Quantity is a trade you can afford, a lower floor is not.
- "Can you deliver?" Quote delivery at cost as a separate line. The offer price assumed collection, and mixing the two quietly gives away the saving you built in.
- "Is it faulty?" Be plain: nothing is wrong with the product, the maker changed the colour range. Honesty here prevents a returns argument later, and it costs nothing.
- "My other supplier gives me this for less." Thank them and let it go. Chasing a price below the floor turns clearance into a loss.
Keep a tiny tracker with one row per offer sent: customer ID, segment, date sent, reply, units taken, price agreed, floor check (yes or no). Ask the AI each Friday to summarise it into three lines: units cleared, cash recovered, any price that went below the floor. Seeing a "no" in the floor-check column is the signal to tighten the next round.
Four numbers that show the clearance did its job
Four numbers tell you whether the clearance did its job:
- Cash recovered against cost tied up, line by line.
- Full-price orders from core accounts in the four weeks after, compared with the four weeks before. If they fell, the offer leaked or taught buyers to wait.
- Customer replies that mention price. Any message asking "why is it cheaper for them" means a fence failed.
- Months of cover on the lines afterwards. If cover is still above 12 months, the buying side is the real issue, and your reorder rules need to change.
If you want help to set this up for your own stock and customer list, my AI implementation consultation includes mapping the slow-stock routine and handing over a version your team can run. Otherwise the sheet, the segment prompt and the email prompt above are enough to start with one product line this week.
Questions about clearing excess stock to trade buyers
How low can I price excess stock?
Set a floor from your own numbers: the landed cost of the item, plus the carrying cost you would pay for every further month it sits. Anything above that floor beats holding it. A common approach is cost plus a small margin for the first round, then the floor itself if units remain after 60 days.
Will private offers leak and hurt my list price?
They can, so build fences into the offer: a minimum quantity, collection from your warehouse, no returns, a closing date and a rule that the lot is not for resale under your brand. Ask buyers not to advertise it. Fences do not stop every leak, but they keep the offer from becoming a new price.
Can AI decide which customers get which offer?
It can group customers from your sales export using rules you give it, such as order frequency and category mix. It should not decide alone. Check the groups against what you know about each account, because a buyer who looks quiet in the data may be mid-project and about to order.
Should I check my supplier agreement first?
Yes. Some supplier agreements set a minimum advertised price or limit how you may discount their brand. Others allow stock rotation or return of slow lines. Read the terms before you send any offer, and ask a qualified adviser if the wording is unclear.
Further reads
- Best AI Inventory Tools for Small Retailers Compared — Software that flags slow stock before it becomes excess.
- How Small Shops Can Use AI to Forecast Stock and Reorder — Order smaller quantities next time so the pile does not return.
- Can AI Help a Small Shop Set Prices and Promotions? — Price promotions for a shop floor, a close cousin of trade offers.
- Replying to Trade Enquiries in 60 Seconds With AI — Handle the replies your offers will bring in.
- How to Sync Stock Across Shopify, Amazon and eBay Automatically — Stop overselling when clearance moves quickly.
- AI Bias in Small Business Decisions: Hiring, Pricing and Credit — Check that your segments and pricing treat customers fairly.
- Boutique Inventory Management: AI for Size Runs and Reorders — Size-run reorder rules, a worked AI forecast for one dress in two colours, and a markdown ladder with margin floors for a small boutique.
- Best AI Tool for Pricing Wholesale Goods: Chat Assistant or App? — Chat assistant plus a sheet, an inventory-system price list, or pricing software: the right pick depends mostly on how many SKUs you carry.
- Builders Merchant Software: Trade Accounts, Quotes and Where AI Fits — Buy trade-counter software for accounts, stock and pricing; use AI on the edges: emailed materials lists, statement chasing and stock queries.
- Is Cin7 ForesightAI Forecasting Worth It for a Small Maker? — A payback test for Cin7 ForesightAI: when it beats a spreadsheet forecast, a break-even price to bring to sales, and a backtest you can run first.
- Scrap Yard Software: Price Sheets, Weighbridge Tickets and Where AI Fits — Daily price sheet, ticket exports checked and turned into monthly statements, and buyer emails: where AI fits around a yard's scales and records.
- ABC Analysis for a Distributor: Rank SKUs and Customers With AI — Rank a distributor's SKUs and customers into A, B and C classes in a sheet, then attach a service rule to each class.
- AI Tools and AI Development: The Complete 2026 Guide — the AI hub, including every tutorial in the AI-for-business series.
Sources: general distribution and inventory-costing practice; no vendor pricing is quoted. Check your own supplier agreement and any tax or resale rules with a qualified adviser.