← All posts

TLC vs. KDE vs. CTE: the three FSMA 204 concepts producers keep mixing up

A plain-English untangle of the three terms at the center of FSMA 204. What each one is, where it lives in your operation, and a worked chevre example that shows all three in action.

Anas N.8 min read
FSMA 204traceabilityTLCKDECTEsmall food producers

Last week a small RTE-fish producer pinged me on a forum with the kind of question we get every other week. It went, more or less:

"Do we need to write KDEs for every step in production? Is BBD enough as a TLC? And do all my suppliers need to provide GS1 barcodes?"

That's four FSMA 204 acronyms in two sentences (TLC, KDE, BBD, GS1) and the producer is conflating at least two of them. They're not alone. The same conflation shows up in three of the most-replied FSMA 204 threads on IFSQN, in our compliance score quiz dropoff data, and in roughly every conversation we have with a new producer in their first week of buyer onboarding.

This post is the untangle. By the end you'll know what each term means, where it lives in your operation, and how to spot the three most common mis-mappings. If you only have 30 seconds, scroll to "the one-paragraph map" below and stop there.

The one-paragraph map

TLCs, KDEs, and CTEs operate at three different layers of your traceability system, and they're not interchangeable.

A TLC (Traceability Lot Code) is an identifier. One unique alphanumeric string that names one specific production batch. Think of it like a license plate.

A KDE (Key Data Element) is a data point you record about that TLC. Quantity, date, location, supplier, recipient. KDEs are the fields you fill in. Think of them like the registration record attached to the license plate.

A CTE (Critical Tracking Event) is a moment in your workflow where you must capture KDEs against a TLC. Receiving an ingredient, transforming a batch, creating a new finished product, shipping it out. Think of it like the four times you're required to update the registration.

Put together: at each CTE (moment), you capture KDEs (data) about a TLC (identifier). That's FSMA 204 in one sentence.

The rest of this post is the longer version, with examples and the common mistakes.

TLC: the identifier

The Traceability Lot Code is the field that didn't exist on most producer spreadsheets two years ago and now decides whether you pass a 24-hour traceback request.

A TLC is:

  • One unique alphanumeric string per traceability lot. Not per product, not per day, not per shift. Per lot.
  • Assigned at exactly three moments under FSMA 204: when you initially pack a Raw Agricultural Commodity, when you first receive a fishing-vessel food on land, or when you transform a food into a new product.
  • Printed on your case and pallet labels so downstream traders can read it without opening your records.

A TLC is not:

  • A date. Two batches made on the same day must have different TLCs.
  • A best-by date (BBD). The BBD tells consumers when the product stops being at its best; the TLC tells the FDA which batch shipped where. They serve different audiences and the FDA distinguishes them explicitly. Our TLC Validator flags this confusion as the #1 failure mode.
  • A SKU code, a product description, or a generic batch number. SKU + date + sequence together can form a TLC; none of them alone qualify.
  • Required to follow any specific format. FDA does not require GS1 or a GTIN-based TLC. But ReposiTrak, Whole Foods, Costco, and Wegmans portals all assume one, so retailer-side pressure pushes toward GTIN even when FDA's rule doesn't.

If your current lot code is a date, a single letter, or the word "BATCH," paste it into the TLC Validator and it will tell you in 10 seconds what to switch to.

KDE: the data

Key Data Elements are the fields you record about a TLC. The FDA publishes the full KDE list per event type but the short version is:

KDEWhat it capturesExample
Traceability Lot CodeThe identifier (see above)CHV-20260520-001
QuantityHow much42 wheels
Unit of measureOf whatwheels of chevre
DateWhen the event happened2026-05-20
Location identifierWhere it happenedYour facility's FDA registration number
Sender / receiverWho handed it off, who received itSupplier name + address, retailer DC + address
Product descriptionWhat it actually isFresh chevre, 8 oz, plain

Different CTEs require slightly different KDE sets. Receiving emphasizes ship-from + supplier-lot. Transformation emphasizes input-to-output linkage. Shipping emphasizes ship-to + shipment identifiers.

KDEs are not:

  • The TLC itself. The TLC is one of the KDEs you record; the other KDEs describe it.
  • Anything you make up. They're a defined list per CTE in the FDA rule.
  • A burden to record if you're already running a real lot system. Producers running spreadsheets sometimes already capture 80% of the KDEs without knowing they have a name.

CTE: the moment

Critical Tracking Events are the four moments where FSMA 204 says you must capture KDEs.

There are four canonical CTE types:

  1. Receiving (or harvesting, cooling, initial packing for RACs). When food on the Food Traceability List enters your facility, you capture the receiving KDEs.
  2. Transformation. When you cook, mix, blend, age, repackage, or otherwise turn one or more input lots into a new output lot, you record the input-to-output linkage. This is the CTE where you assign a new TLC even if your input lot already had one.
  3. Creation (also called initial packing). When you assign a TLC to a finished product for the first time (typically when it leaves the production line into inventory).
  4. Shipping. When the lot leaves your facility heading to a customer.

Important nuance most producers miss: only foods on the Food Traceability List trigger CTEs under FSMA 204. A non-FTL ingredient (like, say, salt or sugar in your chevre brine) doesn't generate its own CTE record. But if your finished chevre is on the FTL, the chevre's full CTE chain matters.

A worked example: one wheel of chevre, traced through

Imagine you make small-batch chevre. Here's how TLC + KDE + CTE play together for one lot shipped to Whole Foods.

StepCTETLC involvedKDEs captured
1ReceivingYour dairy supplier's TLC: FARM-MILK-20260512-AQuantity (200 gal), date (2026-05-12), supplier ID, your receiving facility ID, product description ("raw goat milk")
2TransformationInput TLC: FARM-MILK-20260512-A. New output TLC you assign: CHV-20260520-001Input quantity (200 gal), output quantity (42 wheels), date (2026-05-20), transformation facility, input-to-output link
3Creation (assigning TLC at first packing)CHV-20260520-001Final product description, quantity packed, date packed, facility ID
4ShippingCHV-20260520-001Quantity shipped (12 wheels of the 42), date shipped, your facility ID, Whole Foods DC ID, shipment reference number

That's the same TLC (CHV-20260520-001) showing up in three different CTEs, each capturing a different KDE set. If Whole Foods or the FDA asks "which lot was affected" three weeks from now, you point to that TLC and walk them through all four records in under an hour. That's the 24-hour traceback test passing.

The three most common mis-mappings

If you only fix three things after reading this post, fix these:

Mis-mapping #1: using a BBD as the TLC. A best-by date is a shelf-life marker for the consumer. A TLC is a production identifier for traceback. They serve different purposes. Two batches of the same SKU produced a week apart often share the same BBD (same shelf-life math) but must have different TLCs. Keep the BBD on the consumer label; assign a proper TLC for your records.

Mis-mapping #2: treating KDEs as a separate paperwork burden. KDEs are the columns in your existing receiving log, production log, and shipping log. You're probably already capturing most of them. The FSMA 204 work is naming them, linking them to the TLC, and making sure they're present at every CTE, not adding a parallel records system.

Mis-mapping #3: thinking every step in production is a CTE. It isn't. The four CTEs (receiving, transformation, creation, shipping) are the only moments that trigger FSMA 204 records. Stirring, aging, holding, and inspecting are not CTEs. If you're trying to record KDEs at every internal handoff in your plant, you're overshooting the rule.

Where to go next

  • If you want to know whether your current lot code qualifies as a TLC, the TLC Validator gives you a yes/no in 10 seconds plus the format to switch to if no.
  • If you want the long-form explanation of what a TLC is and how to assign one, see the TLC primer.
  • If your buyer just sent you a questionnaire that's full of KDE and CTE terminology, see our breakdown of what retailers are really asking for.
  • If you're getting a ReposiTrak invitation from Erewhon, Wegmans, or Whole Foods this month, the survival playbook is there.
  • If you want to know how the rest of your FSMA 204 stack ranks, take the 3-minute Compliance Score quiz at /score. It scores you across seven dimensions, including how clean your TLC-KDE-CTE chain actually is.

The three letters get confused because they live close together in the FDA rule, in every consultancy explainer, and in your supplier portal. Once you separate them by layer (identifier, data, moment), the rest of FSMA 204 stops being a vocabulary fight and starts being a records problem you can actually solve.


Further reading

Related on this site

Written by Anas N., Co-founder of Darza Technologies. Last reviewed 2026-05-26.

Read next