How every figure on the dashboard is built.
Last updated: July 2026
Every figure comes from a named source, on a stated refresh cycle, and is reconciled against those sources before it is shown. Where it cannot be, we refuse the figure rather than guess at it.
Where a number cannot be stood up, the dashboard withholds it and says why on the figure itself. A blank with a reason is more use to a dispensary than a confident wrong number, so that is the trade we always make.
1. Where the numbers come from
There are three kinds of input: what the market charges, what the Drug Tariff reimburses, and what a product actually is. Each has its own source and its own refresh cycle.
| Source | What it gives us | How often it refreshes |
|---|---|---|
| PSUK | Price and stock, pack by pack, as quoted to a dispensing-practice account | Every working day, with the most-ordered lines re-read through the day |
| AAH | Price and stock, pack by pack, as quoted to a dispensing-practice account | Every working day, with the most-ordered lines re-read through the day |
| Alliance Healthcare | Price and stock, pack by pack, as quoted to a dispensing-practice account | Every working day, with the most-ordered lines re-read through the day |
| Clarity Pharma | Price and stock, pack by pack, as quoted to a dispensing-practice account | Every working day, re-read again through the day |
| B&S | Price per pack, taken from a supplied price list rather than a live read | When a new list is issued. The list date is disclosed on the price cell |
| Drug Tariff Part VIIIA | The reimbursement price for a dispensed pack | Monthly edition, published by the NHS Business Services Authority |
| Drug Tariff Part IX | Basic prices for appliances and dressings | Monthly edition |
| Price concessions | The reimbursement price where a concession is in force for the month | Tracked as Community Pharmacy England publishes and revises them through the month |
| dm+d | Product identity: what a pack actually is, in the NHS dictionary of medicines and devices | Each release, taken from NHS TRUD |
| Manufacturer scheme rates | The published national rebate that turns a list price into a net buy price | Checked daily, applied only after a person has reviewed the change |
| Publicly available NHS practice data (NHSBSA) | Each practice's own published volumes, drug by drug, used only when a visitor picks their practice | Monthly. The latest published month is May 2026 |
The catalogue, the prices and the margins are market figures, built from the sources above and nothing else. They are the same for every visitor.
The last row is the exception, and it only ever applies to one visitor at a time. Picking a practice in the header loads that practice's own published volumes and re-scales the money on screen to them. Nothing is uploaded, nothing is stored about you, and every resulting figure is labelled modelled, because it rests on publicly available NHS data rather than on your own dispensing records. The known limitations page says what those figures are and are not, how far behind the data is, and how to get exact figures instead.
Contains public sector information licensed under the Open Government Licence v3.0.
2. How a margin is worked out
Three figures sit behind every margin on the dashboard, and each one is a stated quantity rather than an estimate.
This is the universal basis, and it is deliberately the plainest one available. The public dashboard does not apply the dispensing fee or the clawback, and it does not model any practice-specific loyalty bonus, spend-tier discount or settlement discount, because those are individual to each practice and we do not know yours. The figures are therefore comparable between practices rather than tailored to one.
Why the cheapest price is not always the one used in the margin
A single very low price we cannot confirm is more often a data artefact than a bargain. Where that happens the dashboard still shows the price in that wholesaler's own column, badged as unconfirmed, and works the margin from the cheapest price it can stand behind. Out-of-stock prices never set a margin.
3. How a product is identified
Wholesalers spell the same product differently. Pooling the wrong lines together is the single fastest way to produce a wrong margin, so every product is reconciled against the NHS's own medicines dictionary before any money is compared.
- Identity comes from dm+d, the NHS dictionary of medicines and devices. That is the reference each wholesaler's own description is read against, so the same pack is the same pack whoever is selling it.
- Not every pack carries a dm+d code, and where one does not the identity is held to a lower confidence. Either way a match never crosses a strength, a dose form or a release class. We would rather leave a line on its own than pool two products that are not the same thing.
- Where the sources disagree about what a pack is, we do not settle it by picking a winner. The figure that depends on the disagreement is withheld instead.
Reducing the share of the catalogue that does not resolve to a code is continuous work, and it is why the dm+d release is tracked as a source in its own right.
4. Where a figure is withheld, and why
We are fail-closed by design. When a check does not pass, the figure is withheld, and where the underlying data is not sound the day's update does not go out at all. Nothing is guessed to fill a gap, and no check is waved through to get an update out.
Missing tariff data
If the Drug Tariff data for the month is absent or incomplete, typically in the first days after an edition changes, we refuse to publish margins against a blank and wait for the real figures.
Pack size disagreement
Where the wholesalers pooled onto one line do not agree on how many units are in the pack, that line states no reimbursement price at all.
Pack and unit mismatch
Where a line describes a box of several items but its Drug Tariff figure is the price of one item inside that box, both figures are real but comparing them is not. The tariff stays, the margin is withheld, and the figure says so on hover. Marking that figure plainly as a per-unit price is a correction in flight.
Unconfirmed prices
A cheapest price we cannot confirm is still shown, badged, and left out of the margin until it is confirmed.
Hospital-only supply
Where a line's supply route is hospital-only, its reimbursement price is genuine but no dispensing practice can buy against it, so the margin is withheld rather than shown as an opportunity.
Appliance prices
An appliance takes a Part IX price only where the exact pack the tariff prices is the exact pack on the line, and the sources agree unanimously. Anything less states nothing.
What a withheld figure looks like on the dashboard
Withholding is never silent. A line whose margin has been withheld still shows its reimbursement price, every wholesaler's price, its stock and its price history. Only the derived margin is blank, and hovering it gives the reason in plain English, naming the figures involved. A line with no Drug Tariff price of its own is labelled as such rather than left ambiguous.
How the checks are held in place
Every rule on this page is locked, and nothing reaches the live site until it has been checked against all of them. That is what stops a rule quietly eroding: a change that would loosen a check is refused rather than published. Checks are tightened over time and are never loosened to get an update out.
5. Refresh cadence, and how to see it
The dashboard does not hide how old its figures are.
- A full pass over all wholesalers runs every working day.
- The most-ordered lines are re-read hourly through the working day, so the lines a dispensary actually buys are the freshest ones.
- Each wholesaler carries its own last-checked stamp at the top of the dashboard, and hovering a price cell shows when that wholesaler was last read.
- The Drug Tariff moves monthly. Concessions are picked up as they are published and again as they are revised.
Freshness is not uniform across the catalogue, and the stamps are there so you can see that rather than assume otherwise. The known limitations page sets out where the gaps are.
6. Corrections
Some figures will be wrong. What matters is what happens next.
- Tell us. Email [email protected] with the line and what looks wrong. A GP reads it, not a ticket queue.
- We find the cause before we change anything. A wrong figure is corrected at its source, in the identity or tariff data that produced it. We do not patch the display and leave the cause in place, because that only moves the error somewhere quieter.
- Every correction is locked once it is made, so the same error cannot come back in a later release.
- Corrections reach the live dashboard on the next refresh, usually the same or the next working day.
- Where the cause is not yet understood, the figure is withheld rather than left standing while we work it out.
If a correction changes a class of figures rather than a single line, it is recorded on the known limitations page until it is closed.
7. Using our data
Every price, Drug Tariff figure and price history on this site is published openly. Anyone can look up any drug, and any practice's own figures, free and without an account. That is deliberate and it is staying.
The line we draw is completeness, not access. Automated bulk collection of the dataset as a whole, meaning systematic retrieval across the catalogue, the price history or the per-practice figures, is not permitted without our written permission, and we treat it as unauthorised use of the site.
If you want the whole dataset, ask us rather than crawl for it. A daily snapshot is available on request: email [email protected]. A practice pulling its own figures on a schedule is a welcome user rather than a problem, and if that pull is heavy, tell us and we will point you at a route built for it.
The same boundary is published in machine-readable form at /robots.txt, which asks crawlers to leave the bulk data files alone. It is a statement of what is permitted rather than a technical control.
We would rather show nothing than show a number we cannot stand behind. Everything above exists to make that rule mechanical rather than a matter of good intentions.