```json
{
    "title": "ERP for FMCG Companies: Managing Distribution, Batch Tracking and Expiry in One System",
    "url": "https://aavatto.com/blog/erp-for-fmcg-companies-distribution-batch-tracking-expiry/",
    "datePublished": "2026-09-18",
    "dateModified": "2026-09-18",
    "language": "en-US",
    "description": "How ERP for FMCG companies unifies distribution, batch tracking, and expiry management in one ERPNext system.",
    "author": "Aavatto",
    "publisher": "Aavatto - Frappe & ERPNext Experts | Custom Development, Implementation & Support"
}
```

# ERP for FMCG Companies: Managing Distribution, Batch Tracking and Expiry in One System

**ERP for FMCG companies needs to do something most general-purpose accounting or inventory software doesn't: track stock at the batch level, enforce expiry-based rotation, and manage multi-channel distribution — pricing tiers, multiple warehouses, returns — as one connected flow, not three systems stitched together with spreadsheets.** That's the core requirement, and it's where most FMCG businesses discover their existing setup runs out of road.

If you're reading this because your team is manually cross-checking batch numbers against expiry dates in a spreadsheet before every distributor dispatch, or because finance can't get accurate cost-of-goods numbers without weeks of reconciliation, you already know the symptom. This article covers the mechanism behind it: what actually breaks in FMCG operations, and what a properly configured ERP looks like once it's handling all three problems together.

## Why ERP for FMCG Companies Needs More Than Generic Inventory Tools

Most ERP systems handle inventory as a single number: how many units of SKU X are in stock. FMCG operations need more than that, because a unit of stock isn't interchangeable with another unit of the same SKU. It belongs to a specific batch, with a specific manufacturing date, a specific expiry date, and often a specific cost basis if input prices moved between batches.

That has consequences downstream:

Stock has to move out in expiry order (FEFO — first-expiry-first-out), not in the arbitrary order a generic system picks.

Costing has to track which batch's cost basis applies to which sale, not a blended average that hides margin erosion on slow-moving batches.

Returns and short-expiry stock need separate handling — discounting, redirecting to faster-moving channels, or write-off — without losing traceability back to the original batch.

All of this has to stay accurate while distribution is happening across multiple warehouses, distributors, and sometimes van-sales routes at the same time.

A generic ERP or an accounting package with a bolted-on inventory module can track quantity. It generally can't do all four of the above without heavy customization, which is why so many FMCG companies end up running their core business on spreadsheets layered on top of software that was never built for batch-level, expiry-driven stock.

## How Batch and Expiry Tracking Actually Works in ERPNext

ERPNext treats batches as a first-class object, not a note field. Every stock entry — manufacturing receipt, purchase receipt, or transfer — can be tied to a batch with its own manufacturing date, expiry date, and valuation. From there:

FEFO enforcement

happens at the point of dispatch. When a sales order or delivery note pulls stock, the system can be configured to select from the batch closest to expiry first, rather than leaving that judgment call to whoever happens to be picking stock that day.

Expiry visibility

is queryable at any point: which batches are approaching expiry, by how many days, across which warehouses, so a purchasing or sales decision (redirect stock to a faster channel, apply a markdown, initiate a return) can happen before expiry, not after.

Batch-wise valuation

keeps cost of goods sold accurate even when input costs shift between batches, which matters for margin visibility on categories with volatile raw material pricing.

Batch-level traceability

carries through to returns and recalls. If a batch needs to be pulled, the system can show exactly which deliveries, distributors, or customers received it, something that's close to impossible to reconstruct reliably from a spreadsheet after the fact.

None of this is exotic. It's what any FMCG operation needs as baseline functionality. The difference is whether it's native to how the system handles stock, or something a team is compensating for manually.

## What Distribution Adds on Top of Batch and Expiry

Batch and expiry tracking solves the stock-accuracy problem. Distribution adds a second layer: the same batch of stock now has to move through multiple warehouses, potentially multiple pricing tiers (wholesale, retail, modern trade, van sales), and multiple document flows (sales orders, delivery notes, GST-compliant invoices, returns), while staying reconciled with the batch and expiry data underneath it.

In practice, an FMCG-ready setup needs to handle:

Multi-warehouse stock visibility

so a dispatch decision from a regional warehouse doesn't require a phone call to check what's actually there.

Distributor and channel-specific pricing

applied automatically at the order level rather than manually recalculated per invoice.

GST-compliant billing

generated directly from the same transaction that updates stock, so tax reporting doesn't require a separate reconciliation pass against inventory records.

Returns and short-expiry stock flowing back into the batch system correctly

rather than re-entering inventory as untracked "new" stock that loses its expiry history.

Most FMCG ERP comparisons treat this as a checklist of features to confirm exist. In practice, it's a set of configuration decisions: how warehouses map to your actual distribution structure, how pricing rules are defined so they don't conflict with expiry-driven discounting, how returns are coded so they don't break batch traceability. Getting software to technically support multi-warehouse distribution and getting it configured to match how your business actually distributes stock are two different projects.

If your team is already deciding case by case how to handle near-expiry stock across warehouses, that's usually the sign the current setup has hit its ceiling.

## How It Comes Together in Practice

The pattern that shows up consistently across FMCG operations moving off spreadsheets looks something like this: stock is assigned a batch with expiry data at receipt, not after the fact. Orders from different channels get the right pricing automatically, and stock is picked in expiry order without a manual check. Finance sees batch-level cost of goods without a month-end reconciliation cycle, and when a batch approaches expiry, someone sees it with enough lead time to act instead of discovering it during a physical stock count.

That's the structural difference between a system where batch, expiry, and distribution data live in one connected flow versus one where each lives in its own spreadsheet or silo, reconciled manually and after the fact. The operational cost of the second version isn't hypothetical: write-offs on expired stock that could have been redirected, margin blind spots from blended costing, and hours spent reconciling GST filings against inventory that don't quite match.

## Implementation Considerations Worth Naming Honestly

There's no version of this where turning on batch tracking and expiry fields makes an FMCG ERP implementation simple. A few things worth knowing before you evaluate vendors or partners:

Batch definition needs a real decision, not a default

Batches can be defined by manufacturing lot, receipt date, or supplier shipment. The right choice depends on how your production or procurement actually works, and getting it wrong means redoing historical data later.

Migrating existing stock data is the slow part

If your current inventory isn't already tracked at batch level, someone has to reconstruct or reasonably approximate batch and expiry data for existing stock before go-live. This is usually the longest single task in an FMCG ERPNext rollout, not the software configuration itself.

Pricing rules and expiry-driven discounting need to be designed together

not layered on separately, or you end up with conflicting rules that require manual override at the point of sale.

There's no single timeline that applies to every FMCG business

A single-plant distributor with two warehouses is a materially different project from a multi-plant manufacturer running its own distribution alongside third-party distributors.

This is where a dedicated ERPNext implementation partner earns their keep: someone who has actually worked through batch definitions, pricing-expiry conflicts, and warehouse mapping before, including for businesses picking this up after a first implementation stalled or a vendor went quiet. It's a reason to work with a partner who treats these as the real work, not one who sells the feature list and leaves the configuration decisions to you.

## Frequently Asked Questions

[Is ERPNext suitable for FMCG companies, or is it built more for manufacturing?](#collapse-2901)

ERPNext supports both manufacturing and distribution natively, and most FMCG ERP software on the market assumes one or the other. FMCG companies typically need both: production or procurement on one end, multi-channel distribution on the other, with batch and expiry tracking working the same way regardless of which side generates the stock.

[Can ERPNext handle van sales and route-based distribution?](#collapse-2902)

Route and van-sales workflows can be configured within ERPNext's sales and stock modules, typically alongside mobile access for field sales teams, though the specific setup depends on how your routes and settlement process actually work. This is one of the configuration decisions that needs to match your operations rather than a generic default.

[How is expiry-based stock rotation (FEFO) enforced, not just tracked?](#collapse-2903)

FEFO enforcement happens at the point stock is picked for dispatch. The system selects from the batch closest to expiry automatically, rather than relying on a warehouse team member to check manually. Tracking expiry dates without enforcing pick order at dispatch only gets you visibility, not the operational discipline that actually prevents write-offs.

[What's the difference between a WMS and an ERP with batch and expiry tracking for FMCG?](#collapse-2904)

A standalone WMS focuses on warehouse-level stock movement and picking logic. An ERP with native batch and expiry support connects that same data to sales, pricing, GST billing, and financial reporting, so batch-level accuracy carries through the whole order-to-cash flow rather than stopping at the warehouse door.

[How long does an ERPNext implementation take for an FMCG distribution business?](#collapse-2905)

There's no fixed timeline. It depends on how many warehouses and channels are involved, how clean your existing batch and stock data is, and how much of your distribution structure (pricing tiers, routes, returns handling) needs to be mapped into the system. Data migration from non-batch-tracked systems is typically the longest phase, not the core configuration.

If your FMCG operation is still reconciling batch, expiry, and distribution data across separate spreadsheets and systems, [talk to us about your FMCG operations](/services/tailored-erpnext-implementation/) — we work through the actual configuration decisions, batch definition, pricing-expiry interaction, warehouse mapping, rather than starting from a generic template.
