What this dashboard does not do.
Last updated: July 2026
A number you cannot interrogate is worth nothing, so this page sets out where ours can be wrong.
None of it is hidden on the dashboard itself: withheld figures say why on the figure, wholesalers carry their own last-checked stamps, and the basis is stated at the foot of every view. This page gathers it in one place so you can judge the whole thing at once.
The figures themselves
It is a market figure, not your practice's profit
Margin per pack is the Drug Tariff reimbursement minus the cheapest in-stock wholesaler price. It is deliberately the plainest basis available, and it is not a profit figure for your dispensary.
It does not include the dispensing fee or the clawback, and it does not include any loyalty bonus, spend-tier discount or settlement discount you have negotiated, because those are individual to each practice. Treat it as a comparison between lines and between wholesalers, not as a forecast of what you will bank.
Want your exact figures? Send us your own ePACT2 or PD4 export and we will work them through with you: [email protected].
Your account's price can differ from ours
The prices shown are those a dispensing-practice account is quoted at each wholesaler. Wholesalers price by account and by spend tier, so your own portal can show a different figure for the same pack on the same day. The ranking between wholesalers is usually right; the exact pence sometimes will not be yours.
Stock is as reported, at the moment it was read
In-stock and out-of-stock come from the wholesaler's own listing at the time it was last read, not from a live check when you look. Availability moves during the day, and a line shown in stock can be gone by the time you order.
Freshness is not uniform across the catalogue
The most-ordered lines are re-read hourly through the working day. The long tail of the catalogue is refreshed on the daily pass, so a rarely-dispensed line can be up to a day old. The B&S prices come from a supplied price list rather than a live read, so they can be older again; that list's date is shown when you hover its price.
Each wholesaler's last-checked time is displayed at the top of the dashboard, and hovering a price cell tells you when that wholesaler was last read. If a figure matters, check the stamp.
Not every line has a reimbursement price, and some move mid-month
Over-the-counter lines, unlicensed specials and many appliance lines have no standard Drug Tariff price, so they show no margin. The dashboard labels those rather than leaving the blank ambiguous.
Price concessions are picked up as Community Pharmacy England publishes them and again as they are revised, which happens repeatedly through a month. A line's reimbursement can therefore change after you have looked at it, and a concession can be granted or withdrawn part way through the month.
Your practice's own figures
Pick your practice in the header and the money on this page re-scales to your own volumes. Those volumes come from publicly available NHS data about your practice, and they are modelled rather than measured. This section sets out what they are and, more importantly, what they are not, because a figure with your practice's name on it deserves more scrutiny than a market figure, not less.
How close these figures are, for a practice like yours
Back-tested against what the NHS actually paid 895 dispensing practices in England over 2024/25. Accuracy is not one number: it tracks how much of its own prescribing a practice dispenses itself, so the table gives the answer for each band rather than an average that fits nobody. Read the row your own share falls in.
| Your dispensing share | Practices | Typical miss | Average miss | Within 20% | |
|---|---|---|---|---|---|
| under 5% | 67 | 39.59% low | 48.52% | 14.93% | pounds withheld |
| 5% to 15% | 115 | 16.33% low | 32.24% | 61.74% | |
| 15% to 30% | 238 | 9.41% low | 13.45% | 88.66% | |
| 30% to 50% | 193 | 6.05% low | 9.64% | 94.3% | |
| 50% to 70% | 79 | 4.73% low | 6.35% | 97.47% | |
| 70% to 85% | 93 | 2.37% low | 5.74% | 98.92% | |
| 85% or more | 110 | 1.12% high | 4.59% | 99.09% |
The bottom row is the one we act on rather than only report. At under 5% we do not put a pound figure on a practice at all, because a figure that lands within 20% for 14.93% of practices is not a figure anybody should plan against. The volumes are left alone and still shown wherever the published data supports one; where a practice reads as dispensing nothing at all, there are no volumes to show either and we say so rather than implying otherwise. We expect that band to shrink.
The practice counts above are the practices we could CHECK: a dispensing practice whose figures could be matched to a payable dispensing fee in the payment records, so that there was something to compare against. More practices fall in a band than were checked in it.
Three things this back-test cannot see, and they apply to every row of it:
- The payment records we checked against are the 2024/25 financial year, which runs 15 to 21 months behind the prescribing data these figures are built on.
- A single drug's monthly volume is a three-month average, so one line can sit 10% to 15% away from what you dispensed in any one month even when the practice total is close.
- The prices are published list prices and the Drug Tariff, never your own account prices, deals or buying-group terms.
The volumes are modelled from open data, not read off your system
Nothing is uploaded, nothing is asked of you and nothing connects to your clinical system. The volumes are worked out from NHS data that is published openly about every practice in England, which means they describe the pattern of a practice rather than the contents of your own dispensary.
For a dispensing practice that distinction matters: not everything a practice prescribes is dispensed in-house. The figures on this site allow for that, so they are not a raw prescribing count. They remain an estimate.
The dispensing allowance is real, but it is practice-wide
The allowance that brings prescribed volume towards dispensed volume is taken from published data about your practice, not guessed and not asked of you. One caveat is irreducible: it is practice-wide, not per-drug. You may dispense a higher share of some lines than others, and no open data can tell us which.
Your own ePACT2 or PD4 export can. See the last item in this section.
Personally administered items are treated differently, and take the whole list
Personal administration is not dispensing, and every practice can claim for it whether or not it is authorised to dispense. Those rows therefore take your whole prescribed list, with no dispensing allowance applied, because scaling them would understate money you are plainly owed.
That also makes the personal-administration and double-VAT figures meaningful for a non-dispensing practice, not only for a dispenser. Centrally supplied vaccines are excluded from the money entirely: they appear in the data and they earn nothing, so we state the volume and no pound figure.
Some personally administered lines are a national average, and say so
On some lines a patient may be treated in the practice or may take the script to a pharmacy, and the split varies from practice to practice. Where a line rests on a national picture rather than on your own, it says so on the line itself, and where it rests on it most heavily the line is shown quieter and reads "national average, your split will differ". We would rather a figure looked less certain than looked wrong.
The volume data is a couple of months behind, the money is today's
The published data runs a couple of months in arrears. The latest month available is May 2026, and whichever month a figure rests on is stamped on the figure itself, so you never have to assume it.
The prices and the Drug Tariff are always today's, never the ones in force during the volume window, so a tariff change inside that window does not affect the pounds shown.
A line only carries a figure where the product is certain
A volume is only ever attached to a line where the two are certainly the same product. Where that certainty is absent, nothing is shown rather than a near match, because tying one product's volume to another product's margin and then stating it in pounds is the worst error available here. The headline therefore says how many of your lines it covers, and it will be fewer than all of them.
Where a line does not state a pack size the figure is on a different basis and says "approx", rather than presenting the two as the same thing.
Do not add the rows of one drug together
The published data counts a product: a drug at a strength in a form. It does not record which pack size was supplied. A drug card here often lists that same product several times, once per pack size, so every one of those rows carries the same figure, and it is the figure for the product as a whole rather than that row's share of it.
So read a row's volume as "this is how much of this drug you get through", never as "this is how much of this pack". Adding the rows of one drug together counts the same prescribing two, three or four times over. Comparing them is fine, and it is what the rows are there for: the pack sizes differ in what they earn, and the volume beside each one is what that difference would be worth if it all went through that pack.
The same is true across brands. A product's figure covers every brand of it and the generic together, so where a page ranks two or three brands of one product against each other, each of those rows carries the identical whole-product volume rather than that brand's share of it, and the line beside it says so. We cannot yet split a product's volume between its brands, and we would rather say that than print a split we cannot stand behind.
The card's own headline figure is not affected. It counts each product once, however many rows the card gives it.
If you want the real numbers rather than modelled ones
Your own ePACT2 or PD4 export holds what your dispensary actually dispensed, drug by drug. We do not and cannot pull it for you, but if you send it we can work from it. Email [email protected].
Contains public sector information licensed under the Open Government Licence v3.0.
What we withhold on purpose
A blank with a reason, rather than a confident wrong number
Where a figure cannot be stood up, it is withheld rather than estimated. That is a deliberate design choice and it means the dashboard is quieter than it could be. The main classes are:
- the wholesalers pooled onto a line disagree about the pack size, so no reimbursement price is stated at all;
- the line describes a box of several items, but the Drug Tariff figure beside it is the price of one item inside that box rather than of the box, so the margin is withheld because the two cannot be compared. These are mostly dressings and appliance lines, and marking that figure plainly as a per-unit price is a correction in flight;
- the cheapest price on the line is one we cannot confirm, so it is shown but excluded from the margin and badged as unconfirmed;
- the supply route is hospital-only, so the reimbursement is genuine but no dispensing practice can buy against it and the margin is withheld;
- an appliance line where the exact pack the tariff prices is not unambiguously the pack on the line.
What this costs you
A withheld margin is a real opportunity you cannot see on that line, and there will be lines where the withholding is over-cautious. We would rather you find that out from a blank than from a figure that turns out to be wrong when you order against it. Every withheld margin still shows its reimbursement price, every wholesaler's price, its stock and its price history, so you can do the arithmetic yourself if you want to.
Product matching is good, not perfect
Wholesalers spell the same product differently. Where a pack carries a code in dm+d, the NHS dictionary of medicines and devices, identity is certain. Where it does not, identity rests on the product description itself, and a residue of that remains across the catalogue.
The two failure modes that survive are a product split across two entries when it should be one, and, more rarely, an entry holding a line that does not belong on it. A match never crosses a strength, a dose form or a release class, so the error is a split or a stray rather than a dangerous substitution, and where the sources disagree the figure is withheld rather than guessed. Reducing the share of the catalogue that does not resolve to a code is the main ongoing work.
Scheme rates are the published national ones
Buy prices are net of the published national manufacturer scheme rate for that drug at that wholesaler. They do not model anything you have negotiated individually, and they do not attempt to model schemes whose rates are not published. Where a scheme rate changes, the change is reviewed by a person before it is applied, so there can be a short lag between a rate moving and the dashboard following it.
The order optimiser
It will not match every line, and that is on purpose
The optimiser only ever substitutes the identical pack across wholesalers. It never swaps strength, form or pack size to find a cheaper price. Anything it cannot match safely is handed back for you to place as usual rather than guessed at.
Order pads vary enormously between clinical systems, and unusual notations, own-brand spellings and free-text lines are the ones most likely to come back unmatched. Every unmatched line is listed rather than dropped, and the split it returns is a suggestion to check, not an order it places for you.
What we do not hold
No patient data, and no connection to your clinical system
The dashboard holds market data only. We do not seek, need or knowingly process any patient-identifiable data, and nothing connects to a clinical system. Using the dashboard requires no account and no personal details. The privacy statement sets out what happens to an order pad if you upload one.
It is intelligence, not advice
Everything here is indicative market intelligence to support buying and prescribing decisions. It is not financial advice, it is not clinical advice, and it is not a guarantee of any outcome for any individual practice. Prescribing decisions remain clinical decisions.
Using our data
Look anything up freely; collecting the whole dataset needs our permission
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.
Email [email protected] with the line and what looks wrong. A GP reads it. We fix the cause rather than the display, lock the fix so it cannot come back, and tell you what we found. The methodology page sets out the corrections process in full.