# Reconciliation — User Manual for Finance Operators

*MW-Core Recon (rule-engine version) · Last updated 2026-07-12*

This guide is for the finance team members who run daily reconciliation:
upload the day's files, run the match, review results, download the Excel
report, and handle exceptions. No technical knowledge is needed.

> **Vocabulary note:** your screens use *your* organisation's words. A
> hospital sees "HIS" and "Units"; a retail chain sees "POS" and "Stores".
> This manual writes "internal system" and "location" — read them as
> whatever your screens show.

---

## 1. Getting access

- Reconciliation is restricted to users with the **Finance Admin** or
  **Super Admin** role. If the Reconciliation menu is missing or you see
  *"Reconciliation is restricted to finance admins"*, ask your administrator
  to update your role.
- Log in at **`/admin/login`**. The left sidebar has a **RECONCILIATION**
  section:

| Menu item | What it's for | Who uses it |
|---|---|---|
| **Run Recon** | The daily 4-step wizard: pick a reconciliation, upload files, run, download the report | Finance operator (you) — daily |
| **History** | Every past run: status, counts, report download, drill-down | Finance operator — daily |
| **Rule Sets** | What each reconciliation matches on (and a test "dry run") | Finance admin — occasionally |
| **Onboarding** | Set up a new business, new file formats, location codes | Administrator — rarely |
| **Legacy Config** | Old per-type settings, kept for reference | Administrator |

---

## 2. Daily routine — running a reconciliation

### Step 1 · Select

1. Open **Run Recon**.
2. Pick the **Reconciliation Date** — the transaction date of the files you
   are about to upload (usually yesterday).
3. Click the reconciliation you want to run (for example
   *"Card 3-Way Recon (Bank ↔ Gateway ↔ Internal System)"*), then
   **Continue → Upload Files**.

### Step 2 · Upload

You'll see one upload slot per required file. Each slot names the exact file
format it expects (e.g. *"HDFC Bank Card Settlement (MPR)"* — XLSX, or
*"MomentsPay Transaction Export"* — CSV).

- Upload each file exactly as downloaded from the bank portal / gateway /
  internal system. **Do not edit, reformat, or delete rows** — the system
  handles messy headers, padded codes, and name variations automatically.
- A green **✓ Uploaded** appears per file. When all slots are green, click
  **Start Reconciliation →**.

### Step 3 · Processing

A progress screen shows the stages: *Parsing → Matching → Generating report*.
Typical runs finish in under a minute; very large files can take a few
minutes. Don't close the page.

### Step 4 · Results

You'll see totals: **Matched**, **Unmatched**, and the amounts for each.

- **⚠ Yellow warning box?** The system compared the dates *inside* your files
  with the date you selected. A warning like *"most transactions are dated
  2026-06-09 but the selected recon date is 2026-06-10"* almost always means
  either the wrong date was selected in Step 1 or the wrong day's file was
  uploaded. Check before trusting the results.
- Click **↓ Download Excel Report** to save the report.
- **Run Another** starts a fresh run.

---

## 3. Reading the Excel report

The workbook always starts with a **Summary** sheet:

- Your organisation's name, the reconciliation name, and the date.
- A table with one row per **matching stage** (e.g. *Bank Card vs Gateway*,
  then *Internal System vs Matched Bank Card*): total, matched, unmatched
  counts and amounts.
- Indented **tier rows** under each stage, e.g. `↳ tier: exact-4key` and
  `↳ tier: 3key`. Tiers tell you *how strictly* a row matched:
  - **exact / 4-key** — matched on every key including approval code: fully trustworthy.
  - **3key / fallback** — matched without the approval code: fine, but worth a glance.
  - **tolerant** — matched within an allowed amount/date difference: review these.
- A **location-wise table** per stage (your Units/Stores/Centres), showing
  matched vs unmatched per location.

Then one pair of sheets per stage:

- **…-Matched** — every matched row, with a `Match Tier` column first.
- **…-Unmatched** — rows from your side with no counterpart. **This is your
  work list.**
- Some stages also have a *counterparty unmatched* sheet (e.g.
  *GW-NoSettlement*) — gateway/bank rows that nothing on your side explains.

> Reports are stored for **30 days**. After that the download disappears from
> History, but nothing is lost — an administrator can regenerate the report
> for any past run because the underlying results stay in the system.

---

## 4. Handling exceptions (unmatched rows)

Instead of tracking unmatched rows in a side spreadsheet, use the built-in
exceptions screen:

1. Open **History** and click **Details** on the run.
2. The header shows an **open exceptions** count. Filter by stage if needed.
3. Each unmatched row shows which side it came from:
   - **Unmatched (our records)** — in your files, missing at the counterparty.
   - **Unmatched (counterparty)** — at the bank/gateway, missing in your records.
4. For each row you've investigated, type a short **note** (e.g. *"settled
   T+1, appears in 10-Jun file"* or *"refund — reversed on 12-Jun"*), then:
   - **Resolve** — explained and accounted for.
   - **Ignore** — noise (test transaction, duplicate header row, etc.).
5. Made a mistake? **reopen** puts the row back in the open list.

Who resolved what, when, and why is recorded permanently. The goal each day:
**open exceptions = 0**.

---

## 5. History

**History** lists every run with status, counts, and dates.

- **Details** → the drill-down + exceptions screen.
- **↓ Download** → the Excel report (available for 30 days after the run).
- A **Failed** status shows the reason on the details page — most commonly a
  wrong file uploaded into a slot (see Troubleshooting).
- Super Admins see runs across **all** businesses, with a Tenant column.

---

## 6. Occasional tasks (finance admin)

### 6.1 Testing a reconciliation without affecting anything — "Dry Run"

Before trusting a new or edited rule set, test it:

1. Open **Rule Sets**, select the rule set.
2. In the **Dry run** panel, upload one sample file per slot.
3. Click **Run dry run** — you get per-stage matched/unmatched counts and the
   tier breakdown. **Nothing is saved**; no session, no report.

Use this when: a bank changes its file format, you've adjusted matching
rules, or you're validating a newly onboarded business.

### 6.2 Understanding a rule set

The Rule Sets page shows each reconciliation as readable stages:

- **A** and **B** are the two sides being compared (a file, or the *output*
  of an earlier stage — that's how 3-way reconciliation works).
- Each **tier** line lists the fields that must agree, e.g.
  `card_last4 + terminal_id + amount + approval_code`, and any allowances
  like `±1.0` (amount tolerance) or `T+2d` (settlement-date window).
- *(Advanced)* Some reconciliations use **batch settlement** matching: many
  of your transactions are matched against ONE settlement line whose amount
  equals their sum.

Editing rule sets is JSON-based with a **Validate** button and is best left
to your administrator — invalid rules cannot be saved, and **duplicate**
lets you experiment on a copy safely.

### 6.3 Onboarding — new business, new bank file, location codes

The **Onboarding** page (administrator territory, included for awareness):

1. **Business Profile** — organisation name, type, and the labels your team
   sees (HIS vs POS, Unit vs Store).
2. **File Formats** — upload one sample file; the system detects the columns
   and suggests what each one means; the admin confirms and saves. From then
   on that file format is recognised everywhere — this is how, for example,
   Razorpay files were added without any software change.
3. **Locations** — maps the long location names appearing in files
   (*"SAHYADRI SUPER SPECIALITY HOSPITAL HADAPSAR"*) to your short codes
   (*"HDP"*) used in reports.

---

## 7. Troubleshooting

| What you see | Likely cause | What to do |
|---|---|---|
| *"Missing uploads for: …"* on start | A required file slot is empty | Upload the file named in the message |
| Run **Failed** with *"cannot find column for '…'"* | Wrong file uploaded into that slot, or the bank changed its file layout | Check you exported the right report; if the bank changed the format, ask your admin to update the file format via Onboarding |
| ⚠ Date warning on the results page | Date picked in Step 1 doesn't match the dates inside a file | Re-run with the correct date, or upload the correct day's file |
| Far more unmatched than usual | Wrong day's file for ONE of the sources (everything shifts), or a partial export | Check the date warning; re-export the file for the full day |
| *"File … has N rows, exceeding the limit"* | File larger than 200,000 rows | Split the export or contact your administrator |
| Download button missing on an old run | Report older than 30 days was purged | Ask your admin to regenerate it (results are never deleted) |
| *"Reconciliation is restricted to finance admins"* | Your account role doesn't include recon access | Ask your administrator for the Finance Admin role |
| *"Recon engine service unavailable"* | The matching service is down | Contact your administrator — no data is lost; run again later |

---

## 8. Daily checklist

- [ ] Download today's files from each source (bank portal, gateway, internal system) — full day, unedited
- [ ] Run Recon → correct **date** → correct **reconciliation** → upload → start
- [ ] No yellow date warning on the results page
- [ ] Download and file the Excel report
- [ ] Open **Details** → work the unmatched rows → notes on every Resolve/Ignore
- [ ] **Open exceptions = 0** (or handed over with notes)
