Skip to main content
Blog Logistica

What a pharmacy delivery really costs: a full-cost model built from public sources

2026-09-10 Updated 2026-09-11 Maurizio Piredda — CFO and Co-founder

In pharmaceutical wholesale distribution there is one number almost nobody calculates in full: what it actually costs to walk a delivery through a pharmacy door. Not the fuel. Not the marginal cost of one extra kilometre. The full cost — vehicle, tied-up capital, insurance, and above all the fully loaded employer cost of the driver for the minutes that single stop consumes.

We rebuilt it from public, verifiable sources only — no confidential industry data, no numbers requested from any operator. The central result is €14.17 per delivery, within a range of €11.45 to €17.95. The full method is below, so anyone can reproduce the calculation and argue with it.

The headline, though, isn’t the level. It’s the composition: between 49% and 64% of that cost is not distance. It is time.

Why build a model instead of quoting a benchmark

Industry cost averages share one flaw: they are self-reported, aggregated over small samples, and it is almost never possible to know what they include. A “cost per delivery” average collected from a dozen companies mixes operators who run their own fleet with those who outsource, those who charge the driver’s full cost with those who count only overtime, those still depreciating vans with those whose vehicles are already written down. The resulting figure is easy to read and impossible to use.

A bottom-up model is more laborious, but it is reproducible (every source is public), decomposable (you can see which line dominates) and refreshable (when diesel moves, you recalculate in a second). This article states every parameter with its source and every formula in full: it is everything needed to redo the calculation from scratch and, if warranted, take it apart.

A note for readers outside Italy

Two features of the Italian market drive the economics and have no direct equivalent in most countries. First, the wholesaler’s gross margin is fixed by law, not negotiated: 3% of the public price net of VAT, plus a 0.65% supplement introduced in the 2025 budget law — from which generics were later excluded by a February 2026 administrative court ruling. A distributor cannot price its way out of a cost increase. Second, Italy has an unusually dense pharmacy network — 20,295 pharmacies, one per 2,938 inhabitants against a European average of one per 3,237 — served multiple times a day, with a statutory twelve-hour delivery obligation. High drop frequency and small baskets are the norm, not an exception.

The model inputs, one by one

1. Vehicle cost — ministerial reference tables

Italy’s Ministry of Infrastructure and Transport periodically publishes indicative reference values for the operating costs of road freight companies. Table A covers precisely the vehicle used in pharmaceutical distribution: gross weight under 3.5 tonnes, over a reference distance of 30,000 km per year. The most recent update is March 2026.

From it we take, in euro per kilometre: vehicle acquisition (0.097–0.610), maintenance (0.150–0.300), tyres (0.020–0.063), insurance (0.042–0.209), plus road tax, roadworthiness testing and tolls.

One methodological point materially changes the result. The lines that are not proportional to distance — acquisition, insurance, road tax, testing — are still expressed per kilometre in Table A, but on an assumption of 30,000 km a year. A pharmaceutical distribution van covers considerably more. The model therefore rescales those lines to actual annual mileage (32,000–55,000 km). Skipping that step overstates fixed cost per kilometre by 45% on average, and by as much as 83% at the higher mileages.

2. Fuel — repriced to this week

Here the ministerial table is not enough: its energy line is frozen at March 2026. We repriced fuel against the national weekly listing of 10 September 2026: self-service diesel on the ordinary road network at €2.184 per litre.

Two corrections are commonly missed, and they pull in opposite directions:

  • VAT is recoverable for a business. The relevant cost is not €2.184 but €1.7902 per litre. Putting the pump price into a corporate cost model overstates fuel by 22%.
  • The commercial diesel excise rebate does not apply. It is reserved for vehicles of 7.5 tonnes and above; pharmaceutical delivery vans fall outside it. Counting it understates fuel.

At 8–11 km per litre — the low end being a van running an active refrigeration unit for the cold chain — fuel accounts for €0.163–0.224 per kilometre.

3. The cost of time — two sources that confirm each other

Table A puts employer cost for wages and travel allowances between €36,876 and €55,711 a year. Over 1,778 productive hours — a 39-hour contractual week net of holidays, public holidays and paid leave — that is €20.74–31.33 per hour.

We then rebuilt the same figure independently from the national logistics and freight transport collective agreement: the minimum monthly rate for the B3 driving grade effective 1 January 2026 (€1,840.37), across 14 monthly payments, grossed up for social contributions and severance accrual. Result: €36,806 a year, or €20.70 per hour.

Two independent public sources, converging within 2.13% of the ministerial floor. That is what makes the rest of the model trustworthy: the parameter carrying the most weight survives an independent check.

4. Route geometry — Federfarma, ISTAT and Daganzo

How far is one stop from the next? No need to ask anyone: it follows from how densely pharmacies sit on the ground.

Federfarma, the federation of Italian community pharmacy owners, publishes a census of the network: 20,295 pharmacies under national health service convention. ISTAT, the national statistics institute, gives each region’s surface area. Together they yield delivery-point density per square kilometre. To go from density to route length we use Daganzo’s continuous approximation (1984), the classic result in the vehicle routing problem literature: a tour visiting n points spread over an area A runs approximately k·√(n·A), with k ≈ 0.57. Per stop this reduces to k/√density. We add a circuity factor of 1.30–1.40 to convert straight-line distance into road distance, plus the round-trip line-haul from the depot.

One caveat forced us to redo the calculation. The density that matters is that of doors served, not market share. Every Italian pharmacy buys from several wholesalers, so any single operator holds a modest share of spend (20–35%) — yet a regional full-line distributor still calls at nearly every pharmacy in its catchment, often more than once a day. Conflating the two collapses estimated density and inflates cost by more than 30%.

5. The value of a delivery — derived, not assumed

Judging whether a cost is sustainable requires a denominator, and we derived that from public data too: total Italian pharmacy turnover (€27.9 billion in 2025, Federfarma), net of VAT and of the pharmacy’s own margin, divided by the number of pharmacies and by the deliveries each receives in a year from all its suppliers.

That yields €972–1,562 of goods per delivery, on which the statutory 3.65% margin is worth €35.48–57.02.

Results by regional density

The model runs as a Monte Carlo simulation: 20,000 draws per region, with uncertain parameters sampled from their ranges. That is deliberate — stacking every worst case at once produces scenarios of near-zero probability, and it is the most common error in estimates of this kind.

RegionPharmacies/km²km per delivery (p50)€ per delivery (p50)time share
Lombardy0.1355.813.9864%
Campania0.1265.913.6562%
Liguria0.1146.013.4361%
Lazio0.1016.213.2459%
Veneto0.0816.513.1857%
Piedmont0.0666.913.3555%
Apulia0.0666.913.3055%
Sicily0.0637.013.4054%
Emilia-Romagna0.0637.013.4254%
Marche0.0587.213.5154%
Tuscany0.0547.313.6353%
Calabria0.0537.313.6553%
Friuli-V.G.0.0537.313.6953%
Abruzzo0.0517.413.6853%
Molise0.0388.114.5051%
Umbria0.0358.314.7851%
Sardinia0.0269.015.8350%
Trentino-A.A.0.0249.316.3150%
Basilicata0.0229.616.5749%
Aosta Valley0.01610.718.1948%

National figure, weighted by pharmacy count: p10 €11.45, median €14.17, p90 €17.95.

Cost composition of one delivery (median values, €) Time (driver) Distance (vehicle) Lombardy 13.97 € Veneto 13.16 € Abruzzo 13.66 € Umbria 14.74 € Sardinia 15.80 € Aosta Valley 18.13 €
Regions ordered by decreasing pharmacy density. In the first three the total is almost identical: legs get longer but the time block shrinks. From the fourth onwards the compensation runs out and distance takes over.

Three findings we did not expect

Geography barely matters, until it matters enormously

Across fourteen regions out of twenty the cost per delivery sits between €13.18 (Veneto) and €13.98 (Lombardy): a six percent spread, while pharmacy density between the two varies by a factor of two and a half. Those fourteen regions hold 91.5% of all Italian pharmacies.

The reason is a compensating effect that usually goes unnoticed: where pharmacies are dense the legs are short but slow (urban routes at 24–28 km/h commercial speed); where they are sparse the legs are long but fast. On cost per delivery the two effects very nearly cancel.

Then, below a density of roughly 0.05 pharmacies per km², the compensation stops working: speed has already hit its ceiling, and every additional kilometre lands whole on the cost. From there the climb is monotonic — Molise €14.50, Umbria €14.78, Sardinia €15.83, Trentino-Alto Adige €16.31, Basilicata €16.57 — up to €18.19 in the Aosta Valley, 38% above the most efficient region.

The detail that explains the mechanism: an Aosta Valley delivery takes roughly the same time as a Lombardy one, about twenty minutes, but covers nearly twice the distance. Time is not getting worse; distance is taking over — which is why in the sparse tail the time share falls to 49% while in Lombardy it is 64%.

The operational corollary has two halves. Across most of the country, moving a route into a denser area cuts cost per delivery far less than expected, and the real lever is elsewhere. But if you operate below that density threshold, geography becomes the first-order factor and belongs explicitly in your service terms.

The cost is time, not distance

Between 49% and 64% of a delivery’s cost is labour. In Lombardy it is nearly two-thirds. Cost per kilometre — fuel, tyres, wear, tolls — is the minority of the bill, and it happens to be the part you can least influence: diesel costs what it costs.

This inverts the usual priority. Optimising to minimise kilometres optimises the wrong variable. The right one is total route time, and within it the quietest-growing component is time at the delivery point: access, waiting at the counter, checking, proof of delivery, returns handling. One extra minute per stop, across 18 stops a day over 250 days, is worth between €1,556 and €2,350 per vehicle per year — and leaves no trace in any distance-based report.

It is the same phenomenon we observed from the volume side when analysing shipment fragmentation in Italian pharmaceutical distribution: more stops, each one smaller. Cost migrates from the journey to the stop.

Full cost is roughly double the cost usually measured

This is the uncomfortable one. Many operators track a “cost per delivery” built from direct costs: fuel, plus perhaps the driver’s incremental hours. Such a figure typically lands between €6 and €8 — and it is correct as a marginal cost, the answer to “what does it cost me to add this stop to a route that is leaving anyway”.

But it is the wrong answer to the question actually being asked, which is almost always structural: is this pharmacy worth keeping? this cluster? this frequency? Those decisions free up or commit a vehicle and a driver for hours, so they must be assessed at full cost. Using marginal cost to make structural decisions leads to systematically retaining stops that do not pay for themselves, because each looks marginally worthwhile while the set does not.

That is precisely the mechanism eroding cost-to-serve pharmacy by pharmacy, and feeding through to the sector’s EBITDA — the lowest in Italian contract logistics.

Which lever to pull first

Knowing that a delivery costs fourteen euro only gets you so far. The operational question is different: of everything that makes up that number, which part is worth acting on?

The model can answer, because you can move one parameter at a time and watch what happens. But two different measures are needed, because either one alone misleads. Spread shows how much the cost changes across a parameter’s full plausible range: that is the variability to expect in the real world, but a parameter we gave a wide range will look more influential simply because of that. Elasticity shows how much the cost changes for a 10% change in the parameter: it is independent of range width, but it is a local measure, valid around the central case.

A parameter that sits at the bottom of both is genuinely at the bottom.

How much each parameter moves the cost of one delivery 11 € 12 € 13 € 14 € 15 € 16 € stops per route 28.8% distance from depot 26.1% labour cost 13.7% minutes per stop 13.0% share of doors served 11.5% annual vehicle mileage 10.1% commercial speed 9.6% travel allowances 8.3% fuel consumption 3.2% network circuity 3.1%
Bar = cost range across the parameter’s full plausible range. The vertical line is the central case (€13.35). On the right, the spread as % of the central case.
ParameterCost from… toSpreadElasticity
stops per route12.12 – 15.96 €28.8%0.32
distance from depot11.61 – 15.09 €26.1%0.35
labour cost12.43 – 14.27 €13.7%0.49
minutes per stop12.48 – 14.22 €13.0%0.23
share of doors served12.73 – 14.27 €11.5%0.20
annual vehicle mileage12.85 – 14.20 €10.1%0.16
commercial speed12.80 – 14.09 €9.6%0.29
travel allowances12.80 – 13.90 €8.3%0.05
fuel consumption13.17 – 13.60 €3.2%0.09
network circuity13.14 – 13.56 €3.1%0.42

Three things come out of this, in order of usefulness.

Labour cost has the highest leverage, but you don’t set it. Elasticity 0.49, the highest on the list: it is the parameter the result is most sensitive to. It is also fixed by the national collective agreement. It measures how fragile the P&L is to contract renewals, not a lever you can pull.

Among the things you genuinely control, two network variables dominate. Stops per route (28.8% spread) and distance from the depot (26.1%) together explain more than half the variability. These are network design decisions — how many drops fit in a round, where the round starts — not negotiations over unit costs.

Fuel sits at the bottom of both rankings. Vehicle fuel consumption accounts for 3.2% of spread with an elasticity of 0.09: it is the only parameter in the bottom two of both measures, so this is not an artefact of the ranges we chose.

The comparison that makes the point concrete

The diesel price is not even among the table’s parameters, because the model fixes it at the published ministerial listing. It is worth measuring separately, since it is the variable everyone tracks weekly:

Change in diesel priceEffect on cost per delivery
−20%−2.00%
−10%−1.00%
+10%+1.00%
+20%+2.00%

Diesel can rise 20% and the cost of a delivery rises 2%. Now the comparison:

  • one minute less per stop is worth −3.25%
  • one more stop per route is worth −1.34%
  • moving the depot 10 kilometres closer is worth −8.71%

A single minute saved at every stop beats a 20% fall in the diesel price. Shifting the network’s centre of gravity by ten kilometres beats a 30% collapse. Yet the fuel price is the only one of the four that makes it into weekly reporting.

One caveat for using this table well: elasticity is a local measure, computed around the central case at median density. Anyone operating in a very sparse or very dense area has a slightly different ranking — in the sparse tail, for instance, distance weighs more and time weighs less.

What changes if you use it

Frequency before routing. If 60% of the cost is time, the strongest lever is not resequencing stops but cutting the number of calls on a low-basket pharmacy, consolidating two deliveries into one. Cost per delivery barely moves; annual cost to serve that customer moves a great deal.

The break-even shifts, and so does the tail. At €14.17 full cost against a 3.65% statutory margin, a delivery breaks even at roughly €388 of goods; at €7 direct cost the threshold would be €192. The average delivery clears both comfortably — the derived average is about €1,270 — so the point is not that the typical delivery loses money.

The point is how much of the tail changes sign. Small deliveries are not an anomaly here: they are the normal output of a twelve-hour service obligation, of urgent orders, of out-of-stock items reordered one at a time. Doubling the break-even from €192 to €388 pushes the entire middle band of deliveries — the ones that looked marginally profitable on direct cost — into loss-making territory. That is where you decide whether a high-frequency, low-basket customer earns its slot in the route.

Simulation beats dashboards. “What does adding this pharmacy cost?” cannot be answered from historical reporting. It requires simulating the route with and without it, at full cost, against time rather than distance — the way better-structured operators already run strategic planning of fixed routes, kept distinct from same-day replanning.

Stated limitations

An honest model declares where it is weak. This one is weak in four places:

  1. Three parameters are not public and remain explicit assumptions: van fuel consumption (8–11 km/l), average time at the delivery point (5–9 minutes), stops per route (16–34). They are the natural candidates for field validation.
  2. Density is computed regionally, not provincially. A region like Piedmont mixes metropolitan Turin with Alpine valleys; the regional mean flattens real variance.
  3. Daganzo assumes uniformly distributed points. Pharmacies are not uniform — they follow population. The approximation is good over wide areas, optimistic where density is highly irregular.
  4. This models transport cost, not full cost-to-serve. Warehouse picking, order management and working capital — which weighs disproportionately in this sector — sit outside it.

None of these shifts the structural conclusion — time dominates distance — but all of them shift the point estimate. Anyone wanting their own number has to calibrate the model on their own data.

FAQ

Why is your figure higher than the cost per delivery we track internally?

Almost certainly because yours is a marginal cost and this is a full cost. Marginal cost answers “what does it cost me to add this stop to a route that is leaving anyway” and covers fuel plus any incremental hours. Full cost answers “what does this piece of my network cost me” and covers the vehicle, the capital, insurance and the driver’s entire employer cost. Both are needed, for different questions: marginal to decide on a single delivery, full to decide whether to keep a customer, a cluster or a frequency.

Would switching to electric vans lower the cost per delivery?

On energy, according to the ministerial source, no. For vehicles under 3.5 tonnes the Italian Table A prices electricity at €0.196–0.268/km against €0.104–0.230/km for diesel: 89% more expensive at the low end and 16% at the high end. That figure reflects commercial charging tariffs, and depot charging changes the picture considerably. Electric vans do have advantages in urban distribution — maintenance, access to restricted-traffic zones, purchase incentives — but not in energy cost per kilometre at current official values.

How much is higher vehicle utilisation worth?

A great deal, and it is the most underrated lever. Fixed vehicle costs — acquisition, insurance, road tax, testing — do not depend on distance covered. Going from 30,000 to 50,000 km per vehicle per year takes them from €0.484 to €0.290 per kilometre: €0.19 saved on every kilometre driven. A third daily round does not require a third vehicle, it requires driver time — which is why utilisation pays better than cutting kilometres.

How much is one minute less per stop worth?

Between €1,556 and €2,350 per vehicle per year, calculated over 18 stops a day across 250 working days. It is the only line you can attack without touching either the commercial network or the fleet, and it leaves no trace in any distance-based report.

Does the model only apply to pharmaceutical distribution?

No. The engine — ministerial operating-cost tables, the collective agreement for labour cost, Daganzo’s approximation for route geometry — is sector-independent. Only two inputs change: the density of delivery points across the territory and the value of a single delivery. The same framework answers “what does a delivery cost” for food distribution, automotive parts or hospitality supply.

How often are these figures updated?

Fuel moves fastest: the Italian ministry publishes average prices weekly. The operating-cost tables are revised periodically, most recently in March 2026. We revise the article when either moves enough to change the result materially; when that happens, the update date appears at the top of the page next to the publication date.

Sources

Every source behind the model is public and consultable. Figures are those in force at this article’s publication date.

  1. Italian Ministry of Infrastructure and Transport, indicative reference values for the operating costs of Italian road freight companies — Table A (vehicles under 3.5 t gross weight, 30,000 km/year reference distance), March 2026 update.
  2. MIMIT (Italian Ministry of Enterprise), national average fuel prices — weekly survey of 10 September 2026, self-service diesel on the ordinary road network.
  3. National collective agreement for logistics, freight transport and forwarding — renewed 6 December 2024, minimum rates effective 1 January 2026, B3 driving grade.
  4. Federfarma, the pharmacy network across the country — 20,295 pharmacies under national health service convention (2026, including dispensaries and branches); regional breakdown from the March 2024 survey; 2025 pharmacy turnover.
  5. ISTAT (Italian National Institute of Statistics) — surface area of Italian regions, data as at 1 January 2026.
  6. AIFA (Italian Medicines Agency), OsMed Report 2025 — Medicines Use in Italy.
  7. Daganzo C.F. (1984), The Distance Traveled to Visit N Points with a Maximum of C Stops per Vehicle, Transportation Science 18(4), pp. 331-350.

The three parameters not obtainable from public sources — van fuel consumption, time at the delivery point, stops per route — are declared as assumptions in the limitations section, each with its range.

Running it on your own parameters

The model runs as a script with a fixed seed, so two runs give identical results. If you would like the executable version to re-run the simulations on your own parameters, get in touch and we will send it over. The same formulas drive our pharmacy margin calculator, which works on a single customer rather than the aggregate: enter your own distances, frequency and basket, and it returns annual cost-to-serve, margin eroded and break-even basket.

For a picture built on your actual operations, three months of proof-of-delivery and telematics data loaded into the platform return the model calibrated to your fleet, your pharmacy mix and your geography — which is the only way to know whether your number is 11 or 18. To get there on your own data rather than our ranges, talk to our team.

Book a free 30-minute demo. We'll show you Optivo with your data.

Find out how much you can save