Financial services · UK

2024

Reconciliation workflow for a payments business

Replaced a brittle spreadsheet process with a typed internal tool and a reconciled data source, with a full Postgres audit trail for finance and compliance.

End-of-day reconciliation
4h → 20min
Month-end exceptions
−86%
Go-live from brief
11 weeks
Duration
11 weeks from brief to production
Team
Two engineers, one reviewing
Stack
Next.js · TypeScript · PostgreSQL · Stripe

01 · Context

A UK payments business was closing its books manually each day. Finance pulled two exports from the processor, dropped them into a shared workbook, and reconciled them against an internal ledger. The workbook had grown beyond what Excel could hold without crashing, and a single missed row could mean chasing a figure for half a day.

02 · Constraints

Everything the solution had to respect from day one.

  1. 01

    FCA-adjacent audit trail. Every adjustment had to be attributable and timestamped.

  2. 02

    No downtime during the month-end close; the replacement had to cut over mid-cycle.

  3. 03

    The finance team could not switch to a different workflow overnight; parity first, then improvement.

03 · Approach

What we actually built and why, in the order it happened.

  1. 01

    Modelled the processor export and the internal ledger as first-class typed entities, with a single normalised view for reconciliation.

  2. 02

    Built a diff view in React that matched the structure finance already knew, then layered fast search, filters and bulk approval on top.

  3. 03

    Wrote every mutation through an append-only audit table. Rollbacks are cheap; history is never edited.

  4. 04

    Cut over behind a feature flag, ran both systems in parallel for a full month, and only deprecated the spreadsheet when the numbers matched to the penny for thirty consecutive close cycles.

04 · Result

End-of-day reconciliation dropped from four hours to twenty minutes. Month-end exceptions fell by 86% in the first quarter after cut-over. The audit trail has since been cited in two external reviews without remediation.

End-of-day reconciliation
4h → 20min
Month-end exceptions
−86%
Go-live from brief
11 weeks

Next case study

Product marketing site and CMS rebuild

B2B SaaS · UK · 2024

Read →

Work with us

Have a similar problem? Send us a short brief.

Answers come directly from an engineer, usually within two UK working days.