Skip to Content
WMSSoft
  • Home
  • Odoo
    • Odoo Overview
    • Odoo Manufacturing
    • Odoo Inventory
    • Odoo Accounting
    • Odoo CRM
    • Odoo Project
    • Odoo HR
  • Integration
    • AI for Odoo
    • Integrations Overview
    • TrackPod
    • Keypay Payroll
    • Microsoft Power BI
    • TBO4: Advanced WMS
  • Implementations
    • Odoo Implementation Australia
    • Why Choose Us
    • Odoo FastTrack Implementation
    • Odoo Partner Australia
  • Services
  • Pricing
  • Contact us
  • Blogs
    • All
    • Customer Success
  • About Us
  •   ​
  • Sign in
  • Contact Us  
WMSSoft
      • Home
      • Odoo
        • Odoo Overview
        • Odoo Manufacturing
        • Odoo Inventory
        • Odoo Accounting
        • Odoo CRM
        • Odoo Project
        • Odoo HR
      • Integration
        • AI for Odoo
        • Integrations Overview
        • TrackPod
        • Keypay Payroll
        • Microsoft Power BI
        • TBO4: Advanced WMS
      • Implementations
        • Odoo Implementation Australia
        • Why Choose Us
        • Odoo FastTrack Implementation
        • Odoo Partner Australia
      • Services
      • Pricing
      • Contact us
      • Blogs
        • All
        • Customer Success
      • About Us
    •   ​
    • Sign in
    • Contact Us  
  • All Blogs
  • WMSSoft Blog
  • ERP for Food Manufacturing in Australia: Traceability, Recalls and Shelf Life
  • ERP for Food Manufacturing in Australia: Traceability, Recalls and Shelf Life

    What Australian food manufacturers need from an ERP that generic manufacturing software doesn't give them, and how Odoo handles each piece, gaps included.
    28 October 2026 by
    ERP for Food Manufacturing in Australia: Traceability, Recalls and Shelf Life
    WMSSoft Pty Ltd, Darren De Padua
    | No comments yet

    The short answer: a food manufacturer needs an ERP that tracks every batch from supplier to customer, manages use-by dates without anyone keeping a mental calendar, and can produce a recall list in minutes rather than days. Generic manufacturing software handles production well enough. Food adds lots, shelf life, allergens and variable yields, and that's exactly where most systems start to wobble.

    The longer answer starts with a phone call.

    It's 4:55pm on a Friday. The phone rings.

    It's your supplier's QA manager. A lot of desiccated coconut they delivered three weeks ago has tested positive for Salmonella. They're very sorry. They'd like to know what you did with it.

    That's really two questions. Which of your finished batches did that coconut go into? And which customers received those batches?

    In a lot of food businesses, the honest answer starts with 'give me a minute' and finishes some time on Sunday. Receiving records are on a clipboard. Production records live in a spreadsheet that exists in three versions, one of which is on Dave's laptop. Dispatch knows what went out by product, but not by batch. And Dave is at the footy.

    Here's the uncomfortable bit: the clock started when the phone rang, not when someone found the right spreadsheet. Under Standard 3.2.2 of the Food Standards Code, Australian businesses that manufacture, wholesale or import food must have a written system for recalling unsafe food, make it available when an authorised officer asks, and follow it when a recall happens. A recall plan you can't execute quickly is a document, not a system.

    We'll come back to that phone call. First, it helps to see why food trips up software that copes perfectly well with brackets and bolts.

    Why food isn't just manufacturing with better smells

    General manufacturing software makes a few quiet assumptions. A part is a part. It doesn't go off. It doesn't contain peanuts. And 10 kilograms of steel in makes roughly 10 kilograms of product out, minus offcuts you can predict.

    Food breaks every one of those, in five specific places:

    • Lots at every step. Not just on finished goods, but on every ingredient received, every batch mixed and every pallet shipped. A batch number that only appears at the end is like a family tree that starts with you.
    • Shelf life. Your stock has a clock on it. Inventory worth full price on Monday can be worth half by Thursday and nothing the following week.
    • Allergens. A recipe change is also a labelling change, whether or not anyone remembers to tell the person who does the labels.
    • Variable yields and weights. 100 kilograms of potatoes doesn't make a fixed number of chips. It depends on the potatoes, the season and, occasionally, the mood of the slicer.
    • Recall obligations. The law expects you to find and pull unsafe product, so your system has to be able to find it.

    So 'manufacturing ERP' and 'food manufacturing ERP' aren't the same thing. The second is the first plus those five capabilities, built in rather than bolted on with spreadsheets. A practical test for any vendor demo: if nobody mentions a lot number in the first twenty minutes, you're being shown the wrong software. (For the broader picture of what any manufacturer should expect from an ERP, our complete guide to ERP for Australian manufacturers covers the fundamentals.)

    Traceability: one step back, one step forward

    The principle behind food traceability is simpler than it sounds. You need to know where everything came from (one step back) and where everything went (one step forward). That's it.

    Think of it like a relay race. Each runner only needs to know who handed them the baton and who they handed it to. Nobody has to remember the whole race, because if every handover is recorded, you can rebuild the race from the handovers. Traceability works the same way: supplier lot to receipt, receipt to production batch, production batch to finished lot, finished lot to customer delivery. Miss a single handover and the trail goes cold right there.

    In Odoo, those handovers are recorded as a by-product of normal work:

    • Products are set to be tracked by lots, so every receipt, movement and delivery carries a lot number.
    • Ingredient lots are captured on receipt, using the supplier's lot number or your own.
    • Each manufacturing order records which ingredient lots were consumed and which finished lot was produced.
    • Each delivery records which finished lots went to which customer.

    The traceability report on any lot then does the walking for you. Look upstream and you see the supplier and receipt it came from. Look downstream and you see every manufacturing order it went into, every finished lot that came out, and every customer delivery that carried one.

    Here's that walk, one handover at a time. Keep scrolling, and keep an eye on the clock.

    4:55:00pmFriday

    Friday, 4:55pm. The phone rings.

    Your coconut supplier has a positive Salmonella test on lot DC-0412, shown in red. The clock is running.

    One step back: the receipt

    Odoo goes straight to the receipt where DC-0412 arrived, so you know exactly which pallets came in, and when.

    One step forward: the batches

    The coconut went into three of this week’s five batches. The other two never touched it and stay on sale.

    Into finished lots

    Those three batches produced four finished lots, each with its own lot number and use-by date.

    Out the door

    The four lots left on 11 deliveries to seven customers. The other three customers never received any of it.

    Your recall list, at 4:59pm

    Seven customers to call, four lots to quarantine, and everything else keeps shipping. Dave can stay at the footy.

    Back to Friday at 4:55pm. Open the coconut lot, look downstream, and the answer is on screen: these batches, these customers, these quantities, plus whatever is still sitting in your coolroom. That's your recall list. Done properly, a mock recall in Odoo takes under five minutes, which is roughly how long the QA manager will politely wait on hold.

    One honest caveat: the report is only as good as the handovers recorded. If lots are typed in from memory at the end of a shift, you've simply digitised the guesswork. Scanning lot barcodes at receipt, production and picking is what makes the trail trustworthy, and our practical guide to warehouse barcode scanning covers how to get there.

    Shelf life and FEFO: stock with a clock on it

    First, the two dates everyone uses and plenty of people mix up. Under Standard 1.2.5 of the Food Standards Code:

    • A use-by date is about safety. After it, the food can't be sold, because it may no longer be safe to eat.
    • A best-before date is about quality. Food can still be sold after it, as long as it's still fit to eat and isn't damaged.

    Put simply, best-before is advice and use-by is a deadline. Your ERP needs to know the difference, even if the fridge at home doesn't.

    Odoo handles this with expiration dates. You define the shelf life once on the product, and every lot gets its own dates calculated automatically when it's received or produced:

    • Expiration date: the end of the line. Past this, it isn't stock, it's a liability.
    • Best before date: the quality marker your customers see.
    • Removal date: when the lot should come out of saleable stock, usually well before expiry, so your customer still gets useful shelf life.
    • Alert date: when someone should be nudged that a lot is getting close.
    SaleablePull and clearMade or receivedshelf life startsAlert datesomeone gets nudgedBest beforequality, not safetyRemoval dateFEFO picks by thisExpiration datethe use-by: hard stop
    Set the shelf life once on the product and every lot gets these dates automatically. Typical spacing shown; you choose the gaps.

    The removal date is what drives FEFO: first expired, first out. Most warehouses run FIFO, first in, first out, which assumes the oldest stock expires first. Your suppliers didn't get that memo. A pallet that arrived last Tuesday with a short date should ship before the one that arrived a week earlier with plenty of life left. Set FEFO as the removal strategy and Odoo directs pickers to the lot that expires first, not the one closest to the door. It also warns you before you ship a lot that's past its expiry date, which is the kind of warning you only want to ignore once.

    FIFOfirst in, first outarrived 1st40 days leftpicked firstarrived 2nd6 days leftarrived 3rd70 days leftPallet Bexpires onthe shelfFEFOfirst expired, first outarrived 1st40 days leftarrived 2nd6 days leftpicked firstarrived 3rd70 days leftPallet Bships whileit’s good
    Same three pallets, two rules. FIFO ships the oldest; FEFO ships the one that will expire first.

    Then there's the stock that's running out of time. There are three sensible options, and Odoo handles each as a normal transaction:

    • Discount it through a markdown price list or a clearance channel while it still has saleable life.
    • Donate it to a food rescue organisation, recorded as a delivery so the trace stays intact.
    • Write it off as scrap, with a reason, so the cost lands in the right place in your accounts rather than quietly vanishing.

    The fourth option, which nobody plans for, is finding it at the back of the coolroom in March. The alert date exists to prevent the fourth option.

    Allergens and recipe control

    In most of manufacturing, a 2% ingredient substitution is a costing question. In food, it can be a labelling question, a recall and an awkward phone call, not necessarily in that order. Undeclared allergens are consistently one of the most common reasons for food recalls in Australia.

    The labelling rules have tightened, too. Plain English Allergen Labelling (PEAL) requires allergens to be declared using specific plain-English names, shown in bold in the ingredient list, with a separate summary statement starting with 'Contains'. The transition period ended in February 2024, and the extra two years allowed for products already labelled under the old rules ended in February 2026. Every label on shelf today needs to comply.

    The ERP's job here is recipe control. When a supplier changes their flour blend or your team swaps one ingredient for another, the change has to travel through the bill of materials, the allergen profile and the label together. In Odoo, recipes live as bills of materials, and with the PLM app, changes go through engineering change orders with versioning and approval, so 'we tweaked the recipe' leaves an audit trail rather than a rumour.

    Now the honest part. Odoo has no native allergen matrix. There's no out-of-the-box screen that says 'this product contains sesame because ingredient 4 does'. The usual approach is to record allergens against each ingredient using product attributes or a few custom fields, then roll them up through the bill of materials to the finished product with a modest customisation. It's not a big build, but it is a build, and anyone who tells you otherwise during a sales demo should be asked to show you the screen.

    Yields, waste and true costing

    Here's where food margins usually leak, and it's rarely where people look. Everyone negotiates hard on the price of flour. Far fewer people chase the few per cent of it that ends up on the floor.

    A simple example. Your recipe says 100 kilograms of dough makes 160 loaves. Tuesday's batch made 152. Those eight missing loaves never showed up on a supplier invoice, but they cost you exactly as much as if they had. Multiply that across every batch, every line and every week, and yield variance can easily matter more than a price rise on an ingredient.

    One batch: 160 loaves planned, 152 made8loaves shortevery batchat 10 batchesa week, that is4,160loaves a year
    No supplier invoice shows the missing loaves, but you paid for every one. Batch counts are illustrative.

    Odoo makes this visible batch by batch:

    • Each manufacturing order records actual consumption and actual output against what the recipe expected, so variance shows up per batch rather than as a mystery at month-end.
    • By-products such as trim, whey or offcuts can be recorded on the bill of materials with a share of the cost, so your main product doesn't carry all of it.
    • Scrap is recorded with reasons, so 'waste' becomes a list of fixable causes instead of a single sad number.
    • Cost analysis compares expected against actual cost per order, and landed costs add freight, duty and handling to imported ingredients, so your ingredient cost is the real one rather than the supplier's price.

    The compliance map

    Here's how the main food requirements line up against Odoo, and whether each one is standard (vanilla), needs a customisation or calls for a third-party add-on.

    Food requirementOdoo moduleVanilla, customisation or third-partyHow it's handled
    Lot tracking from receipt to dispatchInventory, ManufacturingVanillaProducts tracked by lots, captured at receipt, consumption, production and delivery
    One step back, one step forward traceInventoryVanillaLot traceability report shows upstream suppliers and downstream customers
    Written recall system (Standard 3.2.2)InventoryVanilla (your procedure, Odoo's data)Your recall procedure uses the trace report to produce the affected batch and customer list
    Use-by and best-before dates (Standard 1.2.5)InventoryVanillaShelf life set per product, dates calculated per lot
    FEFO pickingInventoryVanillaFEFO removal strategy picks the earliest-expiring lot first
    Short-dated stock alertsInventoryVanillaAlert dates flag lots before they reach removal
    Minimum remaining shelf life per customerSales, InventoryCustomisationRule checks remaining life when stock is reserved for an order
    Recipe version controlManufacturing, PLMVanilla (Enterprise)Versioned bills of materials with engineering change orders and approvals
    Allergen matrix and roll-upInventory, ManufacturingConfiguration plus customisationAllergens recorded on ingredients and rolled up to finished goods through the BOM
    PEAL-compliant product labelsInventory, ManufacturingCustomisationLabel template prints bold allergens and the 'Contains' statement
    Receipt checks (temperature, certificates)QualityVanilla (Enterprise)Quality control points on receipts with pass/fail and measured checks
    GS1-128 barcodes with batch and datesBarcode, InventoryVanilla scanning, customised label designGS1 nomenclature reads product, batch and date identifiers on scan
    Catch weightSales, Inventory, AccountingThird-party add-on or customisationCarries nominal units and actual weight through picking and invoicing
    Yield, by-products and scrapManufacturingVanillaActual vs expected per order, by-products with cost share, scrap with reasons
    Landed cost of imported ingredientsInventory, AccountingVanillaFreight, duty and handling allocated to the receipt

    What Odoo doesn't do out of the box

    Most ERP guides skip this section. We'd rather you hear it from a blog post than from a project manager in month four.

    • Catch weight. It sounds like a fishing story, and like a fishing story, the number on the order rarely matches the number on the scale. If you sell 'a wheel of cheese' or 'a box of fillets' but invoice by actual weight, standard Odoo needs an add-on or customisation to carry both the unit and the real weight through picking, invoicing and stock.
    • Allergen matrix. As above: configurable, with a small customisation for the roll-up.
    • Compliant label printing. Odoo prints labels, but a PEAL-compliant product label or a GS1-128 carton label with batch and dates usually needs a custom label template, often sent to a thermal printer.
    • Customer-specific shelf life rules. If a retailer requires a minimum remaining shelf life on delivery, enforcing it automatically per customer is typically a customisation rather than a setting.
    • A full food safety management system. Odoo's Quality app can capture checks at critical control points, such as receipt temperatures, but your HACCP plan and certification audit program usually sit alongside Odoo rather than inside it.

    None of these are deal-breakers. They're well-trodden ground, and we build them regularly. The point is to cost them in at the start, not discover them at go-live.

    What your retail customers expect

    If you supply the major supermarkets or large distributors, traceability stops being an internal nice-to-have and becomes a condition of doing business.

    Start with barcodes. A standard retail barcode tells a scanner what the product is. A GS1-128 barcode on a carton or pallet tells it a short sentence: what the product is, which batch it came from, when it expires and, for variable-weight goods, what it weighs. Each piece of information sits behind a small code called an application identifier, such as (10) for the batch and (17) for the use-by date. Odoo's GS1 barcode nomenclature reads these, so scanning an inbound carton fills in the product, the lot and the expiry date in one go instead of three typed fields. Your GS1 Australia membership provides the company prefix those barcodes are built on.

    Then there are the audits. Retailer supplier programs typically expect certification to a recognised food safety scheme, and schemes such as SQF and BRCGS require regular traceability exercises. BRCGS, for example, expects a full trace to be achievable within four hours. If your current trace involves Dave, his laptop and a long weekend, that's an audit finding waiting to happen.

    Time your trace

    Here's a challenge you can run this week. It costs nothing but a cup of coffee.

    1. Pick a raw ingredient lot you received about a month ago.
    2. Start a timer.
    3. Find every finished batch it went into, every customer who received one, and how much is still on hand.
    4. Stop the timer when you'd be confident handing that list to a regulator.

    Note how many systems you opened, how many people you had to ask, and whether anyone had to ring Dave. If the coffee went cold before you finished, it's worth a conversation.

    We'll run the same trace in Odoo, live, in front of you: receipt to batch to customer, in minutes. To see how it would work with your recipes, your lots and your customers, book a demo with WMSSoft, or read more about Odoo for manufacturing. That way, the next time the phone rings at 4:55pm on a Friday, Dave can stay at the footy.

    in WMSSoft Blog
    Sign in to leave a comment

    Read Next
    Does the Critical PHP Security Flaw Affect Odoo Websites?
    Odoo runs on Python, not PHP. The WordPress site holding your Odoo API key might be a different story.
    Useful Links
    • Home
    • About us
    • Contact Us
    • Odoo Overview
    • Privacy Policy

      WMSSoft helps companies build their future with a team of business savvy consultants. We provide customized solutions for complex problems. Our expertise in accounting, IT, and business makes us your smart choice.

    Connect with us
    • Contact us at any time
    • sales@wmssoft.com.au

    Social Media

    This website was created using Odoo. Find out how you can too.
    Copyright © WMSSoft 2026
    Powered by Odoo - Create a free website

    We use cookies to provide you a better user experience on this website. Cookie Policy

    Only essentials I agree