Skip to content
Opt Dir

Supply Chain · Joint Replenishment (JRP)

Dozens of SKUs from the Same Supplier — At What Frequency Do I Order Each So Trucks and Stock Cost Are Minimum Together?

Retail & E-commerce 5 min read
#joint replenishment #JRP #multi-item inventory #power-of-two policy #shared setup cost #supplier cycle #coordinated ordering

When a retailer or distributor pulls dozens of SKUs from one supplier, running each SKU on an independent (s,S) needlessly splits the shared setup cost (truck, customs, contract). Academic name: Joint Replenishment Problem (JRP).

In plain words

This page is for an SMB wholesaler, importer or manufacturer pulling 50-500 SKUs from the same supplier — typically across 3-15 main suppliers. The weekly question is the same: from this supplier, which products should ship today and which can wait until next week? If every product triggers its own order, the same supplier ends up sending three trucks and three customs filings a week; one truck, one customs filing and one setup cost can cover all of it if the groups are right. Manual planning falls apart past 50 SKUs: some weeks a half-empty truck, others three back-to-back orders — fixed costs come back as 5-15% of unit product cost.

Sound familiar?

  • We order 20-200 SKUs from one main supplier; each SKU has its own stock card and order day, so some weeks we receive 3 trucks and other weeks half a truck.
  • We import 10-50 containers per week (furniture, appliances, non-food consumer goods); the planner decides intuitively each month which SKUs go in which container.
  • Truck-haul charge plus customs-filing fee are fixed; for small loads this fixed cost hits 5-15% of unit product cost.
  • Supplier MOQ is defined in total order value; the question 'what else can I add to clear the minimum' is constantly being answered manually.
  • When one SKU drops to its reorder point the order is triggered, but 'what else from the same supplier should I add' is decided per-event — sometimes forgotten, sometimes over-ordered.
  • Days-of-stock varies wildly across SKUs: some sit 90 days, some 20 days — which SKUs inflate average stock turn is not visible.
  • Capacity planning for a new store or warehouse opens 'how many order cycles per week, how many trucks' as a question with no numerical answer.

Why it matters

The losses from ordering each SKU independently under a shared-supplier setting flow through these channels: (1) wasted setup cost — when each SKU triggers its own truck/customs/contract preparation, the shared setup fee is paid N times instead of once, (2) excess truck movements — small frequent loads raise per-unit haul cost and congest gates and receiving docks, (3) MOQ violations or weak utilisation — to clear the supplier minimum order quantity unwanted SKUs get added, or falling under MOQ triggers high-margin ‘small-order’ surcharges, (4) customs filing fragmentation — each separate import order generates a separate filing; joint ordering pools filings, (5) inventory turn imbalance — independent policies leave some SKUs over-stocked and others stocked-out. Field evidence shows joint replenishment cutting total order-plus-holding cost by 5-25%; for an import-heavy SMB retailer or wholesale distributor the typical saving is annual 2-15M TRY of operating margin plus freed working capital.

How it's solved

Technical depth

In one sentence: Pick a single base interval (e.g., open an order to one supplier every 2 weeks), then for each SKU pick a multiplier — does it ride every cycle (×1), every other (×2), or every fourth (×4) — so the truck-customs-contract cost is paid once and inventory does not bloat from over-shipping.

In Operations Research (the discipline that uses math and computers to solve business decisions) the problem is the Joint Replenishment Problem (JRP). The foundational model dates to 1973 under deterministic demand + fixed shared setup cost, with later surveys maturing the literature. Stochastic extensions are developed as the can-order policy. Solution in three stages:

1. Modeling. Inputs: SKU list per supplier, per-SKU mean daily demand and demand variance, per-SKU unit holding cost, per-SKU minor setup cost (fixed cost incurred only when that SKU is in the order, e.g. SKU-specific labelling, quality control), supplier-level major setup cost — one truck haul, one customs filing, one supplier-order setup, paid independently of how many SKUs are included. Plus: supplier MOQ — Minimum Order Quantity (in value or volume), lead time and lead-time variance, shelf-life and stack constraints, demand correlations (do two SKUs substitute for each other). Constraints: holding cost (deterministic), MOQ ≤ sum of price × quantity, per-SKU order period = (positive integer multiplier) × base period, orders within a cycle arrive together. Objective: total annual (shared setup × frequency) + (per-SKU minor setup × frequency) + (per-SKU holding cost) minimum.

2. Solver-driven decision. For deterministic JRP, three classical approaches: (a) RAND algorithm — search the base period T via randomised iterations, computing the optimum integer multiplier per SKU at each iteration; practical and fast, within 1-3% of optimum. (b) Power-of-two integer-ratio policy — restrict multiplier values to powers of two (1, 2, 4, 8, …); theoretical guarantee: within 2% of the true optimum, 100% schedulable (every SKU is guaranteed to appear together on every 2^k multiple of T). (c) Indirect Grouping (IG) vs Direct Grouping — partition SKUs into 2-3 groups first (high-frequency core + medium + rare) and apply a within-group cycle. For stochastic JRP the can-order policy: each SKU has two thresholds — s (must-order) and c (can-order, s < c < S); when one SKU hits s, the order triggers and all SKUs currently below c are added as can-order joiners. Periodic-review (R, S_i) systems and simulation-optimization (try hundreds of demand scenarios, pick the best policy) handle larger instances. Small instances (10-30 SKUs) can be solved as a single MIP (Mixed-Integer Linear Programming — optimisation with some 0/1 variables and some continuous).

3. Field integration. Output in three layers: (a) shared order calendar (weekly or biweekly — for each supplier which weeks orders open, base period T), (b) per-SKU multiplier table (m_i — does each SKU appear every T, every 2T, every 4T; with power-of-two each SKU’s exact participation weeks are deterministic), (c) daily order list (the planner’s screen: in today’s order window, which SKUs are included, in what quantity). At supplier-contract renewal T and m_i are recomputed. Quarterly operations committee: actual vs planned truck count, MOQ violation/below-minimum count, stock turn, joint-replenishment savings report.

Alternatives

Per-SKU independent (s,S) plus manual add-on order

Free

Zero license (within existing stock software)

Who it fits: Small retailer, 20-50 SKUs, few shared suppliers (1-2)

  • + Existing stock software typically supports (s,S)
  • + Planner experience drives 'add another SKU from the same supplier' decisions
  • + No capex required
  • − Shared setup cost not optimised — savings are left on the table
  • − MOQ violation/clearance tracked manually
  • − As SKU count grows 'what other SKU from this supplier' becomes harder to decide
  • − Capacity planning (truck count, customs filings) is weak

Local stock/ERP module with supplier-based order grouping

Enterprise

200K-800K TRY license + 60K-250K TRY/year maintenance (regional SMB market)

Who it fits: Mid-size retailer or distributor (50-300 SKUs, 2-10 main suppliers)

  • + Local regulation and customs integration
  • + Supplier-grouped order screen (SKUs from the same supplier on one page)
  • + Local-language UI and support
  • − JRP optimization module is typically absent — only manual grouping is supported
  • − Power-of-two policy is rarely supported
  • − Stochastic JRP (can-order) is missing from most local software

International supply-planning software

Enterprise

600K-3M TRY license + 200K-700K TRY/year maintenance

Who it fits: Large retailer or chain distributor (300-3,000 SKUs, 10+ main suppliers)

  • + Multi-item joint-replenishment module is mature — base-period + per-product multiplier and two-threshold policies included
  • + Stochastic demand and variable lead-time modelling
  • + Multi-echelon (DC + store) integrated
  • + Supplier MOQ, price breaks, volume discounts integrated
  • − High license + 9-15 month rollout
  • − Regional customs/regulation customisation adds project time
  • − Operations training is a wide program

Open-source solver + custom JRP module

Open Source

License free; in-house build 16-32 weeks or 600K-1.5M TRY consultancy

Who it fits: Chain with a data/OR team, integrating with existing ERP

  • + No license fee
  • + Joint replenishment methods (base-period search, integer-multiple period policy with powers-of-two, two-threshold stochastic policy) map cleanly to open-source solvers
  • + Stochastic extensions can be added via simulation-optimization
  • − Requires in-house OR specialist + ERP integration team
  • − Supplier MOQ, price breaks, volume discounts must be custom-coded
  • − Going from academic prototype to field system adds 6-12 months

Recommendation

Small
20-50 SKUs, 1-2 main suppliers: independent (s,S) + supplier-based weekly ‘joint order’ checklist is enough. Three core rules (fixed weekly order day per supplier, an MOQ-clearing add-on SKU list, manual power-of-two — some SKUs weekly, some biweekly, some monthly) deliver 5-10%. JRP software investment will not pay back.
Medium
50-300 SKUs, 2-10 main suppliers: a JRP module on the local ERP, or a compact international supply-planning tool. 6-9 month pilot. Start with 1-2 main suppliers in pilot — set base period T via power-of-two, compute m_i per SKU. Expected savings: total order + holding cost -8-15%, truck count -10-20%. Payback 18-30 months.
Large
300+ SKUs, 10+ main suppliers, multiple warehouses: full international supply-planning tool + JRP + multi-echelon + customs integration. 1-3M TRY/year total investment. Payback 24-36 months. Savings 15-25%, plus freed working capital as a significant extra return.

Ask in the meeting

  • Which approach does the joint-replenishment module use — base-period search, integer-multiple period policy (each SKU at 1, 2, 4, 8 times the base period), two-threshold stochastic policy, exact mathematical programming, or only supplier-based manual grouping?
  • Is deterministic (fixed demand) or stochastic (random demand + safety stock) treatment supported? Is demand variance a per-SKU parameter?
  • Is the integer-multiple period policy (each SKU at 1, 2, 4, 8 times the base period) supported? Is the per-SKU period multiplier visible as a table?
  • How is supplier MOQ (total value or volume) applied to the order cycle — hard constraint or soft? Are MOQ-clearing 'add-on' SKU suggestions automatic?
  • Are shared setup cost (truck, customs filing, supplier-order setup) and SKU-specific cost (labelling, quality check) modeled as separate parameters? Can shared setup cost be set per supplier?
  • Can demand correlation (do two SKUs substitute, when one sells does the other drop) be brought into the model?
  • Is lead-time variance a per-SKU parameter? When 'early-arriving SKU' and 'late-arriving SKU' fall into the same order cycle, how is planning done?
  • If the contract ends, in what standard format can we export order-cycle history, the supplier-SKU mapping, MOQ history, and freight data?

Technical details

Editor’s note

In plain speech this problem is called “consolidating supplier orders”, “filling the truck”, or “shared order day”. In academic literature it sits under one umbrella: the Joint Replenishment Problem (JRP) — a classical OR family developed since the 1970s.

This problem is about multiple SKUs sharing a joint order cycle instead of each SKU running its own (s,S). Major setup costs (truck, customs, contract) are split across the N products. The (s,S) model (problem #004) solves reorder-point + order-up-to-level for a single SKU; Wagner-Whitin (problem #016) solves single-SKU multi-period lot sizing; newsvendor (problem #011) solves single-SKU single-period under demand uncertainty. JRP is a different family: N SKUs sharing a major setup.

Most-skipped point in the sector: power-of-two policies. In practice each SKU renews at its own period; if the period values are picked arbitrarily, the order calendar becomes chaotic — it’s unclear which SKUs arrive in any given week, customs-filing pooling falls apart. The academic result is that restricting periods to powers of two of the base period T (T, 2T, 4T, 8T, …) keeps the solution within 2% of the true optimum and adds schedulability: every SKU is guaranteed to be on the order list at integer-multiple times of T, truck-fill becomes predictable. The principle extends beyond JRP into one-warehouse-multi-retailer and broader multi-echelon coordination.

Second skipped point: deterministic vs stochastic. The classical JRP model assumes constant demand; real retail demand is random. The stochastic extension is the can-order policy: when one SKU hits its reorder point the joint order is triggered; SKUs currently below the can-order threshold (s < c < S) are added as joiners. The approach is common in practice but analytically complex; for small-to-mid retail a simple power-of-two + safety-stock blend is usually enough.

Step-by-step — for the SMB

Stage 1 — Measure first, plan second. At least 12 months of per-supplier data: which SKUs ship together in each joint order and at what quantity, truck-fill percent, SKUs per customs filing, weekly sales and variance per SKU, planned vs actual lead time per SKU, supplier MOQ value and violation count. Demand correlations: which SKUs rise together, which substitute.

Stage 2 — Extract the knowledge capital. Supplier-SKU matrix (per supplier: active SKU count, shared major setup cost, average order frequency, MOQ rule). Within-supplier ABC: which SKUs are high-value (must come every T), medium (every 2T), low (every 4T). Separate major vs minor setup: truck haul + customs filing fixed (major), SKU-specific label + QC variable (minor).

Stage 3 — Pilot. 8-12 weeks. For a supplier set (e.g. the 1-2 suppliers with the highest SKU count) fix base period T (e.g. 2 weeks). Compute power-of-two multiplier m_i per SKU (high-value m_i=1, medium 2, low 4). Run in parallel with the current independent (s,S). Success criteria written in advance: truck count -10% minimum, total order + stock cost -5% minimum, MOQ violations -50%.

Stage 4 — Rollout. 9-15 months to extend across all main suppliers. Stochastic extension (can-order or safety stock + periodic review) can be added. Quarterly operations committee: truck-fill, MOQ compliance, stock turn, T and m_i updates at supplier-contract renewals.

Risks — what can go wrong

  1. Unmodelled demand correlation breaks the plan. If two SKUs substitute (when one sells the other stalls), the T and m_i values computed under the independence assumption come out wrong in the field. Recalibrate the correlation matrix every 6 months.
  2. Soft-modelled supplier MOQ. Academic JRP rarely models MOQ; if ‘add-on SKU’ suggestions are not automatic for cycles below MOQ, the operation drifts into forced add-ons or pays the high small-order surcharge. MOQ must be a hard constraint.
  3. Unaccounted customs-filing pooling. Opening one customs filing is a meaningful part of major setup; the joint order cycle must produce the correct filing (HS-code compatibility, single declaration with SKU list). This is operational discipline that must be checked before contract renewal.
  4. Single-supplier lock-in. If the JRP optimum concentrates on one main supplier, a price hike or delivery slip there leaves the operator weak. Balance the JRP optimum at the policy level with a multi-supplier rule (every SKU has at least two approved sources).

Technical view of the solution method

ApproachTypical scaleSolve timeGuaranteed optimum?
Manual + spreadsheet (supplier-based grouping)Small retailer, 20-50 SKUsminutesNo, 60-75% optimum
RAND algorithmMid, 50-200 SKUs, deterministicminutes97-99% sub-optimal
Power-of-two integer-ratio policyMid-large, 100-500 SKUsminutes-hoursWithin 2% of optimum
Indirect Grouping (IG) heuristicMid-large, group-basedminutesGood practical quality
Can-order policyStochastic demand, 50-500 SKUsminutes (with simulation)No, good practical quality
MIP — single periodSmall, under 30 SKUsminutes-hoursYes (within bound)
Simulation-optimizationLarge + stochastichoursNo, good practical quality

Objective function choices:

  • Objective 1 — Minimum total annual cost (major setup + minor setup + holding): Classical JRP; for cash-tight operators.
  • Objective 2 — Minimum truck/container count: For logistics-capacity-bound operators.
  • Objective 3 — Minimum cost under service-level constraint: For customer-facing operators.
  • Objective 4 — Maximum stock turn: For working-capital-bound operators.

Multi-objective: weighted sum or hierarchical (first MOQ compliance, then truck count, finally holding cost). If a power-of-two policy is picked, schedulability is an extra objective.

Academic sources

Listed in the sources block of this page’s frontmatter.

Sources

  • Goyal, S. K. (1973). Determination of economic packaging frequency of items jointly replenished. Management Science, 21(4), 436-443. Foundational JRP model.
  • Goyal, S. K. and Satir, A. T. (1989). Joint replenishment inventory control: deterministic and stochastic models. European Journal of Operational Research, 38(1), 2-13. Classical survey.
  • Khouja, M. and Goyal, S. (2008). A review of the joint replenishment problem literature: 1989-2005. European Journal of Operational Research, 186(1), 1-16. Current survey.
  • Roundy, R. (1985). 98%-effective integer-ratio lot-sizing for one-warehouse multi-retailer systems. Management Science, 31(11), 1416-1430. Power-of-two policies, 98%-effective guarantee.
  • Atkins, D. R. and Iyogun, P. O. (1988). Periodic versus ‘can-order’ policies for coordinated multi-item inventory systems. Management Science, 34(6), 791-796. Stochastic JRP via can-order policy.
  • YÖK Thesis Center — keywords: ‘ortak siparis’, ‘joint replenishment’ or ‘multi-item inventory’ — 15+ theses from TR academia. tez.yok.gov.tr

Glossary

Joint Replenishment Problem
Operations research problem of coordinating the order frequencies of N SKUs that share a major supplier setup cost (truck haul, customs filing, supplier-order setup), to minimise total long-run cost (setup plus holding).
Power-of-Two Policy
In multi-product shared-setup inventory systems, restricting each product's order period to powers of two of a base period T (T, 2T, 4T, ...) yields a solution within 2% of the true optimum and is field-schedulable (Roundy 1985).
MIP
An optimization model where some decision variables are forced to be whole numbers (e.g. number of trucks, number of shifts).
EOQ
The classic inventory formula for the most economic order quantity to place with a supplier.
Was this helpful?
Suggest correction

Related problems

How Much of Each Product Should I Order So I Neither Run Out Nor Pile Up?

Written for retail, e-commerce, or manufacturing SMBs managing 500-5,000 SKUs. If your purchasing team still places orders every month from a spreadsheet using last-three-months average plus ten percent, and yet you see empty shelves and clogged warehouses at the same time, you are in this problem. When the same company carries both stockouts (5-15% lost sales) and dead inventory (10-25% capital tied up), intuition has hit its limit: seasonality, lead-time uncertainty, and slow-moving SKUs cannot be corrected by hand item-by-item. Systematic forecasting paired with an inventory policy typically frees 1.8-5.4M TRY/year of working capital on 50M TRY revenue and lifts the service level from roughly 85% to 95%.

Retail & E-commerce 4 min

Stock Is Not Clearing as the Season Ends — When and How Deep Should I Mark Down So That Margin Holds and Dead Stock Stays Low?

This page is for you if you run a seasonal-collection fast-fashion retailer, a 30-100 store apparel/shoes/accessories chain, or a fresh-food chain (greengrocer, bakery, butcher). The classic pain: a 200-1,000 SKU collection sells for 4-12 weeks and then the unsold stock becomes a problem — discount too early and you erode the gross margin, discount too late and you sit on a pile of dead stock at the end of the season. The decision: which item, when, and by what percentage to mark down? In a mid-size fashion chain run on gut-feel rules, 20-35% of end-of-season stock ends up as salvage; a proper markdown schedule lifts the gross margin by 5-15%, cuts dead stock by 20-30%, and adds 15-60 million TRY of operating margin a year on a typical revenue base.

Retail & E-commerce 7 min
Esc Close