Skip to content

Core banking ledgers:
Consistent data in every region

We fixed a core banking platform's dual-write problem with a transactional outbox, change data capture (CDC) streaming and consumers that safely ignore duplicates. Ledgers and downstream systems now stay in step, with 100% data consistency.

Client: Anchor CatalogsIndustry: FinTech & Financial ServicesService: SaaS & Software

Data consistency
100%
Gap between ledger and events
0ms
Event delivery
99.99%

Overview

Project
at a glance

Industry
FinTechA growing core banking platform running multi-currency ledgers across distributed microservices.
How we worked
Dedicated product teamA principal backend architect, a distributed systems engineer and an SRE lead worked inside the client's core banking unit.
Goal
Every transaction recorded onceRemove the race conditions and partial failures that left internal databases and downstream event streams out of step.
What we built
Transactional outbox and CDCAn outbox table, change data capture and duplicate-safe consumers, added to the client's existing services and PostgreSQL databases.

Client

Who we
built it for

Anchor Catalogs

Growing core banking platform

About the client
A growing core banking platform running multi-currency ledgers across distributed microservices.
What they needed
Remove the race conditions and partial failures that left internal databases and downstream event streams out of step.
Where they were
The client's microservices had a classic dual-write problem. Each service updated its database and published an event as two separate steps. When the message broker had a wobble, the database change went through, but the fraud, analytics and notification systems never received the event.

Engagement snapshot

Industry
FinTech
Service
SaaS & Software
Engagement
Dedicated product team
Delivered
Transactional outbox and CDC
Headline result
100% · Data consistency

The challenge

What was getting
in the way

The client's microservices had a classic dual-write problem. Each service updated its database and published an event as two separate steps. When the message broker had a wobble, the database change went through, but the fraud, analytics and notification systems never received the event.

Application code carried its own retry and failure logic, and engineers fixed mismatches by hand. Nobody could replay the full ledger history from a single, reliable trail of events.

  • Balances drifting apart

    Account balances differed between services, which caused spikes in customer support calls and worried regulators.

  • Engineering time lost

    Engineers spent 20% of each sprint writing and running manual data-fix scripts.

  • Failed audits

    Without a consistent event trail, the team could not fully replay ledger history for SOC 2 compliance.

The solution

What
we built

  1. 01

    Event and change saved together

    We added an outbox table to each service database. Each event is written to it in the same ACID transaction as the business change, so one cannot happen without the other.

    Type
    Atomic write
    Transaction
    ACID
    Database
    PostgreSQL
  2. 02

    Change data capture (CDC)

    Debezium connectors read the database transaction log and stream each event to the message broker, without adding any work to the application.

    Engine
    Debezium
    Pattern
    Log-based
    Availability
    99.99%
  3. 03

    Safe handling of repeat events

    Downstream services use a unique ID on every event, so an event delivered more than once is only processed once.

    Guarantee
    Processed once
    Strategy
    Idempotency key
    Response time
    Sub 5ms

Key features

What made it
useful

  • Live updates

    Reading the write-ahead log

    By reading PostgreSQL's write-ahead log (WAL), we captured every ledger transaction without changing the application logic.

    Business impact

    100% capture rate

  • Traceable

    A replayable event record

    The outbox table keeps a permanent, traceable record of every event, so the team can rebuild the ledger's state exactly during an audit.

    Business impact

    100% audit compliance

  • Resilient

    Relay that survives outages

    If the message broker goes down, the outbox relay pauses and resumes from the last log position it processed, so no data is lost.

    Business impact

    Zero data loss

Before and after

How the work
changed

Writes

Before

Partial success

The database update worked but the event failed, and nobody noticed the mismatch.

After

All or nothing

The change and its event share one transaction, so both succeed or both roll back.

Data integrity

Before

Drift over time

Mismatches needed manual work to bring the microservices back in step.

After

Always in step

Every change produces exactly one event, so downstream systems match the ledger.

Application load

Before

Retry logic in the app

Application code had to handle complex retries and failures itself.

After

Handled by the log

CDC picks up events from the database log, so the application no longer deals with messaging.

Results

The business
difference

  1. Integrity

    100% Consistency

    Ledger data consistency

    Atomic writes closed the gap between what the database holds and what downstream systems receive.

    Before: High DriftAfter: 100% Consistency

  2. Recovery

    100% Time Saved

    Manual data fixes

    Guaranteed event delivery ended the daily data-fix work for engineers.

    Before: DailyAfter: Zero

  3. Reliability

    99.99% Reliability

    Events delivered

    CDC-based streaming loses no messages, even when the broker fails or the network splits.

    Before: 95%After: 99.99%

Testimonial

What the client
says

“Ledger data used to drift between regions, and we fixed it by hand. Coretus put an outbox and a consistency monitor in place. We now see 100% ledger consistency, 99.99% event delivery and no more manual data fixes.”
Samantha PhillipsVP of Engineering, Anchor Catalogs

Key results

  • 100% ledger consistency
  • 99.99% event delivery
  • Manual data fixes eliminated

Trust and control

How we kept it
safe and reliable

  • 01

    Data stays in-region

    Outbox logs are partitioned by region to meet GDPR and local data rules.

    Compliance ready
  • 02

    A trail for every change

    Each ledger change is linked to a specific transaction ID in the outbox, so it can always be traced.

    SOC 2-ready
  • 03

    Scales with the database

    Log-based CDC scales out with the database clusters without slowing the application.

    Cloud native
  • 04

    You own the libraries

    The client owns 100% of the IP in the outbox libraries and relay automation scripts.

    100% owned

Faster delivery

Built on tested foundations

Reusing proven outbox and idempotency components cut repeated setup work and let the team go live sooner.

  • Outbox pattern module

    Gave each service a tested outbox table and relay, so the pattern was the same across every ledger service.

  • Idempotency module

    Supplied the unique-ID checks that stop downstream services processing the same event twice.

  • Consistency monitoring platform

    Compared ledger state with downstream systems and alerted the team to any gap.

  • Distributed state controls

    Handled pauses, restarts and log positions so the relay could recover safely after a broker failure.

FAQ

Straight
answers

Have a different question? Ask it on a 30-minute call.

Book a call

Services wrote to their database and published an event as two separate steps. When the message broker had problems, the database change went through, but fraud, analytics and notification systems never heard about it. Account balances drifted apart, and engineers spent 20% of each sprint on manual data-fix scripts.

Keep every ledger in step

If your services disagree about account balances, we can help you make each change and its event a single transaction, so downstream systems always match.