What Your Soap Actually Costs to Make
One cold-process loaf costed to the penny — oils, lye by SAP, fragrance — to a true per-bar cost, plus the cure as cash flow and lot records.
Ask a soap maker what a bar costs to make and you'll usually get a shrug and a guess. "A couple bucks?" The scale in the soap room knows the real answer — you weigh oils to the gram and run the lye by SAP math every single batch — but that precision rarely makes it out of the mixing bowl and onto a cost per bar. So let's do it. One real loaf, costed to the penny, plus the two things about soap that wreck a spreadsheet if you ignore them: the cure, and the lot number.
The loaf, weighed and priced
Here's a straightforward cold-process recipe built on 40 ounces of oils. Nothing fancy — the kind of four-oil batch that fills a 12-bar mold.
| Oil | Weight | Cost/oz | Cost |
|---|---|---|---|
| Olive oil | 18 oz | $0.30 | $5.40 |
| Coconut oil | 12 oz | $0.22 | $2.64 |
| Shea butter | 6 oz | $0.55 | $3.30 |
| Castor oil | 4 oz | $0.35 | $1.40 |
| Oils total | 40 oz | $12.74 |
Now the lye. You already run this number, but here's where it comes from: each oil has a saponification value — the ounces of lye it takes to turn one ounce of that oil into soap. Multiply each oil's weight by its SAP value, add them up, then trim for superfat so you're not left with raw lye in the bar.
- Olive: 18 × 0.134 = 2.412
- Coconut: 12 × 0.178 = 2.136
- Shea: 6 × 0.128 = 0.768
- Castor: 4 × 0.128 = 0.512
That's 5.828 ounces of lye at zero superfat. Run a 5% superfat and you multiply by 0.95, which lands you at 5.54 ounces. At 28 cents an ounce, that's $1.55 of sodium hydroxide.
Water's basically free — call it 15 ounces of distilled at about $0.12. The fragrance is where soap makers underestimate. A 5% fragrance load on 40 ounces of oils is 2 ounces of fragrance oil, and good fragrance runs $2 an ounce, so $4.00. A pinch of mica for color, $0.40.
Add it up and the batter itself costs:
| Component | Cost |
|---|---|
| Oils | $12.74 |
| Lye | $1.55 |
| Water | $0.12 |
| Fragrance | $4.00 |
| Mica | $0.40 |
| Batch soap cost | $18.81 |
Twelve bars out of the mold means $1.57 a bar in soap. But a bar you can't wrap isn't a bar you can sell, so add the packaging: a kraft band at $0.12, a printed ingredient label at $0.16, and a shrink sleeve at $0.10 — $0.38 a bar. That brings your true cost of goods to:
$1.57 + $0.38 = $1.95 a bar.
Not "a couple bucks." A dollar ninety-five, and now you know it instead of guessing.
One thing that stays off this number: your own time. Weighing, mixing, pouring, cutting, wrapping — that's real work and it matters for setting your price, but it never belongs in the cost of goods. Your labor as the owner isn't a material and it isn't a tax deduction. Price for it, sure. Just keep it out of the COGS line so your numbers stay honest at tax time.
When one oil price moves, the whole bar moves
Here's why costing a loaf once isn't enough: oil prices wander, and a soap recipe is a chain of weights, so a jump in one oil ripples straight through to the bar. Say olive oil climbs from $0.30 to $0.42 an ounce — not unusual over a bad harvest year. Your 18 ounces of olive now costs $7.56 instead of $5.40, so the batch soap cost rises from $18.81 to $20.97, and your per-bar soap cost goes from $1.57 to $1.75. That's an 18-cent jump you never made a decision about. On a $7 bar it's survivable; on a wholesale bar at $3.50 it eats a real slice of a thin margin.
This is the argument for pricing off a recipe that re-costs itself rather than a number you wrote on a sticky note in 2023. The SAP math for the lye doesn't change, but the oil costs do, and the bar's true cost quietly drifts with them. If your books pull each oil and the lye by weight at what you actually paid, a price change reprices the next loaf on its own — and you find out before the margin's gone, not after.
The superfat you paid for
Worth naming what that 5% superfat did to the money, because it's a real cost you chose. Superfatting means leaving a little oil unsaponified so the bar is gentler on skin — you used less lye than the oils could fully turn to soap. At zero superfat you'd have used 5.83 ounces of lye; at 5% you used 5.54. The lye difference is pennies. The real cost is the roughly 5% of your oils — about 2 ounces, or 60-some cents a batch — that stays as free oil in the bar instead of becoming more soap. That's a fair trade for a better bar, and most makers make it gladly. The point is only that it's a choice with a number attached, and now you can see the number instead of just following the recipe.
Retail, wholesale, and the per-bar floor
With a real $1.95 packaged cost, the channels sort themselves out fast:
| Channel | Price/bar | Over cost |
|---|---|---|
| Fair / Etsy retail | $8.00 | $6.05 |
| Wholesale (half retail) | $4.00 | $2.05 |
| Farmers-market 4-for | $6.25 | $4.30 |
Retail carries a healthy margin. Wholesale at $4 still clears the cost with room to fund the next batch — but only because the soap cost is genuinely low; if your fragrance or oils ran richer, that same $4 bar could dip under water. The per-bar floor is what tells you which deals are worth pouring for and which just buy you tired shoulders and a cured rack you gave away.
The cure is money on a shelf
Here's what a spreadsheet built for candles or cutting boards gets wrong about soap: the day you pour, you've spent $18.81, and you can't sell a single bar for four to six weeks. The loaf is real, it's on the rack, and it's worth nothing to your cash flow until the cure date passes. Soap sits in the exists-but-unsellable state longer than almost any craft.
Run the numbers on what that ties up. Say you sell about 60 bars a month and you want a month and a half of cure buffer so you never show up to market with an empty table. That means roughly 90 bars are always curing at any given moment. At $1.57 of soap cost each, that's:
90 × $1.57 = $141.30 in materials you've paid for, sitting on the rack, earning nothing yet.
That's not a loss — it's working capital, and every physical-product maker carries some. But soap's long cure makes it bigger and slower than most people plan for, and it changes two decisions:
Pricing. Your price has to fund the next batch before this batch sells. If you're pricing at "materials plus a little," you're financing your own inventory out of pocket and calling it profit. The cure is exactly why soap needs a real margin, not a thin one.
Reorder timing. This is the one that bites. If your next market is five weeks out and your rack is empty today, you're already too late to pour a full-cure batch for it. Soap makers have to buy oils and pour on a calendar that runs six weeks ahead of the selling calendar. Miss that window and you either show up short or sell an under-cured bar that won't last for the customer — which is worse.
MadeKeeper handles the cure as a hard date, not a suggestion. A batch you pour today shows as unsellable until its cure date, so your on-hand count reflects what you can actually sell this weekend, and a heads-up reminds you when a cure finishes or when it's time to start the next loaf for a market that's still six weeks off.
The lot number you'll be glad you kept
Nobody wants to think about a recall. But fragrance suppliers do reformulate and occasionally pull a lot, and once in a while a customer reports that a bar didn't sit right with their skin. When that happens, the question is simple and urgent: which bars came from that batch, and where did they go?
If your records are a shoebox, that question means tearing the house apart. If every loaf carries a lot number that ties the specific oils, lye, and fragrance batch to the bars you cut and then to the market or order where each bar went, you can answer it in a few minutes. Pull the lot, see which fragrance batch it used, see which customers or which market day got bars from it, and reach only those people.
This isn't about claiming you meet any particular rule — states differ on what soap and bath-and-body sellers are asked to keep, and the right move is to keep the records your own state asks for and let a straight answer speak for itself. But traceability from batch to bar to buyer is the kind of record that turns a bad phone call into a manageable afternoon instead of a panic. MadeKeeper builds the lot number in automatically: pour a batch, it gets a lot; sell a bar, the sale carries the lot back to the loaf it came from.
Why the per-bar number changes everything
Once you've got a real $1.95 a bar, the rest of your soap business gets clearer. You can see that a $7 bar at a fair carries a healthy margin and a $7 bar shipped free on Etsy might not, after fees and postage eat the difference. You can see whether a wholesale order at $3.50 a bar is worth pouring for or whether it just buys you tired shoulders. You can price a new recipe the day you formulate it, because the SAP math and the oil costs are already in front of you.
The scale already runs your soap room to the gram. Your books should match it. If you want to check the lye and superfat on a recipe before you cost it out, the free soap lye calculator runs the SAP math for any oil blend with nothing to sign up for. And if you want the batch, cure, and lot tracking to run themselves loaf after loaf, here's how MadeKeeper works for soap and bath-and-body makers.
You weighed everything to make the bar. Weigh what it made you, too.