Sign In

Overview

Sales Intelligence Dashboard ALL CUSTOMERS

FY2018–FY2025 · 168 customers · All amounts in ZAR

All Customers — Total Overview
Select a customer from the search box above to view individual analytics
Total Units Sold
-
All FYs
Total Revenue
-
ZAR
Unique Parts
-
PartNumbers (New)
Transactions
-
Invoices
Lapsed Products
-
No longer buying
Customers
-
Active accounts
Monthly Sales by Financial Year
Multi-FY Performance Comparison
FY Summary Detail
Financial Year Total Qty Total Amount (R) Unique Parts Avg Price/Unit YoY Qty YoY Revenue
Sales by PartNumber (New) — Qty, Amount & Price Per Unit
# Part No (New) Old Part No Type Range Veh Origin Total Qty Total Amt (R) Price/Unit Txns Description
📈 Customer Sales Forecast — Projected Next 2 Financial Years

Forecasts use linear regression on historical FY data. Projections are estimates for planning purposes only.

Historical Sales + Forecast Projection
Per-Part Forecast  
# Part No (New) Type Hist Qty (Total) FY+1 Qty ▲ FY+1 Revenue ▲ FY+2 Qty ▲ FY+2 Revenue ▲ Trend Description
🟢 Top 10 Parts Buying
# Part No (New) Type Qty Amount (R) Global Rank Description
🔴 Top 10 NOT Buying (Gap)
# Part No (New) Type Mkt Qty % Gap Other Custs Description
Sales by Product Origin — All Time
Sales by Product Type — All Time
Origin Qty by Financial Year
Product Range — Breakdown by Product Origin (Qty)
Product Type Qty by Financial Year
Sales by Product Range — All Time
Product Range Qty by Financial Year
Product Origin — by Volume (Qty)
#Product OriginTotal QtyShareTrend
Product Origin — by Value (Amount)
#Product OriginTotal Amount (R)ShareTrend
Product Type — by Volume (Qty)
#Product TypeTotal QtyShareTrend
Product Type — by Value (Amount)
#Product TypeTotal Amount (R)ShareTrend
Product Range — by Volume (Qty)
#Product RangeTotal QtyShareTrend
Product Range — by Value (Amount)
#Product RangeTotal Amount (R)ShareTrend
Lapsed Products — All Customers Overview
Parts that customers were buying but have since stopped purchasing · Select a customer above for individual detail
Unique Lapsed Parts
-
PartNumbers (New)
Lapsed Events
-
Customer × part drops
Multi-Customer Lapsed
-
Parts dropped by 2+ customers
Top 10 Most-Lapsed Parts (by Customer Count)
Lapsed Volume by Last FY Active
All Lapsed PartNumbers (New) — Across All Customers
# Part No (New) Old Part No Type Range Veh Origin Custs Lapsed Total Qty First FY Bought Last FY Bought Mkt Total Qty Description
🔄 Sales history from SOS Inventory

The sales figures on every tab are the reorder system's sales history, kept current straight from SOS Inventory. Each day at 09:30 the server re-reads the latest month's invoices and credit notes from SOS (and adds any newer months) and replaces that month on the seeded history, exactly as the reorder system's own sync does. Seed the history once with the workbook from sos_sales_import.py (drop it below and Apply, or run it with --push); after that the SOS sync keeps it live. Re-seed only when the older years or a part mapping change.

📥 Import Customer Sales Data

Upload a sales data file. Supported format: .xlsx

📂

Drop file here or click to browse

Accepts .xlsx

Expected Column Names

ColumnTypeRequiredNotes
📤 Export Data
Exporting: All Customers
ALL CUSTOMERS

Sections to Include

📗

Excel (.xlsx)

Multi-sheet workbook with all selected sections

📗

Excel — Part Sales

All part sales rows as single-sheet workbook

📗

Excel — Lapsed Products

Products no longer being purchased

📗

Excel — Gap Opportunities

Parts not bought that the market is buying

📦

Excel — Stock Profile

Shelf depth, reorder cadence and mix per line

📊 Consolidated Export — All 168 Customers

Export a single workbook covering every customer — useful for sharing or archiving the full dataset.

📗

All Customers Overview

KPI summary row per customer

📗

All Parts — Full History

Every part × customer row as Excel

📗

All Lapsed Products

Every lapsed part across all customers

📋

Lapsed — Per Customer Tabs

One sheet per customer, itemised lapsed parts

💰

Profit & Loss

Revenue, COGS and profit per part per customer

🧾

P&L — Per Customer Tabs

One sheet per customer, itemised by part number

🧾

Invoicing

Every SOS invoice line with unit price, revenue, COGS, profit and sales rep

🔠

ABC Analysis

Every part's class, demand, target stock and the value-sleeper watchlist, as the reorder system works them out

🏢

ESA Branch Overview

Every customer rolled up by Exedy branch, with the suggested stock holding per part and per customer

📦

All Stock Profiles

Every shelf line across all customers, one row each

📋

Stock Profile — Per Customer Tabs

One sheet per customer, itemised shelf profile

📦

Full Workbook

Overview + Parts + Lapsed in one XLSX

R 0 weighted pipeline
0 deals across all stages
Stage Gate Reference — Exit Criteria
Add New Deal
Exit Criteria — Lead

📘 Pipeline Methodology

A disciplined, stage-gated way to forecast revenue, prioritise effort, and coach deals to close. Every deal lives in exactly one stage, advances only when objective exit criteria are met, and carries a confidence weighting that feeds the weighted pipeline.

6 Stages Weighted Forecast Exit Criteria Gated Owner Accountability Weekly Cadence

1. Philosophy — Why a Stage-Gated Pipeline

Most forecasts fail because deals are graded by optimism instead of evidence. This methodology fixes that by treating every stage transition as a gate: a deal cannot advance until the customer has done something that proves the stage is real.

Principles

  • Evidence over opinion. The customer's actions move the deal, not the rep's feelings.
  • One stage, one owner. No ambiguity about where a deal sits or who is accountable.
  • Honest weighting. Confidence percentages are calibrated to historic win rates, not gut feel.
  • Forward or flagged. A deal that cannot advance after two cycles is moved to At Risk — stalled ≠ healthy.

What you get out of it

  • A weighted forecast you can actually commit to.
  • Clear coaching points — you see exactly where deals get stuck.
  • Faster cycle times, because reps stop hiding slow deals in “Proposal”.
  • A shared language between sales, ops, and finance.

2. The Six Stages

Each stage carries a confidence weighting. Weighted pipeline = sum of (deal value × stage weight).

Stage Confidence Definition Exit Criteria (must all be true to advance)
Lead 15% An account with a plausible need. No commitment yet from either side.
  • Need confirmed — customer has a clear problem we solve
  • Buyer identified — decision-maker or influencer reachable
  • Commercial potential validated — deal is worth pursuing
Qualified 30% The customer has agreed the problem is worth solving and is willing to engage on a solution.
  • Budget confirmed or realistic path to budget
  • Timeline agreed — customer has a target close window
  • Commercial offer ready to send
Proposal 50% A formal quote is in the customer's hands and under active review.
  • Formal quote or proposal delivered
  • Customer has acknowledged receipt
  • Customer is actively reviewing and responding
Negotiation 75% Commercial terms are on the table — price, scope, delivery — and both sides are working to close.
  • Customer engaged on commercial terms
  • Key objections identified and being addressed
  • Agreement in principle on scope and pricing
Won 100% The deal is committed in writing — PO, signed quote, or equivalent.
  • Purchase order or written confirmation received
  • Delivery timeline agreed
  • Win reason documented for future reference
At Risk 20% A deal that has stalled, been blocked, or is drifting. Parked here until recovered or lost.
  • Blocker or stall reason documented
  • Recovery plan or escalation path defined
  • Follow-up date set with responsible owner
Rule of thumb: if you cannot write down what the customer did to earn the next stage, the deal has not earned it. Move it back, or move it to At Risk.

3. How to Implement — 7-Step Rollout

Use this as a two- to three-week rollout. You do not need new tooling — the Pipeline tab in this dashboard is enough to get started.

1
Audit your current deals Export everything you consider “open”. Kill anything with no activity in 60+ days — those are not deals, they're hope. Keep only accounts with a named contact and a real conversation in the last eight weeks.
2
Re-stage every surviving deal against the exit criteria Go one by one. If a deal in “Proposal” cannot tick all three Proposal gates, drop it back to Qualified. This is painful the first time. Expect 30–50% of deals to shift backwards.
3
Enter every deal in the Pipeline tab For each surviving deal record: customer, title, stage, value, close date, owner, and tick the exit criteria that apply. Add a one-line note on what the customer last did.
4
Publish the weighted forecast number The banner at the top of the Pipeline tab gives you weighted pipeline (Σ value × stage weight). Commit to that number, not the raw sum. Share it with finance so everyone plans against the same reality.
5
Run a weekly 30-minute pipeline review Same day each week. Walk every deal in Negotiation & Proposal first, then At Risk, then anything that has not moved in two weeks. Each deal gets one question: what does the customer need to do next, and by when?
6
Enforce the “two cycle” rule If a deal has not advanced or changed shape across two weekly reviews, move it to At Risk and log the blocker. This forces either escalation or a clean loss — both are better than dead weight in the forecast.
7
Review health metrics monthly Look at conversion rate by stage, average days-in-stage, and win-loss reasons. Use them to coach — not to judge. The point is to find the step where deals die and fix the playbook.
Ready signal: when a rep can defend any deal on the board in under 60 seconds using only the exit-criteria language, the methodology has landed.

4. Worked Example — MASTERPARTS (PTY) LTD, FY26 Win-Back & Gap Recovery

A worked example grounded in the actual data in this dashboard. MASTERPARTS is a long-standing top-tier account: R 26.5M lifetime revenue, R 8.41M in FY25 (+8% vs FY24), 163 unique parts, 1,931 transactions. The opportunity is a defensive growth play — win back 48 lapsed SKUs and convert 10 market-gap SKUs the customer doesn't currently stock.

Why this deal exists (from the data): MASTERPARTS has 48 lapsed products that used to generate ~R 1.2M/yr and 10 gap SKUs sold by the wider market. The biggest single gap is part 146226001 (TYK-13177) EXD Taxi Clutch Kit — 4,341 units sold into the market, by 54 other customers, but zero through MASTERPARTS. That one SKU alone is worth ~R 800k of aftermarket flow.
Deal Value (FY26 uplift)
R 2,300,000
Customer FY25 Base
R 8,411,676
Owner
Joel
Cycle Length
11 weeks
Outcome
Won
Lead Week 0 · weighted R 345,000 (15%)
Joel opens the MASTERPARTS view in the dashboard. FY25 is trending up (+8%) but the Lapsed Products tab flags 48 SKUs dropped in FY25, including 129824001 (NSK-13007) EXD Nissan Clutch Kit — MASTERPARTS bought 178 units across FY22–FY24 (R 271k) then zero in FY25, while the wider market still took 152 units. The Top 10 & Gap tab shows 10 gap SKUs dominated by taxi kit 146226001. Joel calls the MASTERPARTS buyer to validate the story.
Gate passed: need confirmed (Nissan line abandoned, taxi segment uncovered), buyer identified (procurement lead), commercial potential ≈ R 2.3M FY26 uplift (~27% growth on FY25 base). → Advance to Qualified.
Qualified Week 2 · weighted R 690,000 (30%)
On-site meeting at MASTERPARTS. Buyer confirms the Nissan kit was dropped because of a stock-out in Q3 FY24 and never re-listed — not a deliberate decision. Taxi segment is a known blind spot and they want in. Budget path agreed: fold into the existing EXD supply agreement, no new CAPEX. Target cut-over: start of Q2 FY26.
Gate passed: budget confirmed (existing supply line), timeline agreed (Q2 FY26), commercial offer ready to build against 3 gap SKUs + 8 win-back SKUs. → Advance to Proposal.
Proposal Week 4 · weighted R 1,150,000 (50%)
Formal 12-month proposal delivered. Three-part offer:
  • Gap SKUs: 146226001 Taxi Kit, NS632185UIS Nissan Set, 108020000 Toyota Set — combined FY26 target R 1.1M
  • Win-back SKUs: 8 of the 48 lapsed parts (led by 129824001 NSK-13007 and 139819001 SZK-13921 Swift kit) — combined target R 900k
  • Expansion on winners: top-2 sellers 116622501 and 116325001 (ECI D-MAX kits, R 2.3M combined in FY25) extended to 12-month fixed pricing — adds ~R 300k
Buyer confirms receipt, forwards to finance for the rebate-tier sign-off.
Gate passed: quote delivered, acknowledged, under active review. → Hold in Proposal.
Week 6 — soft block taxi kit pricing pushback
Buyer pushes back on the taxi kit unit price — the market is competitive and MASTERPARTS has existing quotes from a rival. Two-cycle rule would normally move the deal to At Risk. Instead Joel pulls the gap-view chart showing 54 other customers already paying a similar landed cost, and rebuilds the proposal with a volume-tier rebate that rewards crossing 250 units/month. Follow-up set for Week 8.
Negotiation Week 8 · weighted R 1,725,000 (75%)
MASTERPARTS counters: accept the 8% tier but asks for 60-day terms on the win-back SKUs (lower velocity, needs retail absorption) and free delivery on the first taxi-kit shipment. Joel agrees to both, conditional on a minimum first-order commitment of 300 units of 146226001 and 150 units of 129824001 by end of month.
Gate passed: customer engaged on terms, objections identified (cash flow on win-back tier, taxi pricing), agreement in principle on scope and pricing. → Advance to Negotiation.
Won Week 11 · weighted R 2,300,000 (100%)
12-month supply addendum signed. First POs land: 300 × 146226001 (taxi kit, R ≈225k) and 150 × 129824001 (NSK-13007, R ≈230k). Ops confirms stock and delivery schedule. Win reason logged in the dashboard: “lapsed-and-gap intelligence converted to targeted proposal; volume-rebate tier + 60-day terms on win-back broke the pricing objection.”
Gate passed: PO in hand, delivery agreed, win reason documented. → Deal marked Won. FY26 trajectory now R 8.41M → R 10.7M target (+27%).
What the example shows: the weighted pipeline grew from R 345k → R 2.3M because each transition was backed by evidence from the dashboard — lapsed-SKU history, gap-vs-market volumes, and the customer's own actions. The dashboard didn't close the deal; it made the deal defensible at every gate.

5. Health Metrics — What to Watch

Forecast health

  • Weighted pipeline vs target — are we covered at 2.5–3× target?
  • Stage mix — is pipeline top-heavy (too much in Lead) or stalling late (too much in Proposal)?
  • Close-date slippage — how often does a deal's close date move right?

Deal velocity

  • Average days-in-stage — which gate is the bottleneck?
  • Conversion rate by stage — where do deals leak?
  • At-Risk recovery rate — how many parked deals come back vs die?

6. Common Pitfalls

Stage inflation. Reps push deals forward to look healthier. Counter it by reading the exit criteria out loud in every review.
Sticky Proposal syndrome. Deals camp in Proposal for months. Enforce the two-cycle rule — either engage, escalate, or move to At Risk.
Hero close dates. Everything lands “end of quarter”. Challenge any close date that isn't backed by a customer-stated timeline.
Vanishing At-Risk deals. At Risk is not a graveyard — every deal there needs a recovery plan and a review date, or it should be marked lost.
Fix: the cure for every pitfall above is the same — ask for the evidence, not the opinion.
🚨
Critical tasks are overdue — immediate action required
    ⚠️
    High-priority tasks are past SLA (3 days overdue)
      Open
      0
      Tasks in progress
      Overdue
      0
      Past due date
      Due Today
      0
      Need action now
      Critical
      0
      Highest priority open
      Done This Week
      0
      Completed ≤7 days
      Add Task
      # Task Customer Type Priority Owner Due Date Status Actions

      ⚙️ Sales Operations Methodology

      The operational discipline that makes the pipeline work. Sales Ops exists to do two things: remove friction from the seller's day, and add signal to the forecast. Every process, report, and tool is justified by one of those two tests — if it does neither, kill it.

      4 Pillars Weekly / Monthly / Quarterly Cadence Data Hygiene First Coach, Don't Police

      1. Philosophy — Remove Friction, Add Signal

      Sales Operations is the function that keeps revenue predictable. Not by adding more admin, but by making sure the right information moves to the right person at the right time — and by making sure the rep spends their day on the customer, not on the system.

      Principles

      • One source of truth. Every account, deal, and activity lives in one system. No parallel spreadsheets.
      • If it's not in the system, it didn't happen. No credit for work that isn't captured.
      • Reports are conversations, not verdicts. The number exists so the team can talk about the customer — not so management can grade the rep.
      • Automate the boring, escalate the blocked. Ops exists to take repetitive work off the seller's desk and raise flags early when a deal is stuck.

      What good sales ops delivers

      • A weighted pipeline number leadership can plan against.
      • Every account has an owner, a plan, and a last-contact date.
      • Lapsed customers and gap SKUs get reviewed monthly — no silent churn.
      • Win/loss reasons are logged, so next quarter's plan improves on this quarter's.

      2. The Four Pillars

      Everything Sales Ops does falls under one of four pillars. If you can't place an initiative under one of these, it's probably not sales ops work.

      PillarWhat it ownsCore question it answers
      ① Data Hygiene Customer master, product master, deal records, activity capture, deduplication, naming conventions. "Do we trust the numbers?"
      ② Cadence Discipline Weekly pipeline reviews, monthly account reviews, quarterly win/loss, annual planning. Each has a fixed agenda and fixed attendees. "Are we meeting often enough — and are the meetings productive?"
      ③ Account Coverage Territory & account ownership, quota allocation, follow-up SLAs, escalation paths, rep load balancing. "Does every account that matters have an owner who is actually working it?"
      ④ Insight Loop Win/loss analysis, lapsed-customer review, gap-SKU review, pipeline-leak analysis, rep coaching inputs. "What did we learn this month that changes next month?"
      Rule of thumb: if you're spending more than 20% of Sales Ops bandwidth on any one pillar, the other three are probably starving. Rebalance.

      3. How to Implement — 8-Step Rollout

      Sequence matters. Do these in order — data hygiene before cadence, cadence before coverage plans, coverage before insight loops. Skipping ahead builds on sand.

      1
      Define the customer master Every account gets one canonical name. Merge duplicates (e.g. "MASTERPARTS (PTY) LTD" vs "Masterparts Pty"). Assign an ID. This is non-negotiable — every other report depends on it.
      2
      Define the product master Same discipline for parts — one canonical part number per SKU, old PN recorded for reference, origin and type tagged consistently. Without this, "top 10" and "gap" views mean nothing.
      3
      Set the cadence calendar Weekly pipeline review (same day, same time, 30 minutes). Monthly account review (2 hours, per segment). Quarterly win/loss (half-day, cross-functional). Annual planning off-site. Put them in every relevant calendar for the year.
      4
      Establish follow-up SLAs Critical → same day. High → 3 days. Medium → 1 week. Low → 2 weeks. Publish the SLAs. Track compliance. Missed SLAs are a coaching trigger, not a punishment.
      5
      Build the coverage map Every customer is assigned to a rep. Every rep has a quota. Every top-20 account has a written account plan with goals and a named sponsor. No orphan accounts, no rep carrying accounts they never visit.
      6
      Instrument the pipeline Every deal has a stage, owner, value, close date, and exit-criteria checkboxes. Use the Pipeline tab in this dashboard as the single surface. No deal exists unless it's in there.
      7
      Publish the operating numbers Five numbers, weekly: weighted pipeline, coverage ratio (pipeline ÷ target), conversion rate by stage, average cycle time, SLA compliance %. Every rep sees the same dashboard, no hidden versions.
      8
      Close the insight loop Every lost deal logs a reason. Every lapsed customer triggers a monthly review. Every high-volume gap SKU gets an owner and a re-engagement plan. Feed the learnings into next quarter's plan — that's how the methodology compounds.
      Ready signal: when a new rep can answer "who owns account X, what stage is their biggest deal, and when was their last touch?" in under 60 seconds without opening a spreadsheet, Sales Ops has landed.

      4. The Operating Rhythm

      Cadence is what turns process into culture. Every review has a fixed agenda, fixed outputs, and fixed attendees — no ad-hoc meetings replacing the scheduled ones.

      CadenceLengthPurposeFixed outputs
      Daily stand-up 10 min Surface blockers. What moved yesterday, what's at risk today. Updated deal notes, SLAs attended to.
      Weekly pipeline review 30 min Walk every Proposal / Negotiation / At Risk deal. One question per deal: what does the customer need to do next? Updated stages, new close dates where justified, At-Risk flags logged.
      Monthly account review 2 hours Review top-20 accounts by segment — revenue trend, lapsed SKUs, gap SKUs, relationship health. Account plan updates, new deals created, At-Risk accounts escalated.
      Quarterly win/loss ½ day Cross-functional: sales, ops, product. Walk through wins and losses of the quarter, extract patterns. 3–5 playbook changes for next quarter. Documented win reasons per segment.
      Annual planning 1–2 days Territory, quota, account assignments, target customer list for the year. New coverage map, revised targets, hiring plan.
      Warning: if a cadence is cancelled twice in a row for “something urgent”, the cadence has stopped being the most urgent thing — and the methodology is leaking. Fix that before fixing anything else.

      5. Health Metrics — What to Watch Weekly

      Operational health

      • Data completeness — % of deals with stage, owner, value, close date, exit-criteria filled.
      • SLA compliance — % of follow-ups hit within SLA, broken down by priority.
      • Activity capture — touches logged per account per month (target ≥ 1 for active accounts).
      • Account coverage — % of top-20 accounts with a current-quarter plan.

      Forecast health

      • Coverage ratio — weighted pipeline ÷ quarterly target (aim for 2.5–3×).
      • Stage mix — % of pipeline in each stage. Too much in Lead = weak close; too much in Proposal = leaks.
      • Conversion by stage — where deals leak, stage-by-stage.
      • Cycle time — average days from Lead to Won. Rising cycle time = friction accumulating.
      • Close-date slippage — how often deals push right. High slippage = dishonest dates.
      Don't measure everything. Pick the five numbers above, publish them weekly, and review the same list every week. Changing the metric every month means no one can detect a trend — the whole point of health metrics.

      6. Common Pitfalls

      CRM hygiene rot. Data quality decays weekly. If no one is tasked with reviewing duplicates, stale deals, and missing fields, the system becomes a graveyard in ~90 days.
      Metric theatre. Adding more KPIs to prove you're in control. Too many metrics = none of them move behaviour. Keep the list short and boring.
      Review-as-firing-squad. When pipeline reviews become blame sessions, reps learn to hide slow deals or inflate stages. The methodology breaks. Coach, don't grade.
      Tool sprawl. Three dashboards, two spreadsheets, and a Slack channel all holding partial truth. Pick one surface. Everything else is a view onto it.
      Silent churn. Lapsed customers aren't visible until someone runs the report. Put lapsed-customer review on the monthly cadence calendar so churn surfaces in under 30 days, not at year-end.
      Ops doing the rep's job. Sales Ops should enable activity, not perform it. If ops is updating deal stages for reps, the methodology has failed — the rep no longer owns the pipeline.
      Fix: most pitfalls above trace back to one root cause — letting a small breach (a skipped review, an unresolved duplicate, a forgotten SLA) become normal. Fix small breaches fast.

      📊 Customer Reports & Intelligence

      Generate customer-specific pipeline reports from the actual sales data, and read how the Profit & Loss figures reconcile to SOS Inventory. For the Pipeline methodology see the 🏗️ Pipeline tab; for the Sales Operations methodology see the 📋 Customer Operations tab.

      7. Generate Customer Pipeline Report

      Select a customer to generate a pipeline-ready report from their actual sales data — account snapshot, FY trend, top products, gap opportunities, and lapsed SKUs.

      💰 P&L Reconciliation Methodology

      The dashboard's Profit & Loss agrees with SOS Inventory's Profit and Loss by Customer report in every fiscal year from FY2018 to FY2026, once two known definitional differences are applied: the dashboard excludes non-inventory invoice lines, and its data is as of the morning pull on the day it was built. Cost of goods sold agrees to within 0.1% in every year. Every variance is itemised below.

      Revenue reconciles to the rand COGS within 0.1% FY2018 – FY2026 No hand adjustments
      1. Purpose 2. Two Sources 3. Definitions 4. Reconciliation 5. Non-inventory Lines 6. Cut-off Timing 7. COGS 8. Margin % 9. Excluded 10. Re-perform It 11. Limitations

      1. Purpose and Scope

      This explains how the dashboard's Profit & Loss figures are derived from SOS Inventory, and reconciles them to SOS's own Profit and Loss by Customer report for every fiscal year from FY2018 (1 April 2018 – 31 March 2019) to FY2026 year-to-date (1 April 2026 – 17 September 2026). Fiscal years run 1 April to 31 March and are named by the calendar year in which they start.

      Result. Revenue reconciles to the rand in every year. COGS reconciles to within 0.1% in every year. All differences arise from three causes — non-inventory invoice lines, cut-off timing, and rounding in the COGS allocation. No transaction is missing from either side, and no figure has been adjusted by hand.

      All amounts are in South African rand, excluding VAT.

      2. The Two Sources

      SOS Inventory report

      SOS Inventory is the company's inventory and invoicing system. Its Profit and Loss by Customer report lists, for a date range, every customer's revenue, COGS, profit and profit percentage. Revenue is taken from invoices and credit notes dated in the range. COGS is taken from shipments in the range, valued at average cost. The report was run directly from SOS for each fiscal year on 17 September 2026 with the settings in section 10.

      Sales Dashboard P&L

      The dashboard's Profit & Loss tab is built by a script that reads the same invoices and credit notes from SOS (active and archived documents, from the first invoice in April 2018), keeps only the lines that are stock items, and summarises them to one row per customer, per part number, per fiscal year. Its COGS is not calculated independently: it is taken from SOS's Profit and Loss by Item report, run one month at a time, and shared across the customers who bought that part in that month in proportion to units. The result is written to a workbook (SOS Profit and Loss, dated) and published to the dashboard.

      Both sources therefore read the same underlying invoices and the same SOS cost valuation. They differ only in which invoice lines they include and in when they were run.

      3. Definitions

      MeasureSOS Profit and Loss by CustomerSales Dashboard P&L
      RevenueEvery line on every non-voided invoice and credit note in the period, whatever the item typeOnly lines whose item is an Inventory Item, Assembly or Kit. Non-inventory lines (section 5) and lines with no item are excluded
      COGSCost of shipments in the period at SOS average costThe same SOS figure, taken from the Profit and Loss by Item report month by month and split across customers by units shipped
      ProfitRevenue less COGSCosted revenue less COGS, where costed revenue is the revenue of lines SOS was able to cost
      Margin %Profit ÷ revenueProfit ÷ costed revenue
      Coverage %Not reportedCosted revenue ÷ revenue. Shows how much of the revenue carries a cost

      The dashboard reports profit on costed revenue rather than on all revenue so that a line with no cost is never shown as pure profit. From FY2022 onwards SOS costs practically every line, so coverage is 99.8%–100% in every reconciled year and this choice has no material effect on the totals.

      4. Reconciliation by Fiscal Year

      SOS figures are the sum of the customer rows in the Profit and Loss by Customer report run on 17 September 2026. Dashboard figures are from the workbook built at 18:49 on 17 September 2026. A positive variance means SOS is higher.

      FYSOS revenueDashboard revenueVarianceExplained bySOS COGSDashboard COGSCOGS var.
      201852 274 51551 411 047863 468Non-inventory 855 366; no item 8 10140 927 88440 927 535350
      201934 244 66831 965 1612 279 507Non-inventory 2 279 50725 820 70125 799 99420 707
      202038 661 61538 516 832144 783Non-inventory 144 78328 566 78928 542 22824 561
      202173 263 56773 254 7458 821Non-inventory 8 82155 130 98055 126 4084 572
      202263 272 52263 209 25663 266Non-inventory 63 26650 681 71450 683 000−1 286
      202360 192 16560 281 221−89 056Non-inventory −89 05647 728 79947 719 5919 208
      202488 346 33389 024 815−678 481Non-inventory −678 48167 398 87867 397 7951 084
      202564 608 73264 596 01012 721Non-inventory 12 72146 131 24146 131 21526
      2026 YTD31 418 10431 240 205177 899Non-inventory 84 122; five invoices after the pull 93 77721 583 38021 551 40731 973
      Every revenue variance equals, to the rand, the value of the invoice lines the dashboard excludes by definition (section 5), plus in FY2026 the invoices raised after the data was pulled (section 6). All COGS variances are below 0.1% of the year's COGS (section 7).

      5. Variance 1 — Non-inventory Invoice Lines

      The dashboard P&L is a product-level report. It keeps only invoice lines for stock items (Inventory Item, Assembly or Kit) because each row is a part number, and a margin only has meaning where a part with a cost was sold. SOS's report keeps every line on the invoice. The difference is the value of the lines that are not stock items — booked in SOS as non-inventory items under the ADM category and similar, and used for accounting entries that pass through the sales ledger.

      FYNon-inventory lines excludedMain items
      2018863 468Exchange Difference 871 547; Sample −19 439; freight 3 259; 8 101 on lines with no item
      20192 279 507Exchange Difference 2 117 210; FRT AIR 124 711; Reimburse 37 586
      2020144 783Exchange Difference 133 725; MISC 26 200; Reimburse −18 793; freight and courier 3 650
      20218 821Small freight and adjustment lines
      202263 266Small freight and adjustment lines
      2023−89 056Discount allowed −89 356; freight 300
      2024−678 481Discount allowed −452 820; BAD Debt −331 302; Exchange Difference 101 728; Disposal of Fixed Asset 3 913
      202512 721Disposal of Fixed Asset 53 478; Discount allowed −40 757
      2026 YTD84 122Sundry Income 44 859; BAD Debt 31 372; Discount allowed 7 891

      These lines carry no cost of goods, so they change revenue and profit by the same amount in SOS's report and do not change COGS. Where the excluded lines are negative (FY2023 and FY2024, driven by Discount allowed and BAD Debt), SOS's revenue is lower than the dashboard's. Every line is still present in SOS and in the dashboard's source data; the dashboard excludes them by item type, not by editing.

      Audit note. The sum of these lines equals the revenue variance in section 4 to the rand in every year (FY2026 after also allowing for section 6).

      6. Variance 2 — Cut-off Timing

      The dashboard's invoices were pulled from SOS at 09:54 on 17 September 2026. SOS's report was run that evening. Five invoices dated 17 September were raised between the two:

      InvoiceCustomerAmount excl. VAT
      ESA17787STAR BRAKE & CLUTCH DISTRIBUTORS CC3 780.00
      ESA17788WEPORT PTY LTD10 022.00
      ESA17789Gemini Parts (2)23 050.10
      ESA17790Walkers Midas-Kathu2 975.00
      ESA17791Goeie Hoop Onderdele53 949.61
      Total93 776.71

      Together with the 84 122 of non-inventory lines in section 5, this accounts for the full FY2026 revenue variance of 177 899. The same five invoices explain most of the FY2026 COGS variance of 31 973, because SOS had shipped and costed them by the time its report ran.

      Only ever affects the open year. Closed fiscal years have no cut-off variance. To eliminate it for a comparison, run the SOS report with an end date on or before the day of the dashboard's pull, or rebuild the dashboard after the last invoice of the day.

      7. Variance 3 — Cost of Goods Sold

      The dashboard does not value stock itself. Its COGS is SOS's own figure, taken from the Profit and Loss by Item report run for each calendar month with archived items included. SOS values COGS from shipments at average cost, so within one part in one month the cost per unit is the same for every customer. The dashboard divides the month's reported COGS for a part by the units sold of that part in the month to get a unit cost, and multiplies each customer's units by it. Summed back over all customers this returns SOS's monthly COGS exactly.

      Where a part has revenue in a month but no cost in that month's report — SOS books revenue on the invoice date and COGS on the shipment date, which can fall in different months — the dashboard uses the part's unit cost for the fiscal year instead. Within a year the timing washes out.

      The residual variances have three sources

      The largest residual is 0.09% of the year's COGS (FY2020). None changes any year's margin by more than 0.1 percentage points.

      8. Variance 4 — Margin Percentage

      Because the non-inventory lines in section 5 carry revenue but no cost, they raise SOS's margin percentage in the years where they are large and positive, and lower it where they are negative. The dashboard's margin is the margin on stock items only.

      FYSOS margin %Dashboard margin %DifferenceCause
      201821.7120.391.32Exchange Difference 871 547 with no cost
      201924.6019.295.31Exchange Difference 2 117 210 and air freight with no cost
      202026.1125.900.21Exchange Difference 133 725 with no cost
      202124.7524.750.00—
      202219.9019.820.08Small non-inventory lines
      202320.7120.84−0.13Discount allowed reduces SOS revenue
      202423.7124.29−0.58Discount allowed and BAD Debt reduce SOS revenue
      202528.6028.590.01—
      2026 YTD31.3031.010.29Sundry Income and BAD Debt with no cost; five later invoices
      Recomputing SOS's margin on stock-item revenue only gives the dashboard's figure in every year. The two margins answer different questions: SOS's is the margin on everything that passed through the sales ledger, the dashboard's is the margin on product sales.

      9. Excluded from Both Sources

      10. How to Re-perform the Reconciliation

      SOS side

      In SOS Inventory, run Reports → Profit and Loss by Customer, with the date range set to the fiscal year (for example 2025-04-01 to 2026-03-31), all locations, archived customers shown, and no name filter. Sum the customer rows; the Total row on the export should agree with that sum.

      Dashboard side

      Open the workbook SOS Profit and Loss (dated) produced by the P&L import, sheet By Fiscal Year. Revenue, COGS and Margin % per fiscal year are on that sheet. The Detail sheet holds every customer, part and year row that adds up to it.

      Bridging items

      From the same SOS invoices, total the lines whose item type is not Inventory Item, Assembly or Kit for the year (the ADM items in section 5), and any lines with no item. SOS revenue less those lines should equal dashboard revenue. For the open year, also add invoices dated after the workbook's build time.

      COGS check

      Run Profit and Loss by Item for each month of the year with archived items shown and sum the COGS column; this is the figure the dashboard allocates. It should agree with the by-customer report's COGS for the same period, and with the dashboard within the residuals in section 7.

      The same reconciliation can be repeated at customer level: for any customer, SOS revenue less that customer's non-inventory lines equals the dashboard revenue for that customer.

      11. Limitations and Open Points

      One customer's shelf, from the customer picker at the top.

      Stock Profile

      Stock Ageing — Months Since Last Purchase
      Show the age band table
      Shelf Profile — Depth & Reorder Cadence

      Profit & Loss

      Revenue, COGS & Profit by Fiscal Year
      Margin % by Fiscal Year
      Top 15 by Gross Profit
      Profit & Loss — per part number per customer

      Invoicing

      Invoicing — every invoice and credit-note line from SOS

      P&L Detail

      Sales, Cost & Gross Profit by month
      Top 15 customers by gross profit
      What the GP % is made of
      Product sales are the invoices and credit notes with a matching cost line. The rest is anything else booked to Income or Cost of Goods Sold in the month, such as supplier bills for customs duty and freight, or bank discounts.
      GP by Customer
      How the figures are worked out
      Sales are the lines in the export's Income section (invoices, credit notes, bank discounts); Cost is the Cost of Goods Sold section: the SOS journal entry per shipment or return, plus supplier bills booked there. A cost journal line names its document in its description ("SOS Inventory - shipment ESA17628 - …"), which is how it is matched to the invoice and takes that document's customer. VAT is the export's own VAT amount per line, never assumed at 15%. Profit = Sales − Cost, GP % = Profit ÷ Sales, Debtor = Sales + VAT. Customer is the QuickBooks name before the colon, so branches roll up under the account. Download full workbook gives the six-tab Excel file the reorder system built (Profit and Loss Detail, SUM, GP by Customer, GP by Invoice, Reconciliation, Source export) with its live formulas; Export Excel on the table is a plain copy of the figures shown.

      ABC Analysis

      The same method as the reorder system's ABC Analysis page: units sold over the last 12 complete months, ranked high to low, with the running cumulative share setting the class (A ≤ 70%, B ≤ 85%, C ≤ 95%, D beyond; Z = no units). Stock on hand, on order and the reorder quantity live in the reorder system and are not shown here.
      FG Products — class, demand and target stock per part
      How the classes are worked out

      Customers

      Customer master from SOS Inventory — one row per account, full detail
      📧
      Monthly Report Due

      The monthly Lapsed Products report is scheduled for today.

      Sending in 15s…