When the outcome is not known.
WHAT CAUSES THEM
Timeouts Connection failure after sending Provider unavailability mid-transaction
WHY THEY ARE THE HARDEST PROBLEM
No response is indistinguishable from success, failure and slowness.
WHAT TO NEVER DO
Assume failure and retry.
WHAT TO DO INSTEAD
Record the attempt as pending, and query the provider for its status.
WHAT THE QUERY MUST USE
Your own reference, which the provider recorded.
WHY THAT IS ESSENTIAL
Without it, you cannot ask about a transaction you are not sure exists.
WHAT TO BUILD
A background process resolving pending transactions.
WHAT IT SHOULD DO
Query repeatedly, with increasing intervals Escalate after a defined period Never exceed a maximum age without human attention
WHAT TO SHOW THE CUSTOMER
That the payment is being confirmed, not that it failed.
WHY
Telling a customer a payment failed when it succeeded produces a duplicate.
WHAT TO MONITOR
Count and age of pending transactions.
WHAT A RISING COUNT INDICATES
A provider or connectivity problem in progress.
WHAT TO RECONCILE
Pending transactions against settlement, daily.