The message arrives on a Tuesday. A boutique that carries your bars forwards a note from a customer: the Rosemary Mint she bought in October has developed little orange freckles. The shop owner would like to know what happened — and whether the other bars sitting on her shelf are about to do the same thing.
Fair question. You have three tabs open, a bank statement, and a folder of pour-day photos. Somewhere in there is the answer to which batch was that, what oils went into it, and where did the rest of that batch end up. Forty minutes later you have a guess.
That is the moment the spreadsheet stops being free.
The short answer: keep the spreadsheet while most of this holds — stable recipes, oil prices that sit still, mostly direct sales (the five-point checklist below sets the exact bar). Move to inventory software once at least two of these three show up: one supplier invoice means editing the same number in several tabs, your stock column disagrees with your cure rack, or you cannot say which batch a bar came from without an evening of reconstruction. Soap runs into all three structurally, because the same oils sit in most of its recipes, bars are made weeks before they are sellable, and a bar is always a member of a specific pour.
Three numbers, and why soap is unusually good at breaking them
Every maker business runs on three numbers: what a unit costs, how many you can sell right now, and where each one came from. Plenty of crafts let you fudge all three for a long time. Soap tends not to, for reasons that have nothing to do with how organized you are.
Soap is shared-ingredient heavy — the same olive oil sits inside most of the recipes you make, so one price change is really a dozen price changes. It is time-delayed — a cold-process bar is made weeks before it is sellable, so "made" and "in stock" are two different facts that a single column cannot hold. And it is batch-defined — a bar is not a generic unit, it is a member of a specific pour, with specific supplier lots behind it.
A spreadsheet is very good at storing numbers and structurally incapable of linking them. Below is what that costs you, in each of the three cases, worked all the way through. The figures are illustrative — a two-pound-of-oils cold-process batch yielding nine bars — but the arithmetic is the arithmetic.
Number one: what a bar actually costs
Start with the batch everyone tracks correctly on their first try.
The batch, fully stacked
| Line | Amount | Rate | Cost |
|---|---|---|---|
| Olive oil (60%) | 19.2 oz | $0.28/oz | $5.38 |
| Coconut oil (25%) | 8.0 oz | $0.33/oz | $2.64 |
| Shea butter (15%) | 4.8 oz | $0.66/oz | $3.17 |
| Sodium hydroxide | 4.4 oz | $0.19/oz | $0.84 |
| Distilled water | 12.2 oz | — | $0.10 |
| Lavender essential oil | about 1 oz | — | $6.75 |
| Ingredients | — | — | $18.88 |
| Packaging (wrap + label) | 9 bars | $0.30 ea | $2.70 |
| Consumables (parchment, gloves, cups) | — | — | $0.75 |
| Labor | 1.5 hrs | $20/hr | $30.00 |
| Cure-rack space | 6 weeks | — | $1.50 |
| Equipment wear | — | — | $0.80 |
| Batch total | — | — | $54.63 |
An em dash in the Amount or Rate column means the line is a flat cost for the batch rather than something priced per unit.
Nine bars. Ingredients alone are $2.10 a bar. Fully loaded, each bar costs $6.07 — and if that ratio surprises you, it is worth sitting with for a minute. The oils are not what your soap costs. Your Saturday is.
Note also which single line is the biggest: the fragrance, at $6.75, outweighs any individual oil in the recipe. That is normal for soap, and it is why per-scent costing is not a nicety. Swap the lavender for a pricier specialty oil at $11.50 a batch and you have added $0.53 to every bar without changing anything else — which is fine if your price knows about it, and expensive if all your scents share one price.
Now move the olive oil
Your supplier's next invoice comes in higher, or you switch to a shipper whose freight lands differently, and olive oil goes from $0.28 to $0.36 an ounce. On this batch that is 19.2 × $0.08 = $1.54, or $0.17 a bar.
Seventeen cents. Easy to shrug at, which is exactly the problem, because it is not seventeen cents on one batch. Olive oil is in your unscented bar, your lavender, your rosemary mint, your oatmeal honey, your charcoal, and the seasonal one you only make in October. In a spreadsheet those are usually six blocks of cells, or six tabs, or — the honest version — three tabs and a couple of numbers you typed straight into a formula in 2024 when you were "just getting started."
You update the one you happened to be looking at. The other five keep quoting the old number. Over a two-thousand-bar year, that is $340 of real cost that never reached a single price tag, and it will not show up as a line item anywhere. It shows up as a year that felt busier than it was profitable.
The tell: if one supplier invoice means editing the same number in more than one place, your sheet is storing that fact repeatedly instead of storing it once.
The alternative is not a better spreadsheet. It is a system where olive oil is a single material with a cost history, every recipe references it, and changing the material's cost reprices every recipe that uses it, all at once, including the seasonal one you had forgotten about.
Number two: how many bars you can actually sell on Saturday
Here is the December market, and here is your sheet.
Your "Bars in stock" column says 47. It says 47 because you are diligent: every time you cut a batch, you add the bars. Four batches are in play.
| Batch | Poured | Bars | Cure-ready (pour + 28 days) | Sellable Dec 13? |
|---|---|---|---|---|
| Lavender A | Nov 8 | 9 | Dec 6 | Yes |
| Cedar Sage | Nov 22 | 18 | Dec 20 | No |
| Oatmeal Honey | Dec 1 | 9 | Dec 29 | No |
| Charcoal | Dec 6 | 11 | Jan 3 | No |
Nine. You have nine bars to sell, and a booth fee that assumed considerably more than nine.
The sheet was not wrong, exactly. It answered the question it was asked — how many bars exist — which is not the question you needed answered, which is how many bars can I put in a customer's hand on the 13th. In a craft where the thing is sellable the moment it is finished, those two questions have one answer. In cold-process soap they diverge for four to six weeks, on every batch.
There is a second, quieter version of the same problem: the bars change weight while they wait. A bar cut at 5.5 oz comes off the rack nearer 5.2 as water leaves it — our cost-per-bar calculator applies a 6% loss of total bar weight for cold process by default, adjustable to match your water discount and your rack.
Whatever number you settle on, check which weight it is a percentage of before you use it. Cure-loss figures get quoted against total bar weight in one place and water weight in another, and the two are not interchangeable — a slip like that is exactly what a spreadsheet will never catch for you. If your label carries a net weight, the number that matters is the one after the cure, not the one your scale showed on cutting day. A spreadsheet will happily store the cutting-day figure forever, because you told it a number once and it has no idea the bar has been quietly evaporating ever since.
The tell: if your stock column and your cure rack disagree on market morning, you do not have a counting problem. You have a two-states-in-one-column problem.
The fix is structural rather than clever. Curing bars are not sellable stock; they are work in progress sitting in a different place. Track the cure rack as its own location, move bars into sellable inventory when they are ready, and the number at the top of the screen becomes a number you can plan a market around. Multi-location tracking sounds like something a business with warehouses needs. It is really something anyone whose product waits needs.
Number three: which batch that bar came from
Back to Tuesday, and the freckled Rosemary Mint.
What you actually need is a chain that runs from this sale, to this batch, to these supplier lots, to every other bar from that batch and where each one went. Four links. Your spreadsheet has all four facts and none of the links.
Here is the batch behind Tuesday's email, as it looks when the chain exists. Rosemary Mint, batch RM-2609 — poured September 6, cure-ready October 4, a production-size pour rather than the nine-bar batch above — 42 bars. The oils came from a specific delivery: olive from the drum you opened in August, coconut from a case bought in July. Of those 42 bars, 12 went to the boutique on October 9, 24 sold at three markets, and 6 are still on your own shelf. One phone call now covers 12 bars, you know the two other markets where 24 more went out, and you know whether any other batch shared that August olive delivery.
And here is the spreadsheet version. Your sales tab has a row: Oct 12 — Rosemary Mint — qty 1 — boutique — $9.50. It does not know which pour that bar came from, because a bar in a spreadsheet is a quantity, not a thing. Your batch tab knows you poured Rosemary Mint on September 6 and again on October 25. Your purchase tab knows you bought olive oil twice that quarter. Joining those three tabs into an answer is a job for a database, and you are doing it by hand, on a Tuesday, badly.
This is not a compliance lecture — it is customer service arithmetic. Every hour spent reconstructing a batch history is an hour not spent making soap, and the reconstruction is least reliable exactly when you need it most: under time pressure, months after the fact, from records written by a version of you who was in a hurry.
The tell: if answering "which batch was this?" requires opening more than one tab, you are storing the pieces of an answer rather than the answer.
When the spreadsheet is genuinely the right answer
None of this makes spreadsheets bad. They are extraordinary tools, they are already open, and for a real set of soap businesses they are simply correct. Stay on the sheet if at least four of these five are true:
- One recipe family in a handful of scents, and the recipe is stable.
- Ingredient costs that rarely move, or a supplier you buy from twice a year.
- Direct sales only — markets and your own site, no consignment, no boutiques asking batch questions.
- A cure rack you can see from where you are standing, with dates written on masking tape.
- You genuinely do not mind the maintenance. Some people find the sheet soothing. That is a legitimate reason.
The trigger to switch is not a revenue number, and it is definitely not somebody on the internet telling you that real businesses use software. It is symptoms: the same number living in several places, a stock figure that argues with your rack, and a batch question you cannot answer without an archaeology dig. One of those is a nuisance. Two of them means the sheet has stopped saving you time and started charging you for the impression that it does.
What switching actually looks like
Less dramatic than it sounds. The parts of your spreadsheet worth keeping — your oils and their landed costs, your packaging, your recipes, your batch history — export to CSV, which is exactly what inventory software imports.
Inside Ardent Seller, the three problems above map to three specific things:
- Materials with cost lots. Every oil, lye order, fragrance, mica, wrap, and label is one item with the price you actually paid, per purchase. Recipes reference the material rather than copying its number, so a supplier increase reprices every bar that uses it — including the seasonal recipe you would have missed.
- Production runs that decrement and stamp. Pouring a batch draws down the oils, lye, and fragrance it consumed and stamps the run with a lot, so the finished bars carry their origin instead of becoming an anonymous quantity.
- Lot traceability from sale back to supplier. The chain in the RM-2609 example above is the ordinary state of things rather than a Tuesday evening project.
The sensible way to test any of this is in parallel. Rebuild one recipe family — pick the one you make most — and run it alongside your sheet for a few weeks. When the two agree on cost per bar and disagree on bars available, you will know which one has been telling you the truth. That experiment costs nothing but an evening on the free tier (plan details), and there is a broader, craft-neutral version of this comparison at spreadsheets vs. Ardent Seller if you want the general case.
You already know how to do this, incidentally. You do not make soap by eyeballing the lye — you weigh it, because the consequences of guessing are unpleasant and immediate. The consequences of guessing at cost per bar are just as real; they are only slower, and they arrive as a year that felt busy.
Weigh the business the way you weigh the batch. Start free, rebuild one recipe, and see which set of numbers you actually believe.
Related reading
- Soap Making Inventory Guide — The full version of the costing side: landed ingredient costs, what to record per batch, and how cure time ties up cash you have already spent.
- How to Calculate Lye for Soap Making — The arithmetic behind the batch above, worked oil by oil, including the four places the lye and water math quietly goes wrong.
- Spreadsheet Breakup — The craft-neutral version of this argument: the signs any maker business has outgrown Excel, the real switching costs, and how to choose what replaces it.
Free resources
Free companion downloads if you want to put any of this into practice:
- Soap Batch & Cure Log — A printable batch record and cure-rack log with the cure-ready rule (date made + cure days), which is the paper version of fixing number two above.
- Soap Maker's Cost-Per-Bar Calculator — Rebuild the batch table above with your own oils and fragrance loads; it auto-calculates lye from SAP values and bakes cure loss into the bar count.
- Spreadsheet vs Inventory Software: The Decision Guide — A self-assessment scorecard and migration checklist, for deciding on evidence rather than on how the sheet made you feel last Tuesday.
This article is provided for educational purposes only and does not constitute financial, tax, or business advice. Cost structures, pricing examples, and margin figures are illustrative and will vary by your specific circumstances. Consult a qualified accountant or small-business advisor before making financial decisions based on this content.
