Playbook
Delayed settlement recovery workflow
When async settlement stretches hours or days—customer communication, exception routing, and finance hold patterns.
01
Objective
Manage customer and finance expectations when confirmation or treasury posting legitimately lags detection—without informal paid shortcuts.
02
Prerequisites
- Async settlement lifecycle documented per rail.
- Customer communication templates aligned to lifecycle states.
- Exception taxonomy includes timing-skew class.
03
Operational signals
- Paid state aging beyond configured SLA internally (your policy—not a public SLA claim).
- Support tickets referencing block explorers instead of payment_id.
- Webhook delivery gaps during rail congestion.
04
Decision points
- Continue fulfillment on Paid versus wait for Confirmed.
- When to open timing-skew exception versus wait.
- Customer refund or re-attempt policy for expired windows.
05
Escalation paths
- Support → operations for stuck lifecycle states.
- Operations → provider support for delayed events.
- Finance → treasury for extended holds.
06
Failure modes
- Manual Confirmed overrides without provider event.
- Promising instant finality in customer chat.
07
Recovery patterns
- Verify provider event log for payment_id.
- Apply lifecycle decision tree paths.
- Close or escalate timing-skew exceptions with evidence.
- Retries are normal. Webhook delivery is at-least-once. Design consumers to tolerate duplicates and out-of-order arrivals where possible.
- Asynchronous by design. Payers, chains, and your servers operate on different clocks. UI and finance should not assume synchronous finality.
- Eventual consistency. API reads, webhooks, and portal views may briefly diverge during transitions. Reconciliation jobs exist to converge truth.
Walkthroughs: /operations