Local-first reconciliation for payment operations

Reconcile the ledger.
Resolve the exceptions.

Core banking and payment provider exports rarely agree on the first pass. LedgerMatch gives operations a clear, reference-by-reference view of what matched, what is missing, what duplicated, and what needs attention.

  • Amount, date & status checks
  • CSV + Excel reports
  • Runs on your machine
The LedgerMatch reconciliation dashboard showing 28 total transactions, 7 matched records, 7 discrepancies, and report download controls.
The reconciliation summary after the built-in demo run. Synthetic data only
3 fields compared
amount, date, status
6 exception classes
missing, duplicate, mismatch
2 report formats
CSV and Excel
0 hosted uploads
local by default

The control surface

One reference.
Three checks.

LedgerMatch does not guess at a match. It aligns the shared reference, compares the fields that matter, and shows the difference before you sign anything off.

Reconciliation review

Discrepancies

7 cases
  • Mismatched TXN-1045 Amount differs by $18.00
  • Missing TXN-1048 Absent from provider export
  • Duplicate TXN-1052 2 provider records
  • Matched TXN-1042 Amount, date and status agree
Built-in demo data TXN-1045 · amount gap

The review screen is built for investigation, not just reporting. Search by reference, filter by exception type, and see both sides of the record without opening another spreadsheet.

  • Reference-first matching. Exact IDs are aligned after trimming whitespace. No fuzzy pairing hiding behind a score.
  • Duplicate safety. When a reference appears more than once, it is flagged for review, not silently paired.
  • Fail-closed validation. Missing columns or malformed values stop the run with row-level detail. No partial reconciliation.
  • Field-level evidence. Amount differences are signed and shown to the cent. Date and status mismatches are highlighted in place.

Search the exception queue

Filter by reference, transaction ID, customer, status, or discrepancy type.

See both sides

Core and provider values sit side by side, with the review note and source IDs in reach.

Download the evidence

A styled Excel workbook, a full reconciliation CSV, or just the exceptions.

Revisit the run

Every completed reconciliation is stored in local SQLite history with a saved exception snapshot.

From exports to evidence

A short path to a clear close.

No new ledger, no data warehouse, no integration project. Start with the files your teams already produce.

  1. 01

    Bring both exports

    Upload the core banking CSV and the payment provider CSV, or open the built-in demo to see a complete run.

  2. 02

    Read the exception queue

    Matched references are separated from the breaks. Search and filter the records that need an owner.

  3. 03

    Export the evidence

    Download the workbook or CSV, share the reviewed result, and keep the local run in SQLite history.

Run it locally

Your ledger data
stays yours.

LedgerMatch is a Python and Streamlit application, not a hosted reconciliation service. Uploads are processed on your machine and run history lives in a local SQLite file.

  • No account or external data service required.
  • Full source, documentation, and automated tests on GitHub.
  • Works with the CSV exports your systems already produce.
Read the documentation
terminal
git clone https://github.com/Mo-Shakib/LedgerMatch.git
cd LedgerMatch
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
streamlit run app.py
Opens at localhost:8501

Start with the demo

Two exports.
One clear answer.

Run the built-in sample, inspect the intentional exceptions, then bring your own files. The source, documentation, and test suite are ready on GitHub.