A combine harvesting a grain field at sunset, grain bins in the distance
Traceability

Recording shipments and customers: the forward half of one-up, one-back

Why a sale record without a lot code breaks a forward trace, and how to carry the code from harvest sheet to invoice without retyping it wrong. Farm40 is a farm record-keeping application for crop and livestock operations.

Jamison CoteFounder, Farm407 min readLast reviewed

One up, one back has two halves, and the second half is the one farms neglect. The first half — knowing where your product came from — feels natural, because it happens at the start of the process, while the field and the harvest are still fresh in mind. The second half — knowing exactly where it went — happens at the end, after the work already feels finished, which is precisely why it is the half most often done loosely.

A sale record without a lot code is not a small omission. It is the one gap that makes an otherwise perfect trace collapse at the last step: you can show exactly what went into a lot, and exactly when it was harvested, and then arrive at the shipment record and find only a customer name, a quantity, and a price — with no way to say which lot that quantity came from.

It helps to think of the lot code on an invoice the way you would think of a serial number on a warranty card. Nobody writes the serial number down because they expect to need it; they write it down because the one time in a hundred it matters, nothing else will do. A shipment record without a lot code is a warranty card with the serial number left blank — fine for ninety-nine sales, and useless for exactly the one that triggers a recall.

The sale is not the end of the lot’s story

It is easy to treat a sale as the finish line — the product is gone, paid for, and the transaction is complete. For traceability purposes, the sale is not the end of the story; it is the last entry in it, and it is the entry a real recall depends on most. A forward trace — where did this lot go — is answered entirely by the shipment records, and a shipment record with no lot code answers the wrong question. It tells you that product moved. It does not tell you which product.

This reframing matters because it changes what “done” means at the point of sale. The invoice is not complete when the customer, quantity, and price are filled in. It is complete when the lot code travels with it, because that single field is what lets the sale be found again later by someone searching from the other direction — starting at a lot, not at a customer.

Record every lot in a mixed shipment, not just the total

A single shipment often draws from more than one lot — a restaurant order filled from two days’ harvest because one day alone did not have enough volume. The natural shortcut is to record the total quantity against the customer and skip which lot contributed what. That shortcut is exactly where a forward trace breaks: if one of the two lots is later recalled, a shipment record that only says “eighty pounds to Riverside Restaurant” cannot tell you whether any of the implicated lot reached them, or how much.

The fix costs one extra line per shipment: forty pounds from lot A, forty from lot B, rather than eighty pounds undifferentiated. It is the same discipline that applies on the input side of the ledger — see commingling and lot integrity — applied to the outgoing side instead of the incoming one.

The lot code has to be typed, not remembered

Most missing lot codes on shipment records are not missing because nobody knew them. They are missing because the person writing the invoice was thinking about price and quantity, and the lot code lived on a different piece of paper — the harvest sheet — that was not in front of them at the moment of sale. The fix is workflow, not willpower: the harvest sheet and the sales record need to be the same document, or at least consulted together, so the lot code is copied rather than reconstructed from memory an hour or a day later.

A farm that separates these two steps in time — harvest recorded in the morning, sales invoiced in the evening from memory — will eventually produce an invoice with the wrong lot code on it, and a wrong code is worse than a missing one, because a wrong code answers a trace confidently and incorrectly rather than flagging itself as a gap.

The practical remedy is almost always to shrink the gap between picking and invoicing, not to add a checking step afterward. A farm that invoices same-day, from the same sheet the harvest was recorded on, has almost no opportunity for the two to drift apart. A farm that invoices at the end of the week, from a stack of memories, has created exactly the gap a wrong lot code lives in.

An informal sale still needs a record, even an informal one

Not every sale generates a formal invoice. A cash sale to a neighbor, a verbal agreement with a small buyer, or a farmers market transaction may have no natural paper trail at all. The record obligation does not disappear because the sale was informal; it shrinks to whatever level of formality matches the transaction. A text message, a notebook line, or a scrawled note on a clipboard — buyer, date, quantity, lot — satisfies the requirement. What does not satisfy it is treating an informal sale as one that need not be recorded at all, because from a trace’s perspective an unrecorded sale and a sale that never happened look identical, and only one of those is actually true.

It is also worth keeping the record somewhere it will survive a season change — a phone that gets replaced, a notebook that gets left in a truck sold at the end of the year. Photographing a handwritten sales note and keeping the photo alongside your other records costs a few seconds and removes the single largest risk to informal records: that they exist, briefly, in exactly one place.

Where a joined record removes the retyping, not the recording

None of the above requires anything beyond a habit of writing the lot code down at the point of sale. Farm40 records a customer sale with the lot it draws from as a linked field, selected rather than retyped, which is what makes the traceability packet export able to show every customer a given lot reached in one row. The honest limit sits in the same sentence: that join is a lot-code string match, so a sale entered with a blank or mistyped code will not link to its lot, silently, and the export will understate where that lot actually went. It removes the retyping that causes most transcription errors. It does not remove the requirement to write the code down in the first place, at the moment of the sale, for every lot in every shipment. For the wider argument about why this matters, see the traceability guide.

Frequently asked questions

What is the minimum a shipment record needs to include for traceability?
The customer, the date, the quantity, and the lot code or codes shipped. Of these, the lot code is the one most often left off, because an invoice can be generated correctly — customer, quantity, price — without anyone thinking to add it. It is also the one field that turns an ordinary sales record into a traceability record.
What happens if a shipment contains more than one lot?
Record each lot and the quantity of each that went into that shipment, rather than collapsing them into one line. A shipment of eighty pounds split forty and forty between two lots is not the same record as a shipment of eighty pounds from a single lot, and the difference matters the day only one of the two lots is recalled.
Is a verbal or handshake sale a gap in traceability?
Yes, and it is a real one — a sale with no record at all cannot be traced forward no matter how good your lot codes are. The record only has to be as formal as your operation; a text message or a notebook entry naming the buyer, the date, the quantity, and the lot satisfies the requirement. What does not satisfy it is no record whatsoever.
Do I need the customer's full legal name, or is a business name enough?
Enough to contact them again if a trace requires it — a business name and a phone number or address usually suffices, and for wholesale accounts you likely already have this from billing. The standard is reachability, not legal precision.