Forecasting
How many of each size to order
A size curve is somebody else's customers, averaged. Once a size has sold in your store, its own sales rate is the better number, and the split comes out of the arithmetic rather than a ratio.
On a reorder, work each size out on its own: units of that size sold, divided by the days that size was actually in stock, times the days the order has to cover, minus what it still holds on the shelf and on the water. Add the sizes up and the split is done. A size curve, whether a printer's ratio table or the split from your first buy, is for sizes with no sales history, and only until they have some. Once a size has sold in your store, its own rate is better evidence than any ratio.
This page is the method for the split. Why a dark size hides inside a healthy product total is on how to stop running out of stock and is not repeated here. The curve gets a hearing first, because it is the right tool for one job and the wrong one for the job most people give it.
Where a size curve comes from
A size curve is an average of other people's orders. The clearest published one is from a UK garment printer, Clothes2order, whose post How To Order the Right Amount of Each T-Shirt Size, dated 14 December 2023 and read on 10 October 2026, gives each adult size's share of its own order history: "the most popular adult t-shirt size is Large (making up, on average, 32% of a given order)", "followed closely by Medium (28%) and then Extra Large (19%)", and "Small is usually 10% of the order", with XXL at 8 percent. It is honest data about a printer's customers ordering shirts for a team or an event, where nobody knows who will turn up. On the first buy of a new product you are in the same position, and the curve is as good a guess as any.
The trouble starts on the second order, because by then you know something the printer never will. Shopify keeps the record per size. Its Help Center page on variants, read on 10 October 2026, says "you can also manage inventory for each variant from the Inventory page", and its page on SKUs, read the same day, says "each product and variant must have its own unique SKU". Every size already carries its own stock count, its own sales and its own sold-out days, and the sales reports page lists a Total sales by product variant report that shows the sales half. A curve laid over the product throws that record away for a stranger's average.
The reorder method, one size at a time
The rate belongs to the size: its units sold in the window divided by the days it was in stock. A size that sold out for half the window sold what it sold in half the days, and dividing by the calendar hands it half its real pace. That mistake lands on sizes harder than on products, because a size sells out alone while the product total looks fine.
Days to cover belong to the product, because its sizes share a supplier, a boat and a cushion for the boat being late. Work them out once, the way the Shopify replenishment guide does, and reuse them. Each size's quantity is its rate times those days, minus what it still holds on the shelf and on the water. Nobody picks a ratio. The ratio is whatever the sizes add up to, and it is different on every order, which is the point.
Here it is on a hoodie in five sizes, over a 60-day window, on an order covering 100 days. The shelf is empty in every size to keep the table short; in your store, subtract. The curve column spreads the same 670 total on the printer's shares, scaled to these five sizes and rounded to whole units, with the stray unit given to large. Every figure is hand arithmetic on an invented product.
| Size | Sold in 60 days | Days in stock | Rate per day | Order on its own rate | Order on the curve | Days the curve's share lasts |
|---|---|---|---|---|---|---|
| S | 30 | 60 | 0.5 | 50 | 69 | 138 |
| M | 120 | 60 | 2.0 | 200 | 193 | 97 |
| L | 90 | 30 | 3.0 | 300 | 222 | 74 |
| XL | 60 | 60 | 1.0 | 100 | 131 | 131 |
| XXL | 12 | 60 | 0.2 | 20 | 55 | 275 |
| Total | 312 | 6.7 | 670 | 670 |
Read the last column against the 100 days every size gets in the own-rate column. On the same order the curve hands XXL 275 days of stock and large 74, so the size that keeps selling out is short again two and a half months after the boat lands while the slowest size holds the better part of a year. Split the total evenly instead, which is what a factory does with a line that says 670 hoodies and nothing more, and large is gone in 45 days while XXL has 670. Measure large over the calendar rather than its 30 selling days, 1.5 a day instead of 3, and its own-rate order halves to 150 and runs out in 50. The method is only as good as the rate underneath it.
A curve is also a snapshot, and your sizes drift. If some of your customers take the next size when theirs is gone, the neighbours' rates run a little high while it is dark, and there is no way to measure by how much. Returns differ by size, and a restocked return still counts as sold in most rates, ours included, which has its own page. The first buy's split was a guess, so there is no reason the second order's should resemble it. Measuring each size every cycle absorbs all of that without anyone having to decide anything.
When the curve still earns its place
A size with no sales cannot be measured, and that is the curve's job. The usual case is a size added to a product that already sells, say a new XXL on a hoodie that has sold S to XL for a year. Take the curve's share for that one size, apply it to the product's measured total, write down that you did, and replace it with the size's own rate as soon as it has a fortnight or two of sales. The same rule covers a brand-new product, where every size is in that position and the whole curve applies, with the first order kept short for the reasons on forecasting a new product with three months of sales.
The other place a ratio turns up is the factory. Some suppliers sell a style in fixed size runs, a carton holding a set ratio, and that is a per-carton minimum wearing a size curve. Rounding the run up until the fastest size is covered leaves the surplus in the slow sizes, so the surplus-cover test from the MOQ page is run per size rather than per product, since it is one size's units that will sit. If the run's ratio is far from your measured one, that gap is the price of the run, and worth negotiating over.
However the numbers were reached, they go on the purchase order per size. The purchase order page says what happens otherwise: the split becomes the factory's guess, and it guesses evenly.
What Restocio does with sizes
Every row in Restocio is a Shopify variant, read by its SKU. A size gets its own sales rate over the days it was in stock, its own order deadline and its own quantity on each freight mode, and a product in five sizes is five rows that never look at each other. There is no size curve anywhere in the app and nothing blends a parent product's sizes, so the split you see is the method above, already run. One trap follows from that. Two variants sharing one SKU are read as one row, with their stock and their sales added together, so give each size its own code.
The limitation follows from the same design. A size with no sales in the window and stock still on the shelf gets no rate and no suggested quantity, and the app does not borrow a share for it from its siblings. On the default settings it still sits on the list, read as stable, with a note that it had no sales in the period. Turn the Hide slow sellers filter on at any number and that size leaves the list until it sells. A size with no sales and an empty shelf sorts to the top at zero days left. If it has sold within the last year, the app takes its pace from its own last selling stretch, marks the number as rough, and suggests a quantity on it; if it has never sold, or last sold too long ago, the row says no pace can be measured and asks you to order by hand. A size under 14 days old says so in its calculation note: its rate is measured over the days it has existed and will swing until it has about two weeks of history. There is no field for the share a new size should take. Type the quantity on the card instead; a number typed on a freight line replaces the app's for that line, and the other sizes keep theirs. Where the per-size rate goes from there, into the deadline and the quantity, is the Shopify replenishment guide.
Common questions
How many of each size should I order?
On a reorder, work each size out separately. Divide the units that size sold by the days it was actually in stock, multiply by the days the order has to cover, and subtract what that size still has on the shelf and on order. The days are the same for every size of one product, because they share the supplier and the boat. The rates are not, and the split is whatever the sizes add up to.
What size ratio should I use for a restock?
None, if the sizes have sold. A ratio is a stand-in for information you did not have on the first buy, and by the second order you have it per size in Shopify. Use each size's own in-stock sales rate and let the ratio fall out. Keep a published curve only for a size that has never sold, and drop it as soon as that size has a couple of weeks of sales.
How do I order a size that has never sold?
Borrow a share for it. Take a published size curve's share for that size, apply it to the product's measured total, and write down that the figure is borrowed. Then replace it with the size's own rate once it has sold for a fortnight or two. For a brand-new product every size is in that position, and the first order should be kept short so the second one is placed on evidence.
Does Restocio use a size curve?
No. Every row is a Shopify variant with its own in-stock sales rate, deadline and quantity, and nothing blends sizes across a parent product. The cost of that is a new size with no sales: it gets no rate and no suggested quantity, and there is no field to give it a share. You type its quantity on the card, and that typed number replaces the app's for that freight line only.
My supplier only sells full size runs. What then?
Treat the run as a per-carton minimum. Work out each size on its own rate first, see how many runs cover the fastest size, and then look at the surplus the slow sizes are left with, in days of cover per size. If that surplus outlives the product's season on one or two sizes, the run's ratio is costing you money, and that gap is what to negotiate over.
Sources
Every source below was opened and read on the date shown against it. Rules, rates and schedules change, so check the current page before you act on a number that matters. If anything here is out of date or wrong, tell us and we will correct it.
- Shopify Help Center, Variants (read 10 October 2026)
- Shopify Help Center, Using SKUs to manage your inventory (read 10 October 2026)
- Shopify Help Center, Sales reports (read 10 October 2026)
- Clothes2order, How To Order the Right Amount of Each T-Shirt Size, 14 December 2023 (read 10 October 2026)
Marcus co-founded Restocio and works on it daily with a Swedish importer who plans their purchasing in it every working day. Restocio is built in Sweden by two founders, one Swedish and one Danish, and Marcus is the Danish one. Why we are building it.
Related reading
- How to stop running out of stock
- What belongs on a purchase order when the supplier is overseas
- How to forecast a new product with only three months of sales
- Minimum order quantities, and what to do when the MOQ is more than you need
- Shopify replenishment, end to end
Restocio plans purchasing for Shopify stores that import. It works out what to order, how much, and whether it should travel by sea, rail or air, so you pay air freight only for the units that genuinely cannot wait.