WoluTools

E-commerce

Run an ABC-XYZ analysis and get reorder points

Upload a CSV with SKU, demand, unit cost and lead time. Each item gets an ABC class by annual value, an XYZ class by how steady its monthly demand is, a safety stock and a reorder point.

or drop it here

CSV · up to 100,000 SKUs per job
Free account needed to run your own file · 3 free jobs a day

See the sample resultColumns the CSV needs

Standard toolIncluded · 3 free jobs a dayFree: 3 jobs a dayPro: up to 200 jobs a day · €12.99/month or €89.99/year
Sample result · fictional shop, 3 SKUsWhat the tool returns for a small stock file

This is the result the tool produced from the 4 sample rows below. Switch the service level to see safety stock and reorder point change.

Target service level

SKUClassAnnual valueSafety stock unitsReorder point units
LAMP-01A · X€31,641111518727679
DESK-03B · —€3,57602
CABLE-02B · —€1,890018
Total€37,107

Shown at 90%95%98% service level. Only LAMP-01 changes: it is the one SKU with monthly history.

  • LAMP-01 has two monthly rows. Its demand barely moves between months, so it is class X and gets a safety stock. It alone makes up 85% of the annual value, which is why it is the only A item.
  • DESK-03 and CABLE-02 have one row each. A single row is read as annual demand: both get an ABC class, XYZ reads “Insufficient history” (—) and safety stock stays 0.
  • Amounts use the currency of your file. The sample prices are in euros.
Show the 4 sample input rows
SKU,Demand,Unit Cost,Lead Time Days
LAMP-01,120,19.90,14
LAMP-01,145,19.90,14
CABLE-02,900,2.10,7
DESK-03,24,149,30
  • result.csvthis table plus annual demand, unit cost and lead days per SKU
  • findings.csvreview notes for the run
  • manifest.jsoninput file name, size and SHA-256 hash, plus the run summary
BringCSV with SKU, demand, unit cost and lead time
GetABC/XYZ class, safety stock and reorder point per SKU
PrivacyEncrypted source · 24-hour result

Columns the CSV needs

All four columns are required. Header names are matched without regard to case or spaces, so “Unit Cost” and “unit_cost” both work.

ColumnAlso acceptedWhat goes in it
SKU—Item identifier
Demandannual_demand, units_soldUnits per month when a SKU has several rows, units per year when it has one
Unit costcostPlain number without a currency sign; 19.90 and 19,90 both work
Lead time dayslead_daysDays from order to arrival

How the numbers are worked out

Annual demand
Several rows for one SKU are monthly history: the average month × 12. A single row is taken as annual demand.
Annual value
Annual demand × unit cost.
ABC class
SKUs sorted by annual value, high to low. A while the SKUs above hold less than 80% of the total value, B below 95%, C after that.
XYZ class
Standard deviation of monthly demand divided by the average month. Up to 0.5 is X, up to 1 is Y, above 1 is Z. One row only: “Insufficient history”.
Safety stock
Service factor × standard deviation of monthly demand × √(lead days ÷ 30), rounded up. The factor is 1.282 at 90%, 1.645 at 95% and 2.054 at 98%.
Reorder point
Annual demand ÷ 365 × lead days + safety stock, rounded up.

Worked example: LAMP-01 at 95%

The two months are 120 and 145 units, so the average month is 132.5 and the standard deviation is 12.5. Annual demand is 132.5 × 12 = 1,590 units, worth €31,641 at €19.90. Safety stock is 1.645 × 12.5 × √(14 ÷ 30) = 14.05, rounded up to 15. The reorder point is 1,590 ÷ 365 × 14 + 15 = 75.99, rounded up to 76 units.

Where your own judgement comes in

A higher service level raises safety stock, so pick the level your business already works to. Seasonality, promotions and supply problems are not modelled, and no demand is invented. Treat the figures as a starting point that a planner checks before any order is placed. Your original file is not changed.

From your file to a reorder list

  1. 1

    Add your CSV

    Sign in with a free account. It includes 3 free jobs a day, one file per job and up to 100,000 SKUs.

  2. 2

    Pick the service level

    90, 95 or 98 percent. It is the only setting.

  3. 3

    Check and download

    Look over the preview, then download result.csv, findings.csv and manifest.json. Results expire after 24 hours.

Questions before you run it

What columns does the CSV need?

Four: SKU, Demand, Unit cost and Lead time days. Several rows for the same SKU count as monthly history; a single row counts as annual demand. Missing or negative values stop the job with an error instead of being estimated.

What happens if a SKU has only one row?

The row is read as annual demand. The SKU still gets an ABC class from its annual value, but XYZ reads “Insufficient history” and safety stock is 0, so the reorder point covers lead-time demand only. No demand is invented to fill the gap.

How is the ABC class calculated?

SKUs are sorted by annual value (annual demand × unit cost), high to low. An item is A while the SKUs above it hold less than 80% of the total value, B below 95%, and C after that. The annual value of each SKU is in result.csv, so any class can be retraced.

Which target service level should I pick?

The control offers 90, 95 and 98 percent, which set a service factor of 1.282, 1.645 or 2.054 in the safety stock formula. Higher levels raise safety stock, so pick the level your business already works to rather than the highest number.

Is the reorder point a forecast?

No. It is an arithmetic estimate from the history you supply. Seasonality, promotions and supply disruption are not modelled, so treat the figure as a starting point for a planner to adjust.

Do I need an account?

Yes, a free account. It includes 3 free jobs a day, and failed jobs are not counted. The sample result on this page needs no upload, so you can check the output format first.