Odoo Lot and Serial Traceability for Australian Food Manufacturers: Recalls Under the FSANZ Protocol
Odoo lot tracking ties each food batch to its expiry dates, stock on hand and every customer delivery, the records the FSANZ recall protocol asks you to show.
By Josh Craig, Managing Director, Auboros ·
Odoo tracks food by lot from supplier receipt to every customer delivery, so one lot number shows its expiry dates, the quantity made or received, what is still in stock and who received it. That is the record the FSANZ Food Industry Food Recall Protocol (September 2024 edition) asks a recall sponsor to produce. Set it up before you need it, and test it with a mock recall each year.
At a glance
- Who it is for: Australian food manufacturers, importers and wholesale suppliers running Odoo, or choosing an ERP with recalls in mind.
- Problem it solves: showing one step back and one step forward traceability, plus the batch, quantity and distribution records a recall needs, under clause 12 of Standard 3.2.2.
- Platforms: Odoo 19 Inventory, Manufacturing, Barcode and Quality (the same documentation pages exist for 18.0 and 20.0).
- Typical cost (AUD ex GST): lot and expiry tracking are settings in Odoo Inventory, with no separate app to buy, and the Standard and Custom plans include all apps. Odoo Standard is A$34.40 and Custom A$64.00 per user a month for the first 12 months on yearly billing, then A$43.00 and A$80.00 (odoo.com/pricing, Australian pricelist, as at 30 October 2026). Implementation from A$10,000 ex GST on Auboros Foundations (a fixed-price Odoo implementation for 1 entity, 1 warehouse, up to 10 users, standard Odoo, delivered remotely, with a 4-week target, or at your own pace, data clean-up scoped separately), or from A$25,000 for 5 to 15 users on our larger packages (Odoo implementation cost in Australia).
- Typical timeline: no published figure for traceability set-up on its own; Odoo has a 4-week target, or at your own pace, on Foundations for a single-warehouse scope, and core modules take 2 to 3 months on our Essentials package.
- Last verified: 29 October 2026 for FSANZ and Odoo documentation, 30 October 2026 for Odoo prices (FSANZ Protocol page, Odoo 19 lot numbers).
This guide starts with what the regulator asks for. We take the information FSANZ asks a recall sponsor for, show where each item lives in Odoo 19, and finish with a mock recall you can run this month.
What does the FSANZ Protocol need from your ERP in a recall?
The legal requirement is short. Clause 12 of Standard 3.2.2 says a food business engaged in the wholesale supply, manufacture or importation of food must have a system to ensure the recall of unsafe food, set it out in a written document, and follow it. The Food Industry Food Recall Protocol (September 2024 edition, linked as current on a page last updated 25 February 2025) is guidance. It explains those requirements and what FSANZ will ask you for.
Section 3.5.2 of the Protocol PDF lists the information a sponsor must provide. Most of it is data your ERP should already hold:
- the product name as it appears on the pack, package size, date marking, and any Lot, APN, EAN or GTIN code
- the quantity of the batch manufactured, and the date and amount released
- the quantity of the recalled product that can be accounted for
- a distribution list, with contact details of the businesses you sold the food to
Section 5.4 adds a practical point: the business must be able to sort distribution information by state or territory and suburb. The Protocol notes that most standard reports from stock systems have to be manipulated to get there.
Recalls happen often enough to plan for. FSANZ coordinated 92 food recalls in 2025, above the 10-year average of 87, and undeclared allergens caused 38% of them (published 13 May 2026).
The recall map: FSANZ information and where it lives in Odoo
| FSANZ asks for | Where it lives in Odoo 19 |
|---|---|
| Product name as on pack, package size | Product record: name, unit of measure and packaging |
| Date marking | Expiration and best before dates on the lot (Expiration Dates setting) |
| Lot, APN, EAN or GTIN | Lot number on the lot record; GTIN in the product’s Barcode field; GS1 rules (10) lot, (15) best before and (17) expiry read from supplier cartons at receipt |
| Quantity of the batch made, date and amount released | Manufacturing order for the lot, or the receipt for an imported lot; delivery dates and quantities from Moves History filtered by lot |
| Quantity accounted for | On-hand quantity of the lot by location, confirmed by a physical count |
| Distribution list by state or territory, with contact details | Done outgoing moves for the lot, with the customer on each delivery; the address sits on the customer’s contact record, so test how you will sort the list by state and suburb before you need it |
| Ingredients and packaging used (one step back) | Component lots on the manufacturing order, when ingredients are tracked by lot; the supplier receipt for each component lot |
| Isolate remaining stock | Internal transfer of the lot to a quarantine location; a quality alert in the Quality app |
Sources: FSANZ Protocol sections 3.5.2 and 5.4 (September 2024); Odoo 19 documentation on lot numbers, expiration dates, GS1 nomenclature, Moves History and quality alerts, all checked 29 October 2026.
Should food be tracked by lot or by serial number?
By lot, almost always. Odoo’s product tracking documentation describes lots for goods made or received in large quantities, with food as an example, and serial numbers for individual items you need to follow one by one. Serials suit equipment, and lots suit cartons of yoghurt. Each product gets one tracking type, chosen in its Track Inventory field: By Lots or By Unique Serial Number.
The harder decision is lot size. FSANZ section 5.4 puts it plainly: larger production units make tracing simpler, but more food has to be recalled if something goes wrong. We usually start from one lot per production run. A lot per day across several runs is cheaper to administer and more expensive on the day you recall.
How do you set up lots, expiry dates and FEFO in Odoo?
Turn on Lots & Serial Numbers and Expiration Dates
In Inventory, go to Configuration, then Settings, and find the Traceability section. Tick Lots & Serial Numbers, save, then tick Expiration Dates, which appears once lots are on. On each food product, set Track Inventory to By Lots on the General Information tab, then tick Expiration Date in the Traceability section of the Inventory tab. If a product already has stock on hand, Odoo warns you, and you assign lots to that stock with an inventory adjustment.
One version note: Odoo 18 labels the product fields Expiration Time, Best Before Time, Removal Time and Alert Time; Odoo 19 calls them Expiration Date, Best Before Date and so on (18.0 and 19.0 docs).
The four dates
Each date is set in days on the product. Expiration is days after receipt or production. Best before, removal and alert are days before expiration. Odoo’s own example uses eggs: received on 1 January with a 30-day expiration and a 15-day removal date, the lot expires on 31 January and must leave stock by 16 January (FEFO documentation).
FEFO on the location or the product category
First Expiry First Out reserves the lot with the nearest removal date first. Set it on a storage location (Logistics section of the location form) or in the Force Removal Strategy field on a product category. If the two disagree, the category wins. For food, we usually set it on the category, so a new location cannot quietly switch you back to FIFO.
Lots on delivery slips and GS1 barcodes at receipt
Tick Display Lots & Serial Numbers on Delivery Slips in the same Traceability section, and your customers get the lot on their paperwork, which helps them when a recall notice arrives. At receipt, set the barcode nomenclature to Default GS1 Nomenclature and Odoo reads the lot (10), best before (15) and expiry (17) application identifiers from supplier carton barcodes, per the GS1 nomenclature page. That avoids a common gap, where the lot number typed at receipt differs from the one on the carton.
How does Odoo link ingredient lots to finished lots?
When you manufacture a product tracked by lots, the manufacturing order carries the finished lot, and Odoo assigns one before production is completed, generating the next number if you have not entered one (Odoo 19 manufacture with lots). When ingredients are also tracked by lot, the components carry their own lot numbers, which is what lets you trace a finished lot back to the ingredient receipts. Odoo’s documentation does not set out exactly how component lots appear on the manufacturing order or in the Traceability report, so run one batch through a test database and check the trace in both directions before you rely on it. Our Odoo Manufacturing guide covers the manufacturing order itself.
Where traces break, in our experience:
- components consumed without lots, because the ingredient was never set to track by lots
- rework or blending done outside a manufacturing order, so the link between lots is never recorded
- lots typed by hand at receipt instead of scanned, so the supplier’s lot and yours do not match
How do you run a mock recall in Odoo?
FSANZ recommends a mock recall, including traceability, at least once a year, based on current products (Protocol section 5.7.1). Here is a script that produces the numbers FSANZ would ask for:
- Pick a real finished lot from last month. Start a timer.
- Open the lot from Inventory, Products, Lots/Serial Numbers, and click the Traceability smart button.
- List every customer and quantity delivered from that lot, using Moves History filtered to Outgoing and the lot. Export it and sort by state or territory and suburb, as FSANZ section 5.4 expects. Check on your own database which address fields come through in the export, and allow for a spreadsheet step if they do not.
- Count what is physically on hand for the lot, location by location, and compare it with Odoo.
- Work out the quantity unaccounted for: quantity made, minus confirmed on hand, minus confirmed returns.
- Trace back to one ingredient lot, then forward again to every other finished lot that used it. This is the step that can turn a one-product recall into a recall of several products.
- Stop the timer. Record the time, the gaps you found and the fixes in your recall plan.
The final post-recall report asks for stock accountability numbers, so step 5 is the one to get right.
Is Odoo enough for FSANZ compliance on its own?
No. Odoo holds the records. Your recall plan, the people named in it, the call to your state or territory food enforcement agency and FSANZ, customer notifications, and the post-recall reports all sit outside it. FSANZ asks for an interim report within two weeks of the recall starting and a final report within one month (Protocol sections 3.9 and 5.6). Odoo supplies the quantities and the distribution list for those reports, and your team still writes and submits them. For the wider picture on systems for food businesses, see our guides to ERP for Australian manufacturers and ERP for food and beverage wholesalers.
If you want help with the set-up, our Odoo partner in Brisbane page explains how we work.
Goes well with
- MYOB Acumatica batch and lot tracking: how MYOB Acumatica handles the same recall.
- Odoo pick, pack and ship in Australia: how lots flow through picking and dispatch.
- Odoo 20 inventory and manufacturing changes: what changes in Odoo 20 for stock and manufacturing.
Getting ready for a mock recall or a retailer audit?
We work with food manufacturers and importers in Brisbane and across Queensland to set up lot traceability in Odoo and test it against the FSANZ Protocol. If you want a mock recall run on one of your real lots, book a free 1-hour scoping call. We will walk the trace with you and show where it breaks.
FAQ
Frequently asked questions
Can Odoo trace a food lot from supplier to customer?
Yes. With Lots & Serial Numbers turned on and products tracked by lot, the Traceability report on a lot shows its stock moves, from the receipt or manufacturing order that created it to each delivery that shipped it. Confirm how ingredient lots appear on your own manufacturing orders in a test database before you rely on it.
What does the FSANZ recall protocol require from food businesses?
Clause 12 of Standard 3.2.2 requires food manufacturers, wholesale suppliers and importers to have a written recall system and follow it. The September 2024 Protocol asks a recall sponsor for the product and lot details, the quantity made and released, the quantity accounted for and a distribution list.
Does Odoo handle expiry and best before dates?
Yes. Odoo stores expiration, best before, removal and alert dates on each lot, calculated from days set on the product, and the FEFO removal strategy reserves the stock with the nearest removal date first.
How often should a food business run a mock recall?
FSANZ recommends a mock recall, including traceability, at least once a year, based on a current product. In Odoo, pick a real finished lot, trace it both ways, count what is on hand, work out the quantity unaccounted for and time the exercise.
Is lot tracking included in Odoo or an extra app?
Lot and serial tracking and expiry dates are settings in Odoo Inventory. Odoo's Standard and Custom plans include all apps, so Manufacturing, Barcode and Quality are covered by the same per-user subscription.