SimuVedaSystem Design Lab Open in the lab

Payments / Intermediate / 5 min

Design a reconciliation system

Match our payments against the bank settlement file each day. Late settlements clear themselves; lost webhooks and fee differences are real breaks.

Start the simulation → Change the load, break a part, watch what happens. Free, no sign-up.

In short

What it is
Reconciliation compares our records of payments with the bank’s or provider’s settlement file and lists every row that does not match.
Why it matters
Webhooks get lost, banks settle late and fees change amounts, so without a daily check money goes missing without anyone noticing.
The trade-off
Exact id matching is simple, but real files need fee rules, partial refunds and tolerance windows, and late rows must be carried over, not flagged.
Say it in an interview
"A daily job loads the settlement file, joins on the transaction id, carries T+1 rows forward, and raises tickets only for unexplained breaks."

Check yourself

What is payment reconciliation?

Answer: Matching our own records against the bank or provider records and explaining every difference. Two independent records of the same money should agree; reconciliation finds and explains where they do not.

A payment is in our records but not in today’s bank file. What is the most common reason?

Answer: The bank settles it a day later (T+1). Settlement often lags; carry the row over and match it against tomorrow’s file before raising an alarm.

The bank file has a payment we have no record of. What likely happened?

Answer: Our webhook or callback was lost, so we never recorded a payment that did succeed. Fetch the payment from the provider API, record it, and fulfil the order; then fix why the callback was missed.

See it happen in the simulation →

reconciliationsettlementledgerpaymentsfinance

More in payments