HSE-381 · Lesson 5 of 12 · 17 min

Receiving and storing food

▶ Video coming soon A video version of this lesson is on the way.

Food safety starts before anything is cooked. If chicken arrives warm, if oysters come without their tags or if a case of canned tomatoes has swollen tins, no amount of careful cooking later will fix the problem. And once good food is in the building, it has to be stored so that it stays cold, stays separate from things that could contaminate it, and gets used before it spoils. This lesson follows a delivery through the back door of Juniper Street and into its walk-ins and dry storage.

Approved sources

All food served in a restaurant must come from a source that complies with the law: a supplier that is permitted, licensed or registered to produce or sell food and is subject to inspection. Meat and poultry must come from USDA-inspected plants or plants inspected under an equivalent state program. Molluscan shellfish such as oysters, clams and mussels must come from sources listed by the Interstate Shellfish Sanitation Conference and must arrive with tags or labels that identify where and when they were harvested. Shell eggs must meet federal grading and temperature rules. Food prepared in a private home cannot be served, and wild game, wild mushrooms and foraged foods need special approval or must come through approved channels.

Juniper buys from a short list of suppliers: a broadline food distributor, a meat purveyor, a seafood company on the Georgia coast, a bakery, a dairy and two farms that sell produce to restaurants. Before a new supplier is added, Tomás confirms that they are permitted, asks how they keep food cold in transit, and checks that they will send recall notices. The farmers' market is a wonderful place to find ideas, but produce bought there for the restaurant comes through the same checks as anything else.

Shellfish tags deserve special attention. When oysters arrive, the tag stays with the container until the last oyster is used, and then it is written on with the date the container was emptied and filed in date order. The Food Code requires shellstock tags to be kept for 90 days from that date. If a guest gets sick from a raw oyster, the tag is how investigators trace the harvest area and stop other people from getting sick.

Receiving a delivery

Receiving is a job, not a chore that falls to whoever happens to be near the back door. At Juniper, Luis or Aisha receives every delivery when possible, and anyone else who signs for one has been trained on the receiving checklist. Deliveries are scheduled for mid-morning, between the breakfast prep and the lunch rush, so that there is time to check them properly and put them away at once.

Four checks for each delivery: supplier (approved, licensed source, invoice matches the order); temperature (chilled 41 °F or colder, frozen solid at 0 °F or colder); condition (packages intact, no leaks, no pests, no ice crystals); and labels and dates (best before or use by, shellfish tags kept 90 days). An arrow leads to two outcomes: accept, label, date and put away cold food first; or reject, note it on the invoice and have the driver sign.
The receiving checks at Juniper Street's back door. Cold and frozen food is checked first and put away first.
  • Temperatures: refrigerated TCS food should arrive at 41 °F or colder, checked with a probe between packages or in the product. The Food Code allows a few exceptions, such as milk and live molluscan shellfish received at up to 45 °F and then cooled to 41 °F within four hours, and shell eggs received in air at 45 °F or colder. Frozen food should arrive frozen solid, and hot food from a caterer or commissary at 135 °F or hotter.
  • Signs of thawing and refreezing: large ice crystals inside the package, frozen liquid at the bottom of a box, or blocks of product stuck together mean the food warmed up somewhere along the way. Reject it.
  • Packaging: torn, leaking, wet or stained boxes, broken seals, and cans that are swollen, leaking, rusty, deeply dented on a seam or missing a label are all rejected. Swollen cans can mean Clostridium botulinum growth.
  • Condition of the food: off odors, slime, unusual color, soft spots and mold. Meat should be firm and smell fresh; fish should have bright, clear eyes and firm flesh and should smell of the sea, not of ammonia.
  • Pests: droppings, gnawed packaging or live insects in a box mean the whole delivery is suspect and the supplier must be told.
  • Labels, dates and documents: product names, allergen information on packaged foods, use-by dates, shellstock tags, and the supplier's parasite destruction records for fish to be served raw.

When something fails a check, the receiver rejects it politely but firmly while the driver is still there. The problem is written on the invoice, the driver signs or initials it, and the supplier is told so that a credit can be issued and a replacement sent. Food that has been accepted and signed for is the restaurant's problem.

The program below runs Tuesday's seafood and meat delivery through Juniper's receiving rules.

# Check an invented delivery against receiving rules (Food Code limits).
COLD_MAX = 41.0     # degrees F for refrigerated TCS food
SHELLFISH_MAX = 45.0  # live molluscan shellfish may arrive at 45 F
FROZEN_MAX = 0.0    # degrees F; frozen food should arrive frozen solid

delivery = [
    # (item, kind, temp F, packaging ok, notes)
    ("chicken thighs, 22 lb", "chilled", 38.0, True, ""),
    ("halibut fillets (crudo)", "frozen", -6.0, True, "parasite destruction record received"),
    ("oysters, 100 count", "shellfish", 43.0, True, "tag attached"),
    ("ground beef, 10 lb", "chilled", 36.5, False, "torn bag, leaking"),
    ("frozen fries, 4 cases", "frozen", 15.0, True, "fries stuck together in a block"),
]

for item, kind, temp, pack_ok, notes in delivery:
    reasons = []
    limit = {"chilled": COLD_MAX, "shellfish": SHELLFISH_MAX, "frozen": FROZEN_MAX}[kind]
    if temp > limit:
        reasons.append(f"too warm ({temp} F, limit {limit} F)")
    if not pack_ok:
        reasons.append("damaged packaging")
    if "block" in notes:
        reasons.append("signs of thawing and refreezing")
    verdict = "REJECT: " + "; ".join(reasons) if reasons else "accept"
    print(f"{item:<26} {verdict}")
Output
chicken thighs, 22 lb      accept
halibut fillets (crudo)    accept
oysters, 100 count         accept
ground beef, 10 lb         REJECT: damaged packaging
frozen fries, 4 cases      REJECT: too warm (15.0 F, limit 0.0 F); signs of thawing and refreezing

Two items fail. The oysters are within the 45 °F allowed for live shellfish, so they are accepted and go straight into the walk-in to cool to 41 °F. The ground beef is cold but leaking from a torn bag, and the fries have clearly thawed and refrozen. The chicken and the halibut are accepted and go straight into the walk-in and the freezer.

Produce, dairy and the bar

Produce is easy to overlook because it does not need cooking temperatures, but leafy greens, sprouts, cut fruit and herbs have caused many large outbreaks. Whole produce is checked for mold, slime, insects and soil caked on the leaves, and cut or bagged produce such as spring mix and pre-cut melon is treated as a cold-holding food: it must arrive cold and go straight into the walk-in. Bagged salads are checked for swollen bags and liquid in the bottom, both signs of spoilage. Sprouts are bought only from suppliers who test their seeds and water, and Juniper does not serve raw sprouts on dishes ordered by guests who mention a weakened immune system.

Dairy products, juices and cider must be pasteurized unless a specific exemption applies, and the receiver checks the label. Milk crates and egg cases are checked for broken containers and leaks. At the bar, Nadia receives bottled and canned drinks, garnishes and bagged ice. Purchased ice is food: it must come from an approved maker, arrive frozen in sealed bags, and be stored off the floor. The bar's own ice machine is cleaned on a schedule and its scoop is kept in a holder outside the ice, never left lying in the bin.

Some deliveries arrive while the kitchen is closed, such as bread left at the back door before dawn. Juniper's bakery delivers into a locked bread box, and anything left outside in the open is inspected before use and rejected if the packaging is damaged or birds or rodents could have reached it.

Putting food away

Accepted food goes into storage in a set order: frozen food first, then chilled food, then dry goods. Nothing perishable is left on the loading floor or in the hallway while the receiver chats with the driver or finishes the paperwork. Cardboard boxes are broken down outside the kitchen where possible, because cardboard can carry dirt and insect eggs and soaks up spills, and food is moved into clean, labeled food-grade containers.

First in, first out

Stock rotation means using older stock before newer stock. The simplest system is first in, first out (FIFO): new deliveries go behind or below the older product, so the older product gets used first. Juniper uses a slightly better version, first expired, first out, which pays attention to the use-by date rather than just the delivery date. Every container in the walk-in has a label with the product name, the date it was received or prepared, the initials of the person who made it, and the date by which it must be used.

The Food Code requires date marking for ready-to-eat TCS food prepared in the restaurant and held cold for more than 24 hours, such as soups, sauces, cooked grains and dressings. The food must be used, sold or thrown out within seven days at 41 °F or colder, counting the day of preparation as day 1. When food is frozen, the clock stops while it is frozen and starts again when it is thawed.

# Work out the discard date for a date-marked food (day of prep counts as day 1).
from datetime import date, timedelta

def discard_by(prepared, days=7):
    return prepared + timedelta(days=days - 1)

items = [
    ("chicken stock", date(2026, 3, 9)),
    ("buttermilk dressing", date(2026, 3, 11)),
    ("cooked farro", date(2026, 3, 12)),
]
today = date(2026, 3, 15)
for name, made in items:
    last = discard_by(made)
    status = "discard" if today > last else "use first" if today == last else "ok"
    print(f"{name:<20} made {made}  discard by {last}  -> {status}")
Output
chicken stock        made 2026-03-09  discard by 2026-03-15  -> use first
buttermilk dressing  made 2026-03-11  discard by 2026-03-17  -> ok
cooked farro         made 2026-03-12  discard by 2026-03-18  -> ok

The stock made on March 9 reaches its last day on March 15 and must be used during service that day or thrown out at close. The other two have time left. In practice, Juniper's labels show the last day directly, so nobody has to count on their fingers during a rush.

Where food goes in the walk-in

In a cooler, raw foods are stored below ready-to-eat foods, and raw animal foods are arranged from top to bottom by the temperature to which they will be cooked. Food that is never cooked again goes at the top. Below that come foods that will be cooked to lower temperatures, and poultry, which needs the highest cooking temperature, goes at the bottom. If anything drips, it can only drip onto something that will be cooked to a higher temperature, which will kill whatever was in the drip.

A walk-in cooler shelving unit with five shelves from top to bottom: ready-to-eat foods (no cooking); whole fish (cooked to 145 °F); whole cuts of beef and pork (145 °F); ground meats (155 °F); and poultry (165 °F) on the bottom. An arrow down the side is labeled drips.
Juniper's walk-in shelving order. When separate units are not available, this order keeps drips from reaching food that will not be cooked enough to make it safe.
  • Keep food at least 6 inches off the floor on shelves or dollies, so the floor can be cleaned and splashes from mopping cannot reach it.
  • Cover or wrap food once it is cold. Food that is still cooling is left loosely covered or uncovered on the top shelf, protected from drips, until it reaches 41 °F.
  • Store food in food-grade containers with lids, never in garbage bags or containers that held chemicals.
  • Keep raw meat, poultry and fish in pans or trays deep enough to catch any juices.
  • Do not store food under exposed sewer lines, leaking pipes or condensate drips.

Dry storage

Dry storage holds flour, sugar, rice, pasta, canned goods, oils, spices and paper goods. It should be cool, dry, well lit and well ventilated, ideally between about 50 °F and 70 °F, with no water heaters, dish machines or compressors in the room. Once opened, dry goods go into clean, tightly covered containers labeled with the common name of the product, as the Food Code requires for food not easily recognized, and for flours and grains the date opened. Scoops are kept in a separate clean container, not buried in the flour, and nothing is stored on the floor.

Chemicals are never stored in dry storage with food. At Juniper they live in the dish pit on their own rack, below and away from any food, clean dishes or packaging. Personal belongings, such as staff bags, coats and phones, go in the staff lockers, not on the dry storage shelves.

For supervisors: the weekly walk-in check

  • Pull everything past its use-by date, and look for containers with no label at all; those go too.
  • Check that raw food is still below ready-to-eat food. Shelving order slips quickly when the walk-in is full after a big delivery.
  • Probe a few foods, not just the air, especially near the door and on the top shelf.
  • Look at the gaskets, the floor under the shelves and the fan cover for damage, mold or ice buildup, and write work orders for anything that needs repair.

Summary and key terms

  • All food must come from approved sources; shellfish tags are kept for 90 days, and home-made food cannot be served.
  • Deliveries are checked for temperature (41 °F or colder, with a few exceptions such as live shellfish at 45 °F), packaging, condition, pests, labels and dates, and failed items are rejected on the spot.
  • Frozen food is put away first, then chilled food, then dry goods; nothing perishable waits on the floor.
  • Stock is rotated first in, first out (or first expired, first out), and prepared foods are labeled with a use-by date.
  • In the cooler, ready-to-eat food goes at the top and raw animal foods below, ordered by cooking temperature with poultry on the bottom.
Approved source
A supplier that is licensed or permitted to produce or sell food and is subject to inspection.
Shellfish tag
The label that comes with oysters, clams and mussels showing where and when they were harvested; kept for 90 days.
FIFO
First in, first out: using older stock before newer stock.
Date marking
Labeling prepared foods with the date by which they must be used or discarded.
Thaw and refreeze signs
Large ice crystals, frozen liquid in the package or product frozen in a block, showing that food warmed up during transport.

Common mistakes

  • MistakeThe driver is in a hurry, so we can sign now and check the order later.

    InsteadCheck temperatures and condition before signing; once the invoice is signed, rejected food is hard to return.

  • MistakeIt is fine to keep the oysters' tag only until the oysters are gone.

    InsteadShellfish tags are kept for 90 days after the container is emptied, so illnesses can be traced.

  • MistakeRaw chicken can go on any shelf as long as it is covered.

    InsteadRaw poultry goes on the bottom shelf, below everything else, because a cover can leak and drips spread pathogens.

Practice problems

Work each problem on paper first, then reveal the answer to check.

  1. A case of frozen shrimp has a layer of frozen liquid at the bottom and the shrimp are fused together. What do you do?

    Show answer

    Reject it; those are signs that it thawed and refroze during transport.

  2. A soup was made on Monday the 2nd. Under a seven-day rule counting the day of preparation as day 1, what is its last day?

    Show answer

    Sunday the 8th.

  3. Put these in order from top to bottom shelf: ground beef, salad, raw chicken, whole salmon.

    Show answer

    Salad, whole salmon, ground beef, raw chicken.

Lesson quiz · 5 questions

Score 60% or more to complete this lesson.

Take the quiz