Field notes

Where payment retries hide reconciliation debt

Teams often treat an authorisation retry as a network inconvenience. In the ledger it is a second attempt to move money — or at least to reserve it — and without an idempotency key that spans the payment rail and your posting service, operations inherits nightly mysteries.

A pattern we see

The acquiring interface returns a timeout. The client retries. The scheme accepted the first attempt. Your ledger posted once from the webhook and once from the client confirmation path. Finance discovers the imbalance when settlement files disagree with customer balances.

What to design early

Decide which component owns idempotency. Persist the rail’s network reference before you post. Make duplicate webhooks a no-op that still leaves an audit breadcrumb. If you only “fix it later,” the later is usually the week before an assurance review.

Compliance angle

Evidence requests often ask how you prevent double settlement. A short architecture note that names the idempotency boundary saves hours of reconstructing tribal knowledge.