Held for review
The exception-handling playbook — what happens, what to show your users, and how reviews resolve.
A held payment is not a failure. It is the system working as designed: something requires human judgment before funds move, and funds have not moved.
This page is the playbook for building your held-payment experience.
What happens on our side
What to show your users
Do not show a raw error. A held payment deserves calm, specific copy:
| Language | Suggested copy |
|---|---|
| en | "This payment is under a standard compliance review. Your funds have not moved. Most reviews complete within a few hours." |
| es | "Este pago está en una revisión de cumplimiento estándar. Sus fondos no se han movido. La mayoría de las revisiones se completan en unas horas." |
| pt | "Este pagamento está em uma revisão padrão de conformidade. Seus fundos não foram movimentados. A maioria das revisões é concluída em poucas horas." |
Principles:
- Say that funds have not moved — it is the single most reassuring true fact
- Give the honest time expectation (hours, not "soon")
- Never use the words "blocked", "frozen", or "flagged" in user-facing copy
- Provide a reference (oz_pay_...) the user can cite to your support team
Building it
Subscribe to payment.held, payment.cleared, and payment.declined. In test mode, trigger a hold deterministically with a counterparty name containing HOLD and exercise your full flow before going live.