Pharma
Checking…
Aged debtors 60+ dayskpi

Customer (medical-aid + private) balances that are at least 60 days old. Working-capital risk indicator — older buckets typically need active follow-up.

CalculationSum of debtor balances in 60, 90, 120, 150, 180, 210+ day buckets.

SourceAging Analyses → Debtors aging columns.

See alsoDSO — days sales outstanding

Average basketkpi

Average rand value of one customer transaction across the trading day. A read on whether shoppers are buying more, fewer, or higher-value items per visit.

CalculationTotal POS turnover ÷ Number of POS transactions

SourceDaily Cashup → Average Basket Value (today).

See alsoTurnover

Average script valuekpi

Mean rand value per dispensed prescription.

CalculationDispensary turnover ÷ Script count (today)

SourceDispensary → Average Script Value (today).

See alsoScripts dispensed, Dispensary share

Banked vs cash salesterm

Comparison of physical cash deposited against the till's cash takings — the most common single source of reconciliation flags.

CalculationSee banking variance.

SourceDaily Cashup ↔ Sales Cash Value.

See alsoBanked vs expected, Cash share of tenders

Banked vs expectedkpi

How much was actually banked versus how much cash the till said you should have. A persistently large gap is the headline reconciliation flag.

CalculationCash banked − POS cash sales (today)

SourceDaily Cashup → Total Banked − Sales → Total Cash Value.

See alsoCash share of tenders, Cash banked

Basketterm

One till transaction — i.e. a customer's bag of goods. Used as the denominator for average basket value.

SourceCounted by the POS system.

See alsoAverage basket

Card share of tenderskpi

What fraction of till takings came in via card (credit + debit combined).

CalculationCard tender ÷ Total cash sales × 100

SourceDaily Cashup → Credit Card Value ÷ Sales → Total Cash Value.

See alsoCash share of tenders

Cash bankedkpi

Total physical cash deposited at the bank for the trading day, before any reconciliation against POS cash takings.

CalculationSum of cash-up bank deposits (today).

SourceDaily Cashup → Total Banked (today).

See alsoBanked vs expected, Cash share of tenders

Cash share of tenderskpi

Of all the money taken at the till, what fraction came in as physical cash (vs. card / EFT).

CalculationCash tender ÷ Total cash sales × 100

SourceDaily Cashup → Cash ÷ Sales → Total Cash Value.

See alsoCard share of tenders, Banked vs expected

Coverageux

The map of which trading days actually arrived as Vexall reports. Days are flagged received, missing, or expected closure (Sundays for stores that don't trade).

CalculationPer-day status across all pharmacies.

SourcePipeline ingest history (SES → S3 → Lambda → RDS).

See alsoUptime, Health Score

Daily Management Report (DMR)term

The HTML email Vexall sends after each trading day. It's the canonical record of yesterday's trading and the only data source this dashboard uses.

SourceEmail to dmr@pharma.qberi.com.

See alsoVexall, Coverage

Discount intensitykpi

How aggressively you're refunding/discounting relative to total sales. A spike usually means a promo, a bad batch, or staff training opportunity.

CalculationCash refunds ÷ Total POS turnover × 100

SourceSales → Cash Refunds ÷ Total POS Turnover.

See alsoReturns & refunds, GP% — gross profit margin

Dispensary mixterm

Synonym for dispensary share — proportion of turnover coming from the prescription counter.

CalculationSee dispensary share.

SourceVexall daily report.

See alsoDispensary share

Dispensary sharekpi

What fraction of total turnover came from the dispensary counter (vs. front-shop OTC).

CalculationDispensary turnover ÷ Total POS turnover × 100

SourceDispensary → Turnover (today) ÷ Daily Cashup → Total POS Turnover.

See alsoFront-shop turnover, Scripts dispensed, Average script value

DSO — days sales outstandingterm

On average, how many days it takes to collect the money customers owe you. Higher = slower collections.

CalculationReceivables ÷ (Annual sales ÷ 365)

SourceComputed when receivables history is long enough.

See alsoAged debtors 60+ days

Front-shop turnoverkpi

All non-dispensary sales — OTC, healthcare, beauty, sundries. The non-prescription side of the business.

Calculationmax(0, Turnover − Dispensary turnover) — both sides include direct-billed medical-aid revenue, so the residual is honest OTC activity.

SourceTOTAL TURNOVER (Excl.) minus Dispensary Turnover.

See alsoDispensary share, Turnover

FY / FYTD — financial yearterm

South-African fiscal year runs March → February. FYTD is everything from 1 March of the current FY to today.

CalculationΣ MTD values across the months in this FY.

SourceAggregated client-side from monthly closes.

See alsoMTD — month-to-date

GP% — gross profit marginkpi

The share of every rand of sales that's left after paying for the stock that was sold. A gross-margin proxy for pricing and discount discipline.

CalculationGP% = (Sales − Cost of goods) ÷ Sales × 100

SourceStock Trading → Gross Profit % (today), weighted by total sales.

See alsoTurnover, Discount intensity, Purchase ratio (MTD)

Health Scoreux

Composite 0–100 score per pharmacy, summarising sales, margin, operations, customer behaviour and working capital. Admins can tune the weights and how aggressively under-performance is penalised under Admin → Score configuration.

CalculationWeighted sum of five 0–100 component scores with a temperature curve applied. Components needing data we don't have yet are excluded and their weight redistributed.

SourceComputed at request time from the daily report and the active scoring config.

See alsoBanked vs expected, GP% — gross profit margin, Aged debtors 60+ days, Stock days on hand

MTD — month-to-dateterm

Running total from the 1st of the current calendar month up to (and including) the most recent trading day.

CalculationΣ daily values, day 1 → today.

SourceReset on the 1st of every month by Vexall.

See alsoFY / FYTD — financial year, MTD turnover

MTD turnoverkpi

Cumulative sales month-to-date. As reported by Vexall on each daily report (no rebuild needed).

CalculationΣ Daily POS turnover, day 1 of month → today.

SourceSales → Total POS Turnover MTD.

See alsoTurnover, MTD — month-to-date

Purchase ratio (MTD)kpi

Stock bought month-to-date as a fraction of sales month-to-date. An early signal that purchasing is running ahead of (or behind) sell-through.

CalculationStock purchases MTD ÷ Total turnover MTD × 100

SourceStock Trading → Purchases MTD ÷ Sales → Total POS Turnover MTD.

See alsoGP% — gross profit margin, Stock days on hand, MTD — month-to-date

RAMS numberterm

South African Pharmacy Council registration number — the regulatory identity of each pharmacy site.

SourceVexall report header.

Returns & refundskpi

Total value refunded to customers for the trading day.

CalculationSum of cash refund values (today).

SourceSales → Cash Refunds Value (today).

See alsoDiscount intensity

Schedule mixterm

Breakdown of dispensary volume by schedule (S1 — S6). Not yet exposed in this dashboard; planned for Stage 5 once the script-level feed arrives.

CalculationCount by schedule code.

SourceVexall script-level feed (pending).

See alsoScripts dispensed

Scripts dispensedkpi

Number of dispensary prescriptions filled in the trading day. Volume metric — pair with avg script value for revenue.

CalculationCount of dispensed scripts (today).

SourceDispensary → Script Count (today).

See alsoAverage script value, Dispensary share

SDLM — same day last monthterm

Comparison value from 28 days ago. Indicative for month-on-month trend at constant weekday.

CalculationToday vs (today − 28).

SourceComputed from the 28-day window.

See alsoSDLW — same day last week

SDLW — same day last weekterm

Comparison value taken from exactly seven days ago. Lets you compare like-for-like (Wednesday → Wednesday) without weekday seasonality polluting the read.

CalculationToday vs (today − 7).

SourceComputed from the 28-day window.

See alsoSDLM — same day last month

Stock days on handkpi

Roughly how many days of selling stock you're carrying right now, based on the recent burn rate.

CalculationClosing stock ÷ MTD cost-of-sales × 30

SourceStock Trading → Closing Stock ÷ Cost of Sales MTD.

See alsoPurchase ratio (MTD), GP% — gross profit margin

Trailing 28-day averageterm

Average over the last 28 days, used as the baseline against which today's value is compared. Smooths out weekday noise so spikes stand out.

CalculationΣ daily values ÷ 28

SourceComputed from the 28-day window (excluding today).

See alsoSDLW — same day last week

Turnoverkpi

Total business revenue for the trading day — includes both till takings AND medical-aid claims billed directly to the medical aid (which never touch the till). This is the number Pieter would quote for 'what did the pharmacy do today'.

CalculationVexall's TOTAL TURNOVER (Excl.) line, summed across selected pharmacies.

SourceDaily Management Report → TOTAL TURNOVER (Excl.).

See alsoDispensary share, Front-shop turnover, Average basket

Uptimeux

Share of trading days in the window that arrived as a parsed report. Closures don't count against uptime.

CalculationReceived ÷ (Received + Missing) × 100

SourceCoverage status counts.

See alsoCoverage

Vexallterm

The pharmacy POS / dispensary management software TLC pharmacies use. It emails the Daily Management Report each morning — that's the data feed this dashboard parses.