Case studies · Fintech

Rebuilding a payment ledger that finally reconciles

Migrated a fragile, partially-manual reconciliation pipeline to an idempotent, double-entry ledger with auditable trails. Ops time spent on reconciliation dropped from days per month to minutes.

99.99%
Reconciled within T+1
~5 days
Ops time saved per month
0
Duplicate-charge incidents post-launch
PCI
Scope reduced by tokenization

The situation

A mid-stage fintech was processing millions of transactions a month through a system that had grown organically. Settlement was tracked in spreadsheets, reconciliation was a manual process owned by two people, and edge cases (chargebacks, partial refunds, currency reversals) caused weekly fire drills. Audits took months.

Leadership had two open jobs they couldn't fill: a senior payments engineer and a reliability lead. They needed both, fast.

What we did

  • Designed a double-entry ledger. Wrote down the accounting model first — every money movement creates two entries, with a single source of truth for balances.
  • Made every operation idempotent. Webhooks, processor callbacks, and internal events became safely-retryable with deduplication keys persisted in the ledger.
  • Built reconciliation as a query, not a script. Daily reconciliation reports run against the ledger and the processor's settlement files — discrepancies surface as a count, not a hunt.
  • Reduced PCI scope. Card data was tokenized at the edge and never crossed our application boundary. The compliance footprint shrank dramatically.
  • Cutover with a shadow run. Ran the new ledger in shadow mode for six weeks against production traffic before flipping over. Zero customer-visible incidents at switch.

Outcomes

  • Reconciliation finishes within T+1 for 99.99% of transactions.
  • Ops time on payments dropped by roughly five business days per month.
  • The first audit after migration completed in two weeks instead of two months.
  • No duplicate-charge incidents since launch (previously a quarterly recurrence).

Stack

AWS, Postgres (with strict transaction discipline), Go, TypeScript / Node.js, Terraform, Datadog. Card processor and bank rail integrations handled with at-least-once delivery semantics.

Payments that don't reconcile?

Tell us where the gaps are. We'll respond within one business day.

Book a fintech call