The method

Dispensing margin is one of the hardest numbers in primary care to get right.

It isn't cost minus price. It's a moving reconciliation across four Drug Tariff categories, a discount clawback, item fees, and price concessions that change several times a month, applied across every line you dispense. Here is how we model it.

§ 01

Why it resists a spreadsheet

A single dispensed line's true margin depends on at least seven independent variables, each on its own clock, each able to flip a line from profit to loss without warning. Track one wrong and the error compounds across thousands of lines a month.

Reimbursement
Tariff category
A, C, M or the new H, each priced and re-priced differently.
Deduction
Discount clawback
A sliding-scale clawback applied to reimbursement every month.
Income
Dispensing fees
Per-item fees on their own schedule, revised in-year.
Volatile
Price concessions
Granted monthly and often revised several times within the same month.
Rebate
Scheme & loyalty
MDS / APM / manufacturer rebates that rarely match the headline rate.
Risk
Shortages
When the market price exceeds reimbursement, a routine line becomes a loss.
Procurement
Actual cost
What you really paid, invoice by invoice, not the list price.

Seven variables, four different update cycles, thousands of lines. The interactions are where the money hides.

§ 02

The line-level calculation

Margin is computed per line, per month, then aggregated. Every term has to be resolved against the right reference data for that exact month, including any mid-month concession revision.

True net margin, per line
margin = ( reimbursement·(category, concession)clawback ) + feesnet acquisition cost·(invoice, rebate)
Resolve reimbursement against the line's Tariff category and any concession in force that week; subtract the month's clawback band; add the applicable item fee; then subtract what you actually paid after rebates, from the invoice, not the list. Do that for every line, every month, and reconcile the total against your FP34.
§ 03

The engine

A pipeline, not a template. Raw, inconsistent inputs are normalised, matched to live reference data, reconciled line by line, then read by an AI layer that classifies losses, surfaces anomalies and drafts the narrative, before a human audits every material figure.

01
Ingest
Dispensing data, wholesaler invoices and remittances, every supplier format, normalised to one schema.
02
Match
Each line resolved to its Tariff category and the concession in force that week, from continuously-updated reference feeds.
03
Reconcile
Net cost vs reimbursement computed per line, then reconciled to your FP34 and remittances.
04
Detect
Loss types classified, shortage, clawback, rebate gap, procurement, and anomalies flagged against six-month baselines.AI-assisted
05
Audit
Every material figure checked against source. Nothing provisional is reported as final.

The AI accelerates classification and pattern-finding across thousands of lines; the judgement, and the sign-off, stay human.

§ 04

Why it isn't a side project

Practices ask whether they could build this in-house. Honestly: the calculation is the easy part. Keeping it correct, every month, as the rules move underneath you, is where it becomes a specialist discipline.

The reference data never stops

Tariff categories re-price quarterly; concessions shift several times a month; rebate matrices change with every promotion. A model is only as right as the day's data behind it.

The maths is unforgiving

A concession applied a week late, or a clawback band misread, mis-states thousands of lines at once. Small errors do not stay small once they aggregate.

Built by people who dispense

The model encodes how a real dispensary actually trades, not a generic finance template. That domain reading is the part that can't be downloaded.

Audited before it ships

An AI-drafted figure that nobody checks is a liability. Every material number is traced to source before it reaches a partner's desk.

§ 05

Every line. Every month.

The scale is the point. This isn't a one-off audit; it's a standing reconciliation that runs each period and tracks whether the actions you took actually moved the number.

~2,000
dispensed lines reconciled, per practice, per month
7+
independent variables behind each line's true margin
4
Tariff categories, A, C, M and now H, each on its own cycle
Monthly
refreshed as new tariff, concessions and invoices arrive

See the engine run on a worked example.

Explore a full sample review, the interactive dashboard, the drug-level ledger and the partner report, built on a fictional practice.

Open the sample → Request a review