How should our application handle pending, expired, or unconfirmed operations?
3 min readPresent the state of the exact operation separately from the freshness of the evidence. A pending operation, an ended authorization attempt, and an unavailable status read are not interchangeable outcomes.
Separate the operation from the status check
The operation can be pending while the latest status read succeeds. Conversely, the operation may have completed while the application cannot currently retrieve its result. These are different situations. Store the operation reference and show the time of the last successful check. A network error should be described as an inability to confirm the current state, not automatically as failure of the underlying financial or wallet action.
Use words that describe the actual stage
Pending means a process has not yet reached the relevant established outcome. Expired means the particular allowed window ended. Unconfirmed means the available evidence cannot establish the claimed condition. The exact definitions come from the operation contract and should be reflected in the interface. Avoid a single red “failed” badge for all three, or a green “complete” badge for any accepted request. Users need a truthful explanation before they can choose a next step.
Design a supported next action
A refresh, an evidence link, or a support route may be appropriate, depending on the state. A new write is not automatically the correct response to uncertainty. Reconcile the original request and follow documented retry behavior. Test slow responses, stale records, ended attempts, and unavailable dependencies in the pilot. Keep any historical attempt visible as history without making it appear current. This reduces the chance that a confusing screen causes a user to create duplicate or inappropriate actions.
Illustrative example
After a lost response, show that confirmation is outstanding and reconcile the authoritative record before deciding whether another request is appropriate.
Conditions & limitations
Do not infer failure from a timeout or signing authority from a recorded stage. Retry and expiry semantics depend on the operation contract.
What to do next
Test delayed responses, missing evidence, and expired attempts, and define a safe user-facing message for each.