Florentin Ganea · 22.10.2026 · 8 minute de citit
Răspunsul scurt: stocul de siguranță e rezerva care te acoperă când vinzi peste medie sau când furnizorul întârzie. Formula completă e Z × abaterea standard a consumului zilnic × √termenul de livrare, unde Z vine din nivelul de serviciu ales (1,65 pentru 95%). Varianta simplă e consumul zilnic × zilele de marjă. Comanzi când stocul disponibil coboară sub consum zilnic × termen + stoc de siguranță, adică sub punctul de reaprovizionare.
Contextul: Gestiunea stocurilor în distribuție: ghid complet. Acolo am arătat varianta simplă pe un singur produs. Aici o duci pe tot sortimentul, în Excel, cu variația vânzărilor și a livrărilor luată din date, nu din ochi.
Dacă vinzi exact 40 de bucăți în fiecare zi și furnizorul livrează exact în 5 zile, nu ai nevoie de stoc de siguranță. Comanzi când mai ai 200 de bucăți și marfa nouă intră în ziua în care se termină cea veche. În realitate vinzi 25 într-o zi și 60 în alta, iar livrarea vine uneori în 7 zile. Stocul de siguranță acoperă exact diferența asta: variația, nu consumul.
Nu e „stoc în plus, ca să fim liniștiți”. Nu e nici stocul minim din ERP, care de obicei e pragul de comandă. Și nu e o cifră pe toată firma: un articol care se vinde constant are nevoie de foarte puțin, unul cu vânzări neregulate de mult mai mult, chiar dacă vând la fel în medie.
De aici vine și greșeala opusă. Când marja e pusă din ochi, de obicei e pusă larg și la fel pe toate produsele. Ajungi cu stoc de siguranță mare la produse stabile, care nu au nevoie de el, și tot cu rupturi la cele neregulate, unde rezerva e prea mică.
Ai două formule. Amândouă sunt corecte, dar pentru situații diferite.
Varianta simplă: stoc de siguranță = consum zilnic × zile de marjă
Zilele de marjă le stabilești din istoric: cu cât întârzie de obicei furnizorul, plus o zi sau două pentru vârfurile de vânzări.
Formula statistică: stoc de siguranță = Z × σ consum × √termen de livrare
| Nivel de serviciu | Factor Z | Ce înseamnă |
|---|---|---|
| 90% | 1,28 | o ruptură la circa 10 cicluri de aprovizionare |
| 95% | 1,65 | o ruptură la circa 20 de cicluri |
| 98% | 2,05 | o ruptură la circa 50 de cicluri |
| 99% | 2,33 | o ruptură la circa 100 de cicluri |
Observă cum crește: de la 95% la 99%, factorul trece de la 1,65 la 2,33, deci stocul de siguranță crește cu aproximativ 40% pentru patru puncte procentuale.
Dacă furnizorul e și el neregulat, formula statistică are o variantă care adaugă și abaterea standard a termenului de livrare:
Z × √(termen × σ consum² + consum² × σ termen²). În Excel: =ROUNDUP(F2*SQRT(D2*C2^2+B2^2*I2^2),0), cu σ termen în
coloana I. La furnizorii care livrează la zi nu-ți trebuie.
| Situația | Formula potrivită | De ce |
|---|---|---|
| Abia începi, nu ai date curate pe zile | simplă | Ai nevoie doar de consumul mediu și de istoricul întârzierilor. |
| Articole clasa C, vânzări rare | simplă, cu marjă mică | Abaterea standard pe vânzări rare iese mare și nesigură. |
| Articole A și B cu vânzări zilnice | statistică | Ține cont de cât de neregulat e fiecare articol. |
| Furnizor cu întârzieri mari și dese | statistică, cu σ termen | Variația livrării cântărește de obicei mai mult decât cea a vânzărilor. |
| Produs nou, sub 2 luni de istoric | simplă, cu consum estimat | Nu ai destule zile pentru o abatere standard credibilă. |
Formulele de mai jos sunt cu numele în engleză, cum apar în majoritatea instalărilor de Excel din România. Dacă Excelul tău e în română, numele funcțiilor diferă, dar logica e aceeași.
Exporți ieșirile pe ultimele 90 de zile, pe articol și pe dată. Cu un tabel pivot faci o foaie cu un rând pe articol și o coloană pe zi, de la C la CN. Zilele fără vânzări primesc 0. Zilele în care articolul a avut stoc zero le lași goale: AVERAGE și STDEV.P ignoră celulele goale, dar nu și zerourile.
=AVERAGE(C2:CN2)=STDEV.P(C2:CN2)Pe o foaie separată, câte un rând pe furnizor: media zilelor dintre data comenzii și data recepției, din ultimele 6 luni. Îl aduci lângă articol cu
=VLOOKUP(furnizor; Furnizori!A:B; 2; FALSE). Separatorul poate fi virgulă sau punct și virgulă, după setările regionale.
Cu consumul mediu în B, abaterea standard în C, termenul în D și nivelul de serviciu în E:
=NORM.S.INV(E2)=ROUNDUP(F2*C2*SQRT(D2),0)=ROUNDUP(B2*D2+G2,0)Rotunjești în sus pentru că nu poți ține 44,3 bucăți.
Comanzi când stocul disponibil, adică stocul fizic plus ce ai comandat și n-a sosit minus ce ai rezervat pentru clienți, coboară sub punctul de reaprovizionare. Dacă ai zile fixe de comandă la furnizor, cantitatea e nivelul maxim minus stocul disponibil, unde nivelul maxim = consum × (zile până la următoarea comandă + termen) + stoc de siguranță. Comanda minimă și baxul le aplici la sfârșit.
Cifrele sunt ilustrative, alese ca să arate cum se comportă formula, nu de la un client. Aceleași cifre sunt în modelul Excel.
| Articol | Consum/zi | σ consum | Termen (zile) | Nivel de serviciu | Stoc de siguranță | Punct de reaprovizionare |
|---|---|---|---|---|---|---|
| Apă minerală 0,5 L, bax | 40 | 12 | 5 | 95% | 1,65 × 12 × √5 ≈ 45 | 40 × 5 + 45 = 245 |
| Cafea măcinată 250 g | 25 | 10 | 7 | 98% | 2,05 × 10 × √7 ≈ 55 | 25 × 7 + 55 = 230 |
| Detergent rufe 2 kg | 12 | 6 | 10 | 95% | 1,65 × 6 × √10 ≈ 32 | 12 × 10 + 32 = 152 |
| Biscuiți 200 g | 60 | 25 | 3 | 95% | 1,65 × 25 × √3 ≈ 72 | 60 × 3 + 72 = 252 |
| Ulei de măsline 1 L | 2 | 1,5 | 14 | 90% | 1,28 × 1,5 × √14 ≈ 8 | 2 × 14 + 8 = 36 |
Ce citești din tabel:
Lunar, din ultimele 90 de zile, și separat la intrarea în sezon, pentru marfa sezonieră. Între recalculări urmărești două semnale: rupturile pe articolele A și B și zilele de stoc pe categorii. Rupturi care cresc înseamnă rezerve prea mici sau termene reale mai lungi. Zile de stoc care cresc fără rupturi înseamnă rezerve prea mari.
Recalcularea manuală pe câteva mii de articole durează. Dacă exportul din ERP vine automat în același format, modelul se reface singur, iar tu verifici doar excepțiile.
Dacă vrei stocul de siguranță și pragurile calculate pe tot sortimentul, cu articolele unde comanzi prea mult sau prea puțin, auditul de stoc le livrează în 5 zile.
Nu există o cifră pe toată firma, pentru că iese pe fiecare articol din cât variază vânzările și cât durează livrarea. Ca ordin de mărime, la un distribuitor cu furnizori care livrează în câteva zile, stocul de siguranță stă de obicei între 1 și 5 zile de consum pe articolele de bază. Dacă la tine e de 15–20 de zile pe tot sortimentul, cel mai probabil marja a fost pusă din ochi și n-a mai fost recalculată.
Nu sunt același lucru, deși multe ERP-uri le amestecă. Stocul de siguranță e rezerva pentru variație: zilele cu vânzări peste medie și întârzierile furnizorului. Stocul minim din ERP e de obicei pragul la care sistemul îți propune comanda, adică punctul de reaprovizionare: consumul pe termenul de livrare plus stocul de siguranță. Dacă pui în câmpul de stoc minim doar stocul de siguranță, comanzi prea târziu și ai rupturi.
Pe clase, nu unul singur. Un punct de pornire: 98% pentru articolele care fac cele mai multe vânzări, 95% pentru restul clasei A și B, 90% pentru clasa C. Nivelul de serviciu de aici e șansa să nu rămâi fără marfă între două recepții. Fiecare procent în plus costă tot mai mult stoc, iar de la 95% la 99% stocul de siguranță crește cu aproximativ 40%.
Pe ultimele 90 de zile, de regulă. E destul de lung ca să prindă variația normală și destul de scurt ca să reflecte ce se vinde acum. Pentru marfa sezonieră iei aceeași perioadă de anul trecut, ajustată cu tendința de acum. Din calcul scoți zilele în care articolul a avut stoc zero și comenzile excepționale care nu se repetă.
Pe articol. Abaterea standard și termenul de livrare diferă de la un produs la altul, chiar în aceeași categorie, iar o medie pe categorie îți dă prea mult stoc la produsele stabile și prea puțin la cele neregulate. Pe categorie stabilești doar regulile: nivelul de serviciu și cât de des recalculezi.
Trimite exportul de stoc și vânzări. În 24–48h îți arătăm unde rezervele sunt prea mari și unde sunt prea mici pentru cât vinzi.
Florentin Ganea · 22.10.2026 · 8 min read
The short answer: safety stock is the buffer that covers you when you sell above average or when the supplier is late. The full formula is Z × standard deviation of daily consumption × √lead time, where Z comes from the service level you choose (1.65 for 95%). The simple version is daily consumption × days of margin. You order when available stock falls below daily consumption × lead time + safety stock, meaning below the reorder point.
The context: Inventory management in distribution: the complete guide. There I showed the simple version on a single product. Here you take it across the whole range, in Excel, with the variation in sales and deliveries taken from the data, not set by eye.
If you sell exactly 40 units every day and the supplier delivers in exactly 5 days, you don't need safety stock. You order when you have 200 units left and the new goods arrive on the day the old ones run out. In reality you sell 25 one day and 60 the next, and delivery sometimes takes 7 days. Safety stock covers exactly that difference: the variation, not the consumption.
It isn't "extra stock, just to be safe". Nor is it the minimum stock in the ERP, which is usually the ordering threshold. And it isn't one number for the whole company: an item that sells steadily needs very little, one with irregular sales needs much more, even if they sell the same on average.
That's where the opposite mistake comes from. When the margin is set by eye, it's usually set wide and the same on every product. You end up with large safety stock on stable products that don't need it, and still with stockouts on irregular ones, where the buffer is too small.
There are two formulas. Both are correct, but for different situations.
The simple version: safety stock = daily consumption × days of margin
You set the days of margin from history: how late the supplier usually is, plus a day or two for sales peaks.
The statistical formula: safety stock = Z × σ consumption × √lead time
| Service level | Z factor | What it means |
|---|---|---|
| 90% | 1.28 | one stockout in about 10 replenishment cycles |
| 95% | 1.65 | one stockout in about 20 cycles |
| 98% | 2.05 | one stockout in about 50 cycles |
| 99% | 2.33 | one stockout in about 100 cycles |
Notice how it grows: from 95% to 99%, the factor goes from 1.65 to 2.33, so safety stock rises by about 40% for four percentage points.
If the supplier is irregular too, the statistical formula has a version that also adds the standard deviation of the lead time:
Z × √(lead time × σ consumption² + consumption² × σ lead time²). In Excel: =ROUNDUP(F2*SQRT(D2*C2^2+B2^2*I2^2),0), with
σ lead time in column I. With suppliers who deliver on time you don't need it.
| Situation | Formula to use | Why |
|---|---|---|
| You're just starting, no clean daily data | simple | You only need average consumption and the history of delays. |
| Class C items, rare sales | simple, with a small margin | Standard deviation on rare sales comes out large and unreliable. |
| Class A and B items with daily sales | statistical | It accounts for how irregular each item is. |
| Supplier with large, frequent delays | statistical, with σ lead time | Delivery variation usually weighs more than sales variation. |
| New product, under 2 months of history | simple, with estimated consumption | You don't have enough days for a credible standard deviation. |
The formulas below use the English function names, as they appear in most Excel installations in Romania. If your Excel is in Romanian, the function names differ, but the logic is the same.
Export outbound movements for the last 90 days, by item and by date. With a pivot table you build a sheet with one row per item and one column per day, from C to CN. Days with no sales get 0. Days when the item was out of stock stay empty: AVERAGE and STDEV.P ignore empty cells, but not zeros.
=AVERAGE(C2:CN2)=STDEV.P(C2:CN2)On a separate sheet, one row per supplier: the average number of days between order date and receipt date, over the last 6 months. You bring it next to
the item with =VLOOKUP(supplier; Suppliers!A:B; 2; FALSE). The separator may be a comma or a semicolon, depending on regional settings.
With average consumption in B, standard deviation in C, lead time in D and service level in E:
=NORM.S.INV(E2)=ROUNDUP(F2*C2*SQRT(D2),0)=ROUNDUP(B2*D2+G2,0)You round up because you can't hold 44.3 units.
You order when available stock, meaning physical stock plus what you've ordered and hasn't arrived minus what you've reserved for customers, falls below the reorder point. If you have fixed ordering days with the supplier, the quantity is the maximum level minus available stock, where maximum level = consumption × (days until the next order + lead time) + safety stock. Apply the minimum order and case size at the end.
The numbers are illustrative, chosen to show how the formula behaves, not from a client. The same numbers are in the Excel template.
| Item | Consumption/day | σ consumption | Lead time (days) | Service level | Safety stock | Reorder point |
|---|---|---|---|---|---|---|
| Mineral water 0.5 L, case | 40 | 12 | 5 | 95% | 1.65 × 12 × √5 ≈ 45 | 40 × 5 + 45 = 245 |
| Ground coffee 250 g | 25 | 10 | 7 | 98% | 2.05 × 10 × √7 ≈ 55 | 25 × 7 + 55 = 230 |
| Laundry detergent 2 kg | 12 | 6 | 10 | 95% | 1.65 × 6 × √10 ≈ 32 | 12 × 10 + 32 = 152 |
| Biscuits 200 g | 60 | 25 | 3 | 95% | 1.65 × 25 × √3 ≈ 72 | 60 × 3 + 72 = 252 |
| Olive oil 1 L | 2 | 1.5 | 14 | 90% | 1.28 × 1.5 × √14 ≈ 8 | 2 × 14 + 8 = 36 |
What the table tells you:
Monthly, from the last 90 days, and separately at the start of the season for seasonal goods. Between recalculations you watch two signals: stockouts on A and B items and days of stock by category. Rising stockouts mean buffers that are too small or real lead times that are longer. Rising days of stock without stockouts mean buffers that are too large.
Recalculating by hand across a few thousand items takes time. If the ERP export comes in automatically in the same format, the model rebuilds itself and you only check the exceptions.
If you want safety stock and reorder points calculated across your whole range, with the items where you order too much or too little, the stock audit delivers them in 5 days.
There's no single number for the whole company, because it comes out per item from how much sales vary and how long delivery takes. As an order of magnitude, at a distributor with suppliers who deliver within a few days, safety stock usually sits between 1 and 5 days of consumption on core items. If yours is 15 to 20 days across the whole range, the margin was most likely set by eye and never recalculated.
They are not the same thing, although many ERPs mix them up. Safety stock is the buffer for variation: days with above-average sales and supplier delays. Minimum stock in the ERP is usually the threshold at which the system proposes an order, meaning the reorder point: consumption over the lead time plus safety stock. If you put only the safety stock into the minimum stock field, you order too late and run out.
By class, not a single one. A starting point: 98% for the items that make most of your sales, 95% for the rest of class A and B, 90% for class C. Service level here means the chance of not running out between two deliveries. Every extra percentage point costs more and more stock, and going from 95% to 99% raises safety stock by about 40%.
Over the last 90 days, as a rule. It's long enough to capture normal variation and short enough to reflect what sells now. For seasonal goods, take the same period last year, adjusted for the current trend. Leave out the days when the item was out of stock and one-off orders that won't repeat.
Per item. Standard deviation and lead time differ from one product to another, even within the same category, and a category average gives you too much stock on stable products and too little on irregular ones. At category level you only set the rules: the service level and how often you recalculate.
Send your stock and sales export. Within 24 to 48 hours we'll show you where your buffers are too large and where they're too small for what you sell.