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.