Skip to content

Multi-Store Cash-Up Reconciliation

Context
Multi-store retail (client anonymised)
Status
Delivered
Tools
Power BI, DAX, Power Query, SQL

Executive summary

I built a cash-up reconciliation reporting solution covering more than 120 retail stores. It presents the current month alongside the three preceding months, so finance teams can see reconciliation status, exceptions and trends per store from a single, consistent view.

  • 120+

    Retail stores covered

    Single cash-up reconciliation reporting solution

  • 4 months

    Reporting window

    Current month plus the three preceding months

How to read this result. The store count refers to this solution only and is not combined with store counts from other retail engagements.

Business context

Each store in a retail network records its daily cash-up: what the till system expected and what was actually counted and banked. Head-office finance needs those records reconciled store by store, day by day, and needs to know quickly where the numbers do not agree.

Challenge

At more than 120 stores, reconciliation becomes a volume problem. Checking each store manually is slow, and differences are easy to miss when they are spread across hundreds of rows. Finance also needed to see recent history — not only the current month — to separate one-off differences from recurring ones.

My contribution

  • Designed the reporting model and reconciliation logic for store-level cash-up data.
  • Built the views for reconciliation status, exceptions, totals and trends.
  • Defined the rolling reporting window: current month plus the three preceding months.
  • Added data-quality indicators so missing or late submissions were visible rather than silently treated as zero.

Investigation and methodology

The work started with the questions finance asked most often: which stores have not reconciled, how large are the differences, are they new or recurring, and is the data complete? Each became a measure or view. Treating missing data as a distinct status — rather than as a zero variance — was an important design decision, because a store that has not submitted is a different problem from a store that is out of balance.

Solution design and implementation

The solution is organised around exceptions. Summary totals sit at the top; below them, stores are classified by reconciliation status, with filters for store, region and period. The four-month window keeps the model focused on what finance needs to act on while still showing short-term trends.

Results and business value

Finance teams gained one consistent view of cash-up reconciliation across a network of 120+ stores, covering the current month and the three preceding months. Exceptions are visible without scanning raw records, and incomplete data is flagged instead of hidden.

Technical details
  • Status logic: each store-day classified as reconciled, within tolerance, variance or missing submission.
  • Rolling window: date filtering anchored on the current month and the three preceding months, so the report moves forward automatically.
  • Data quality: completeness by store and period surfaced as its own indicator alongside financial variance.
  • Performance: the four-month window limits the model to the data needed for current reconciliation work.

Lessons, constraints and improvement opportunities

  • Designing for exceptions first makes a large network manageable.
  • “No data” must never look like “no problem”.
  • Next steps could include recurring-variance flags per store and agreed tolerance thresholds owned by finance.
  • Financial reconciliation
  • Exception reporting
  • Data quality
  • Power BI modelling

Interactive demonstration

Explore a synthetic version

Built independently with generated data and illustrative business rules, to show the analytical approach without exposing any client system or record.

Illustrative demonstration using synthetic data. Not an original client system. Company, store and people names are fictional (Kestrel Outfitters).

Store cash-up reconciliation

124 fictional stores, current month plus the three preceding months. Differences within ±R50 count as reconciled; a missing submission is its own status, never a zero variance.

Reconciliation rate
93.1%
12,349 of 13,268 store-days
Net variance (banked − expected)
−R91,231
on R502.31m expected
Variance exceptions
751
Data completeness
98.7%
168 missing submissions · 124 stores
Exceptions by month
Store-days needing attention
  • Variance
  • Missing submission
0100200300Jul 2026Aug 2026Sep 2026Oct 2026*

* October is month to date.

Show data table
MonthVarianceMissingStore-days
Jul 2026212463844
Aug 2026219623844
Sep 2026203393720
Oct 2026 (to date)117211860
Net variance by region
Submitted store-days only; negative means less banked than expected
−R30.0k−R20.0k−R10.0kR0R10.0kCentral−R21.9kCoastal−R16.2kHighlands−R23.3kNorthern−R20.4kWestern−R9.4k
Show data table
RegionNet variance
Central−R21,946
Coastal−R16,195
Highlands−R23,286
Northern−R20,415
Western−R9,389
Stores with the most exceptions in this selection
StoreRegionVariancesMissingNet varianceData quality
S021 Parkgate 2Highlands238−R3,0128 missing
S106 Brookfield 9Central236−R2,2916 missing
S123 Market Square 11Northern226−R3,5086 missing
S038 Hilltop 4Coastal197−R2,8647 missing
S089 Lakeview 8Coastal185−R2,2475 missing
S072 Willow 6Northern202−R2,7682 missing
S055 Mill Lane 5Western191R5231 missing
S004 Station Road 1Western181−R1,7311 missing
S050 Hilltop 5Western144−R1,4254 missing
S028 Station Road 3Western123R1263 missing
S116 Harbour 10Coastal103−R1,4253 missing
S061 Riverside 6Northern111−R2,4741 missing