To track ingredient lots at receiving, write down, for every delivery, the supplier, the date, what it is, how much, and the lot code printed on the case, or give it your own code if there isn't one, and put that code on the case before it goes on the shelf. Then, when you make a batch, write down which of those lots went in. That's the whole system: one line at the door and one line at the mixer. Without the first, a supplier's recall is a guess. Below is what to record, where the codes hide, what the federal rules ask, and a week worked through.
The short version
- Record every delivery: supplier, date, product, quantity and packaging, and the supplier's lot code.
- No code on the case? Make your own (supplier initial plus the date) and write it on the case in marker.
- Keep each lot on the shelf in its own place, oldest date in front.
- At every batch, write down the lot of each ingredient used, including when one batch takes from two lots.
- In TaroStack, scanning the supplier's case label fills in the lot and the date for you. More below.
What to write down for each delivery
| Field | Example |
|---|---|
| Date received | Sep 22, 2026 |
| Supplier, with address and phone (once, on a supplier list) | The flour supplier |
| Product, specific enough to tell apart | Bread flour, 50 lb bag, the mill's brand |
| Quantity and how it's packed | 2 bags of 50 lb |
| Lot code | 2609-114 |
| Use-by or best-by date | Mar 15, 2027 |
| Received by | AR |
These aren't arbitrary. Under the federal rule that covers most US food manufacturers, processors, packers and distributors, the records for food you receive include the previous source's name, address and phone, a description specific enough to include brand and variety ("brand x cheddar cheese, not just cheese"), the date received, the quantity and how it's packed, and, for anyone who manufactures, processes or packs food, the lot or code number "to the extent this information exists" (21 CFR 1.337). And for what you make and ship, your records must include "information reasonably available to you to identify the specific source of each ingredient used to make every lot of finished product" (21 CFR 1.345). Recording the lot at the door is how you have that information.
Some businesses are excluded: farms, restaurants, and retail food establishments with 10 or fewer full-time-equivalent employees, among others (21 CFR 1.327). The records are kept for 6 months for food that spoils within 60 days, 1 year for food that lasts 60 days to 6 months, and 2 years for food that keeps longer than that, including frozen, dried and canned food (21 CFR 1.360).
Foods on FDA's Food Traceability List need more than this under FSMA 204; that's covered, with a template, in the food traceability Excel template. FDA has proposed moving that rule's compliance date to July 20, 2028, and Congress directed it not to enforce the rule before then; FDA says it will comply.
This is general information, not legal advice; your inspector has the last word.
Where the lot code hides
Look for these, roughly in this order:
- A printed or stamped line on the case or bag, often after "LOT", "L" or "BATCH".
- A barcode label on the case with numbers in brackets. In a GS1-128 barcode, the number after (10) is the batch or
lot, after (17) the use-by date and after (15) the best-by date, written year, month, day (GS1's
application identifiers). So
(17)270315(10)2609-114means lot 2609-114, use by March 15, - A code near the date that looks like a jumble of digits, which is often a Julian date (day of the year) plus a plant or line number. Your supplier can tell you how to read theirs.
- Nothing at all, which is common with farm produce, eggs from a small farm, and anything repacked. Make your own code: supplier initial plus the date received (TR-0922-F for taro from the farm on September 22).
Write the code on the case in big marker if it's small or hidden, so the person reaching for it at 5 a.m. can see it. How to create lot numbers covers codes for what you make.
A week, worked through
Windward Roots, the made-up taro business I use in these examples, received four things on Tuesday, September 22:
| Item | Lot recorded | Where it came from |
|---|---|---|
| Bread flour, 2 bags | 2609-114 | Printed on the bag |
| Coconut milk, case of 24 | CM61507 | Case label: (10)CM61507 |
| Eggs, 15 dozen | E-0922 | No code on the case: made up from the date |
| Taro, 40 lb from the farm | TR-0922-F | No code: made up from the supplier and date |
On Wednesday, Ana makes a batch of taro sweet bread. The recipe takes 26.5 lb of flour, and the last bag of the previous delivery, lot 2608-207, has only 12 lb left, so the batch takes 12 lb from 2608-207 and 14.5 lb from the new 2609-114. The batch sheet gets both lot codes. That's the step people skip, because writing one code feels like enough, and it's the one that matters.
Three weeks later the mill recalls lot 2608-207. The receiving log says it arrived on September 8. The batch sheets say it went into four batches, the last of them Wednesday's. Those batches' lot codes lead to the invoices, and the invoices to the customers. Without the line written at the door on September 8, the search would have started with "did we even get that lot?"
A form to start with
A food receiving log has the columns above plus temperature and condition, and the download is free in Excel. If you want receiving, batches and shipments joined up so you can trace a lot in a few minutes, the lot tracking spreadsheet does that with a trace cell.
Where this stops working
The weak point is copying. The lot code is copied from the case to the log at the door, then from the log, or from memory, onto the batch sheet at the mixer, and each copy is a chance to get a digit wrong or skip it because your hands are covered in dough. A wrong digit is a lot that doesn't exist. A skipped line on the batch sheet is a recall that has to include every batch from that week, to be safe.
How TaroStack does it
TaroStack takes the copying out of both steps. At the back door, on a phone, you receive the delivery against its order, or without one. If the case has a GS1-128 label, scanning it fills in the lot and the use-by date for you, from the (10) and the (17), so 2609-114 is never typed at all. If there's no code, you give it your own, and you can print a lot label for the case. It works with no signal and sends itself when you're back in range.
At the mixer, nobody writes lot codes. When Ana records the batch, the recipe takes the flour from the lot that expires first, the last 12 lb of 2608-207, then from 2609-114, and the batch notes both, with the amounts. So when the mill calls, the recall report shows which batches used the lot, which customers got them, what's still on your shelves and who to call, in one go.
Lots, expiry and recalls are on every plan, from $49 a month; recording batches against recipes is on Standard at $99. The first 30 days are free, and your suppliers and items import from a spreadsheet. If you'd like a hand setting up, ask, and we'll do it with you.
