Dry Cleaning Price List Template: Build It With AI and Check Margins

Coding Liquids tutorial cover featuring Sagnik Bhattacharya for Dry Cleaning Price List Template: Build It With AI and Check Margins.
Coding Liquids tutorial cover featuring Sagnik Bhattacharya for Dry Cleaning Price List Template: Build It With AI and Check Margins.

Build a dry cleaning price list from your own costs, not from an AI's idea of a going rate. Time the hands-on minutes for each garment type, add materials and a share of overheads, then have the AI write the cost-per-item and margin formulas. Raise any line below target, and test bundles at their worst mix.

The AI has no way of knowing what your shop spends, so asking it for typical dry cleaning prices produces confident numbers with no connection to your rent, wages or machines. Its job here is clerical: structuring the garment list, writing the formulas, flagging weak rows and polishing the printed wording. The inputs, and the final arithmetic check, stay with you.

Follow me on Instagram@sagnikteaches

Everything below follows one illustrative shop: four production staff, about 1,450 items a week and thirteen garment lines. Every figure is a placeholder chosen to keep the sums easy to follow, so replace each one with your own before you trust a single price.

Connect on LinkedInSagnik Bhattacharya

List garment types the way your counter staff say them

Start with the list customers hear at the counter, not a catalogue copied from the internet. Each line needs five things: the name, the process (dry-clean, launder and press, wet-clean, or sent out to a specialist), the unit (per item, per pair, per panel), a category for the printed list, and a note on what makes it cost more. Split a line whenever the hands-on time differs by roughly a third. A plain dress and a beaded dress are different products, and so are a short jacket and a long wool coat. Price them together and the awkward ones lose money while the easy ones carry the bill.

Subscribe on YouTube@sagnikteaches

If you do not have a list yet, ask the AI for a first draft and then cut it down. It will happily produce sixty lines, and a counter list works best at thirty or fewer.

I run a small dry cleaning and laundry shop. Draft a garment-type list for a price sheet.
Group the lines into: everyday wear, formal wear, outerwear, household items, specialist work.
For each line give: the name as a customer would say it, the process (dry-clean, launder and
press, wet-clean, sent out), the unit (item, pair, panel, kg) and one reason it might need a
surcharge. Mark any line that needs specialist equipment or an outside cleaner.
Do not include prices. Keep it to 40 lines or fewer.

Then ask one question of every line the AI returns: did we handle one last month? A line nobody has brought in for thirty days becomes a surcharge note or a "by quotation" entry, not a priced row. Lines you outsource stay, because they carry the biggest dollar amounts and the easiest mistakes.

Cost one garment: minutes, materials and a share of the shop

Dividing a month's bills by the number of items treats a tie and a wedding gown alike. Cost by minutes instead, because time is what separates the cheap items from the expensive ones. Every garment uses hands-on time, a few cents to a few dollars of materials, and a slice of the overheads.

Step 1: time the hands-on minutes

Time ten of each main item with a stopwatch, or a start and stop stamp on the ticket, across sorting and tagging, spotting, loading and unloading, pressing or finishing, and bagging. Count the minutes a person is working on the garment, not the minutes a machine is running. Use the median of the ten, not the fastest. In the example a shirt comes out at 2.5 minutes and a two-piece suit at 11.

Step 2: turn wages into a cost per productive minute

Take the wage, add on-costs such as payroll charges and paid leave, then divide by the share of paid time that is genuinely spent on garments, because nobody works every minute of an hour. In the example, a $16.50 wage plus 20% on-costs is $19.80 per paid hour. If 75% of paid time is productive, a productive hour costs $26.40, which is $0.44 a minute.

Step 3: share the overheads over the productive minutes

Add up everything the shop pays whether or not a garment comes in, including a wage for yourself or your manager. Then divide by the productive minutes you expect to fill in a month.

Monthly overhead (illustrative)Amount
Rent$3,600
Utilities and steam$2,100
Machine finance and servicing$2,300
Insurance and licences$700
Software and card fees$1,000
Van and fuel$1,100
Manager or owner wage$3,200
Accountancy and other$1,840
Total$15,840

Four staff at 120 productive hours each is 28,800 minutes a month, so the overhead is $0.55 a minute. Labour at $0.44 plus overhead at $0.55 is $0.99, which the example rounds up to $1.00 a minute. One warning belongs in the sheet as a visible input: this only holds if the shop is as busy as planned. If you fill only 24,000 of those minutes, the same overheads cost $0.66 a minute, and every price in the list needs to rise.

Step 4: add materials, then an allowance for things going wrong

Materials are hangers, covers, tags, detergent and solvent top-ups. Work them out from supplier invoices: a month's consumables divided by items, then weighted up for bulky garments. The example uses $0.20 for a shirt, $0.55 for a suit and $2.30 for a double duvet, which also carries water and energy. Re-cleans, refunds and damage claims are a real cost too, so add a percentage. Take it from last quarter's log: re-cleans plus claims paid, divided by items processed. The example uses 3%. If you keep no log, the tutorial on damage claims and stain notes shows how to turn scrappy notes into one.

Cost build-up (illustrative)ShirtTwo-piece suit
Hands-on minutes2.511
Minutes at $1.00$2.50$11.00
Materials$0.20$0.55
Subtotal$2.70$11.55
Allowance at 3%$0.08$0.35
Cost per item$2.78$11.90

The sheet: columns, formulas and a margin flag

Put three inputs at the top of a Google Sheets or Excel file: cost per productive minute in B1 ($1.00), the allowance in B2 (3%) and your target margin in B3 (25%). Below them, one row per garment line, starting at row 5. Keep the sums in ordinary formulas. Sheets' =AI() function does not refresh on its own, so a price built from it can go stale without warning.

ColumnHoldsFilled by
A, BItem and processYou, from the garment list
CHands-on minutesYou, from the stopwatch
D, EMaterials, and any outsourced costYou, from invoices
FCost per itemFormula
GCurrent priceYou, from today's list
HMargin nowFormula
IPrice that hits the target marginFormula
JRAISE or OK flagFormula
KRounded price: up to the next 25 cents under $5, 50 cents up to $30, then $5Formula
Cost per item (F5):     =(C5*$B$1+D5+E5)*(1+$B$2)
Margin now (H5):        =(G5-F5)/G5
Price for target (I5):  =F5/(1-$B$3)
Flag (J5):              =IF(H5<$B$3,"RAISE","OK")
Rounded price (K5):     =IF(I5<5,ROUNDUP(I5*4,0)/4,IF(I5<=30,ROUNDUP(I5*2,0)/2,ROUNDUP(I5/5,0)*5))

Paste-ready header row and two sample rows:
Item,Process,Hands-on minutes,Materials,Outsourced,Cost per item,Current price,Margin now,Price for target,Flag,Rounded price
Shirt laundered on hanger,Launder and press,2.5,0.20,0,,3.50,,,,
Trousers,Dry-clean,4,0.25,0,,7.50,,,,

The line that causes the most quiet damage is column H. Margin is the share of the selling price you keep: (price minus cost) divided by price. Markup is the same gain divided by cost. They sound alike and they are not. The shirt costs $2.78. Add 25% to the cost and you charge $3.48, which keeps only 20% of the price. To keep 25% of the price you divide by 0.75 and charge $3.71, an increase of one third on cost. On a line that sells 700 times a week, those 23 cents are real money.

Prompt and output: ask for formulas, then audit them

You can type the formulas above yourself. The AI earns its place when the sheet is longer, when you want the layout done quickly or when you want a second pair of eyes. Spell out the margin definition in the prompt, because that is a common place for a model to drift. If you build in Google Sheets, the tutorial on Gemini in Google Sheets for pricing and margin formulas covers the in-sheet route.

Build a pricing sheet for a dry cleaner, for Google Sheets.
Inputs at the top, one per row: B1 cost per productive minute (labour plus overhead),
B2 re-clean and claims allowance as a percentage, B3 target margin as a percentage of the selling price.
Columns from row 5: A item, B process, C hands-on minutes, D materials, E outsourced cost,
F cost per item, G current price, H margin now, I price for target margin, J flag.
Rules: margin is (price - cost) / price, NOT markup on cost.
Cost per item = (minutes x B1 + materials + outsourced) x (1 + B2).
Flag a row RAISE when margin is below B3. Use absolute references for B1:B3 so I can copy down.
Show each formula once in plain text, then say which cells are inputs and which are formulas.
Leave my inputs blank. Do not invent any numbers.

Here is an illustrative reply, with the kind of slip worth looking for:

F5: =(C5*$B$1+D5+E5)*(1+$B$2)
H5: =(G5-F5)/F5
I5: =F5*(1+$B$3)
J5: =IF(H5<$B$3,"RAISE","OK")

F5 and J5 are right. H5 divides by cost, so it reports markup, and I5 grows the cost by the target instead of dividing by one minus the target. Together they make the sheet look healthy when it is not. With H5 as written, the shirt at $3.50 shows (3.50 minus 2.78) divided by 2.78, or 25.9%, and passes as OK against a 25% target. Its true margin is 20.5%. The fix is to replace the divisor in H5 with G5 and use =F5/(1-$B$3) in I5.

I'd do a three-row audit on any sheet an AI has built. Work one cheap row, one mid-priced row and one expensive row on a calculator, and compare. A difference of more than a cent means a formula is wrong, and it takes two minutes to find out.

What the margin check showed in the example shop

With a 25% target, four of the thirteen lines came out below it. The shop's overall weighted margin was 29.9%, which is why nobody had noticed: the healthy lines were carrying the weak ones. All costs below are calculated before rounding, so the cents can differ slightly if you multiply by hand. Prices are rounded up to the next 25 cents under $5, the next 50 cents up to $30, and the next $5 beyond that.

ItemMinutesCostPrice nowMargin nowPrice for 25%Decision
Shirt, laundered on hanger2.5$2.78$3.5020.5%$3.75Raise to $3.75
Trousers4$4.38$7.5041.6%$6.00Hold
Skirt, plain4$4.38$7.5041.6%$6.00Hold
Blouse, silk6$6.44$9.0028.5%$9.00Hold
Jacket or blazer7$7.57$9.5020.3%$10.50Raise to $10.50
Suit, two-piece11$11.90$17.0030.0%$16.00Hold
Dress, plain8$8.60$14.0038.6%$11.50Hold
Dress, beaded or sequinned15$15.96$14.00-14.0%$21.50Split out, $21.50
Coat, long wool12$12.82$16.0019.9%$17.50Raise to $17.50
Knitwear4.5$4.84$8.0039.5%$6.50Hold
Tie2$2.16$4.5051.9%$3.00Hold
Duvet, double10$12.67$24.0047.2%$17.00Hold
Wedding gown, specialist25$86.52$140.0038.2%$120.00Hold

The busiest line was the weakest. Shirts were 700 of the 1,456 weekly items at a 20.5% margin. The beaded dress was priced the same as a plain dress, so each one lost $1.96 once the shop's full cost was counted. Jackets and long coats sat just under target, which is how price lists drift: nobody reviewed them when wages rose.

Raising only the four weak lines adds up as follows, assuming volumes hold: shirts 700 x $0.25 = $175, jackets 130 x $1.00 = $130, coats 40 x $1.50 = $60 and beaded dresses 10 x $7.50 = $75. That is $440 a week, about $22,900 a year, and it lifts the overall margin from 29.9% to 32.7%. Lines that were already above target stay untouched, because the aim is to fix weak rows, not to push every price up.

Volumes will not hold perfectly, so test the shirt increase. A shirt's direct cost (labour and materials, with the allowance) is $1.34, leaving $2.16 of contribution at $3.50 and $2.41 at $3.75. The shop can lose 10.4% of its shirt volume, about 73 shirts a week, before it is worse off. If you would keep paying the same staff hours when shirts drop, labour is effectively fixed and the tolerance is closer to 7%. Either way, a 25-cent change is unlikely to cost one customer in ten.

One more point from the table. The beaded dress at $14 is still above its direct cost of $7.31, so it does help pay the rent. But it also uses 15 minutes of capacity that a shirt would fill at about $0.86 of contribution per minute, against about $0.45 for the dress. When the shop is full, rank lines by contribution per minute. When it is quiet, any line above direct cost is worth taking.

Check prices against the street without letting AI guess the market

Costs set your floor. What other cleaners charge sets a rough ceiling, and your positioning decides where you sit between them. Do the market part by hand and give the AI only the reading job: gather three or four competitors' published price lists as text or photos, and ask for a table.

Below are the price lists of three competing dry cleaners, pasted as text.
Extract only these items: shirt, trousers, jacket, two-piece suit, long coat.
Return a table with one column per cleaner. Mark any price shown as "from".
If an item is missing from a list, write "not listed". Do not estimate or fill gaps.
Item (illustrative)Cleaner ACleaner BCleaner CYour proposed price
Shirt$3.25$3.95$4.25$3.75
Trousers$7.00$7.50$8.25$7.50
Jacket$9.00$9.75$10.50$10.50
Suit, two-piece$15.50$17.00$18.50$17.00
Long coat$15.00$17.00$19.50$17.50

Shirts, trousers, suits and coats land inside the range, so the cost-based prices stand. The jacket sits at the top, level with Cleaner C. That is a decision for you, not the sheet: at $10.00 the jacket margin is 24.3%, within a point of target, and may be worth taking if jackets are what bring in new customers. Write the choice in a notes column so next year's version of you knows it was deliberate.

Bundles that clear the margin at their worst mix

A bundle is a discount with the customer choosing what it applies to, and customers choose the items that save them the most. The test is therefore not the average basket but the worst mix a customer could build. Set a floor for promotions below your list target, say 20% against 25%, and make every offer clear it at its worst eligible mix.

Take "any three garments for $19.50". Against the new list, three trousers or skirts would cost $22.50, so the saving looks like a tidy 13%. Here is what it does to margin, depending on what the customer brings. Costs come from the sheet before rounding.

Three items brought inCost to youList valueMargin at $19.50
Three trousers$13.13$22.5032.7%
Trousers, skirt, knitwear$13.60$23.0030.3%
Three knitwear$14.52$24.0025.5%
Three jackets$22.71$31.50-16.5%
Three long coats$38.47$52.50-97.3%

Three coats cost the shop nearly twice the bundle price. The fix is not to abandon the offer but to name the eligible items: "any three of trousers, skirts or knitwear for $19.50". The worst eligible mix is then three knitwear at 25.5%, comfortably above the 20% floor. For a five-shirt deal, the new list price is $18.75 for five, and $17.50 keeps a 20.5% margin. At $17.00 the margin falls to 18.2%, under the floor, so the deal does not go ahead at that price.

Ask the AI to run this for you, but give it the rule: "For each bundle, list every eligible combination, cost each from the sheet and report the worst margin." It handles the enumeration well. You still read the worst row and decide whether to cap, restrict or reprice. The wider arithmetic of bundle discounts is in the tutorial on pricing product bundles, which also suits any retail side of your shop.

Surcharges for the awkward garments

Some jobs add minutes that a base price does not cover. Cost each one from its extra time and price it at your target margin. A pleated skirt that needs three extra minutes of hand finishing costs 3 x $1.00 x 1.03 = $3.09, so the surcharge that holds a 25% margin is $3.09 divided by 0.75, about $4.12. Round up to $4.25. Same-day service works the same way: if re-sequencing the batch and extra handling take six minutes, the cost is $6.18 and the surcharge $8.24, rounded up to $8.50.

Those minutes are assumptions until you time them, so treat the first version as provisional. Heavy soiling and stain treatment are usually better quoted at the counter than printed, because the range is too wide. Print the surcharge lines you can cost and add "other work quoted on inspection" for the rest.

Turn the sheet into the printed list and a price-change notice

Keep the costing sheet private. What customers see is the price column, grouped by category, with plain wording about what changes a price. Ask the AI to turn the finished rows into a two-column list for Word or a design tool, and to rewrite any line that hides a condition. Here is a before and after from the example.

Before:  Dresses ............ 14.00
After:   Dresses, plain ........................ from $14.00
         Beaded, sequinned or heavily pleated .. from $21.50
         Final price confirmed at the counter on inspection.

Here is the full printed list for the example shop once the changes are made. This is the template to copy: categories, a price in one column and the conditions in plain words.

EVERYDAY WEAR
Shirt, laundered on hanger ............ $3.75
Trousers .............................. $7.50
Skirt, plain .......................... $7.50
Blouse, silk .......................... $9.00
Jacket or blazer ...................... $10.50
Knitwear .............................. $8.00
Tie ................................... $4.50

FORMAL WEAR AND OUTERWEAR
Suit, two-piece ....................... $17.00
Dress, plain .......................... from $14.00
Dress, beaded or sequinned ............ from $21.50
Coat, long wool ....................... $17.50

HOUSEHOLD AND SPECIALIST
Duvet, double ......................... $24.00
Wedding gown, specialist .............. from $140.00

EXTRAS
Pleats or heavy embellishment ......... add $4.25
Same-day service ...................... add $8.50

OFFERS
Any three of trousers, skirts or knitwear ... $19.50
Five shirts ............................ $17.50
Other work quoted on inspection. Final price confirmed at the counter.

Check whether your till or counter software can import a CSV of items and prices before you retype anything. If it can, the column names and limits are the vendor's own, so test with five rows first. If you are also moving orders and collections onto AI-assisted tools, the tutorial on orders and collections for dry cleaners covers that side.

For the price change itself, give customers notice and a reason in plain words. An illustrative notice, with the brackets for you to fill:

From [date], a few of our prices are changing. Shirts move to $3.75 and jackets to $10.50;
most other items stay exactly as they are. We check every price against what the item costs
us to clean, and these were the lines that had slipped behind. Questions? Ask at the counter
or call [shop phone number]. Thank you for using [shop name].

How to tell the new prices are working

Give the change four to six weeks, then compare against the baseline you wrote down before it. Look at four numbers: volume on each raised line, average ticket value, re-clean rate and the count of price complaints at the counter. If a raised line lost more than the break-even share you calculated, the market has told you something, and you can step the price back or hold the new one for loyal customers only.

The error most likely to survive is a missing stage in the minutes. Say the stopwatch run for shirts timed only the press and left out sorting and bagging. The sheet then says 2.5 minutes when the real figure is closer to 3.5. You would find it by multiplying minutes by weekly volume and comparing the total with the productive hours you pay for. In the example, four staff at 120 productive hours a month is about 111 hours a week, and the model needs 112. If the shirt time were really 3.5 minutes, the model would need about 124 hours, and the gap would show up as overtime or a growing queue. When the hours you pay for run more than about 10% away from the modelled minutes, a stage is missing or the staffing plan is wrong.

Re-time any line that surprised you rather than the whole sheet, and keep a dated copy of every version. The same sheet then answers the question owners usually ask a year later: which cost moved, and did the price follow it? Once the list is live, the tutorial on checking margins product by product shows how to repeat the audit on any other product line you sell.

Questions dry cleaners ask before changing prices

What margin should a dry cleaner aim for?

There is no honest universal figure, because shops differ in rent, wages and machines. Work out your fully loaded cost per item, then set the target a few points above the net margin in last year's accounts. The 25% used in this tutorial is a placeholder. Ask your accountant which margin your business needs after paying the owner.

Can AI tell me what competitors charge?

Not reliably. A chatbot asked for going rates will produce plausible numbers that nobody published. Collect competitors' own price lists yourself, as text or photos, and ask the AI only to read them into a table. That gives you a ceiling to compare against, while your own costs set the floor.

Should I price dry cleaning by item or by weight?

By item, for garments that need individual handling, because a tie and a coat take very different amounts of time. By weight suits wash-and-fold, where handling time grows with the load. If you sell both, keep them on separate sheets with their own cost per minute and their own margin check.

How often should I update the price list?

Re-run the sheet whenever a big cost moves, such as a wage rise, a new lease or a supplier increase, and at least twice a year even if nothing seems to have changed. Keep each dated version, and tell customers about increases before they take effect. An AI can draft that notice in a couple of minutes.

Further reads

Sources: the worked figures are illustrative placeholders, not benchmarks. Margin and markup follow standard accounting definitions. Google's spreadsheet function list was checked for the functions named, and the note on manual refresh comes from Google's help page on the AI function in Sheets.

Want your price sheet and counter workflow mapped?

On a 1:1 call we'll look at how you price today, check whether a sheet like this fits the tools you already run, and pick the one counter or pricing job worth automating first.

Book a 1:1 call with me