A cosmetic batch record is the written history of one batch: which version of the master formula it followed, every ingredient with its supplier lot and the weight actually used, who weighed it and who checked, each step with its checks and results, the batch code on the finished product, the yield against what the formula should have made, and who released it. Filled in as the batch is made, it's what lets you answer a customer's complaint about one jar, a retailer's questionnaire, or a supplier's recall notice. Below is what it should include, a body butter batch filled in, and a free Excel template that works out the targets and the yield.
The short version
- Start from a master formula with a version number. The batch record copies it and records what really happened.
- Every ingredient line: the supplier's lot, the target weight, the actual weight, and two sets of initials.
- Every step: the check, the limit, the result, the time, the initials.
- Count what you filled against what the formula should make. A low yield is a question, not a rounding error.
- The batch code goes on every jar and on the record, so each points to the other.
- TaroStack takes each ingredient from its lot when you record the batch, and notes which. More below.
What FDA and MoCRA say
There are no FDA good manufacturing practice regulations for cosmetics yet. The Modernization of Cosmetics Regulation Act of 2022 (MoCRA) directs FDA to write them, and FDA's MoCRA page, current as of August 10, 2026, still points to its draft guidance and a listening session for GMP (FDA, MoCRA).
That draft guidance from 2013 is the best description of what FDA expects in the meantime. It's nonbinding, and it says batch production records should document every ingredient added (name, code, lot number and quantity), every production step from processing to filling, in-process sampling and adjustments, the batch and finished product lot numbers, and whether the finished product was accepted or rejected. It also recommends that a second person review the weighing of raw materials and the finished yield, that the theoretical yield be compared with the actual yield, and that every finished package carry a unique lot number (FDA draft guidance).
Small businesses, those with average annual US cosmetic sales under $1,000,000 over the previous three years, adjusted for inflation, are exempt from MoCRA's registration and listing, and FDA's MoCRA page says from its GMP requirements too, unless they make certain products, such as ones that regularly touch the eye's mucous membrane, are injected or are meant for internal use (FDA guidance). Exempt or not, a batch record is how you'd connect a reaction or a complaint to the batch behind it, and retailers ask for them regardless. This is general information, not legal advice; FDA's current position has the last word.
The master formula
The example is a whipped body butter, made up for this article. The master formula, version 2:
| Ingredient | INCI name | % |
|---|---|---|
| Shea butter | Butyrospermum Parkii (Shea) Butter | 40% |
| Mango butter | Mangifera Indica (Mango) Seed Butter | 20% |
| Coconut oil | Cocos Nucifera (Coconut) Oil | 20% |
| Jojoba oil | Simmondsia Chinensis (Jojoba) Seed Oil | 15% |
| Arrowroot powder | Maranta Arundinacea Root Powder | 4% |
| Lavender essential oil | Lavandula Angustifolia (Lavender) Oil | 1% |
Batch size 4,000 g; fill weight 113 g (4 oz) per jar; so the formula should make 35 jars (4,000 ÷ 113 = 35.4, rounded down). Acceptable yield: 95% to 100%.
The batch record, filled in
Batch BB-260930-A, made September 30, 2026. Jordan weighed; Ana checked.
| Ingredient | Supplier lot | Target (g) | Actual (g) | Weighed | Checked | Within ±1%? |
|---|---|---|---|---|---|---|
| Shea butter | SB-0912 | 1,600 | 1,601 | JW | AR | OK |
| Mango butter | MB-0820 | 800 | 799 | JW | AR | OK |
| Coconut oil | CN-0905 | 800 | 802 | JW | AR | OK |
| Jojoba oil | JJ-0711 | 600 | 600 | JW | AR | OK |
| Arrowroot powder | AR-0605 | 160 | 160 | JW | AR | OK |
| Lavender essential oil | LAV-2291 | 40 | 40 | JW | AR | OK |
| Batch weight | 4,000 | 4,002 |
| Step | Check | Limit | Result | Time | Initials |
|---|---|---|---|---|---|
| Melt butters and oils | Temperature | 160 to 170°F | 165°F | 9:10 | JW |
| Cool | Until opaque at the edges | About 75°F | 74°F | 10:40 | JW |
| Add arrowroot and essential oil | Added and mixed | Both added | Yes | 10:45 | JW |
| Whip | Texture | Stiff peaks | Yes | 11:00 | JW |
| Fill | Fill weight, three jars | 113 g ± 3 | 114, 112, 113 | 11:30 | AR |
| Label | Batch code on every jar | BB-260930-A | Yes | 11:50 | AR |
And the end of the record:
| Theoretical jars | 35 |
| Jars filled and sellable | 33 |
| Yield | 94.3% |
| Within 95% to 100%? | No: deviation note below |
| Jars and lids, lot | J-0815 |
| Labels, lot | L-0902 |
| Released by | Owner, Oct 1 |
| Deviation note | One jar short of 95% (34 needed): whipped butter left in the bowl; scrape the bowl twice next time |
Every ingredient was on weight and every check passed, and the batch still came up short, because whipped butter clings to everything. That's what the yield line is for: 4,002 g went in and 33 jars of 113 g came out, so 273 g never reached a jar. That's nearly 7% of the batch, which is money, and nothing else on the record would have shown it. The note says what happened and what changes next time, and the owner released the 33 jars.
Get the template
Download the cosmetic batch record template. It has the master formula, with the INCI names, the batch size and the theoretical jars, and the batch record above, where the targets come from the formula, the ±1% check and the yield work themselves out, and the deviation question answers itself. It's an ordinary Excel file with no macros, it prints on one page, and it works in Google Sheets, LibreOffice and Numbers.
Target (g) ='Master formula'!C2 * $B$5
Within ±1%? =IF(ABS(D9-C9)<=C9*0.01, "OK", "CHECK")
Yield =jars filled / theoretical jars
How a master formula and a batch record differ, and why the first should change only by a new version, is in master batch record vs batch record. Batch codes for soap and skincare are in how to create batch numbers for soap.
Where this stops working
A batch record on paper or in a spreadsheet records the lots, but nothing else knows about them. The shea butter used here came from lot SB-0912, and if that supplier writes next month to say the lot was contaminated, the question is which batches used it, which jars of each are still on your shelf, and which shops have the rest. On paper that's an afternoon going through every batch sheet since the lot arrived, and then every invoice since each batch. And the yield lives only on the sheet, so a recipe that's always 5% short never shows up anywhere you'd notice.
How TaroStack does it
In TaroStack your master formula is a recipe, versioned, so batch BB-260930-A records that it followed v2. Recording a batch takes each ingredient from its lot, soonest expiry first unless you choose otherwise, and notes which lot it was and how much was used, without anyone copying lot numbers off a tub. The printable batch-record form carries your own checklist fields, the melt temperature, the fill weights, the initials, with a sign-off. And the 33 jars become a lot of their own, with the batch code on the label, so stock and the record agree.
Then the parts paper can't do. Shea butter lot SB-0912 is one recall report away from every batch it went into, every customer who received those jars, and what's still on your own shelves. TaroStack reads your own batch history to show whether a recipe really yields what it claims, so the body butter that always loses two jars to the bowl shows up before you've made twenty batches of it. And each batch is costed from what it actually used, as in the soap making cost calculator.
Lots, expiry and recalls are on every plan, from $49 a month; recipes and batch records are on Standard at $99. The first 30 days are free, and your formulas and ingredients import from a spreadsheet. If you'd like a hand setting up, ask, and we'll do it with you.
