Status Overview
A payout moves through several phases from creation to final settlement. Each phase has three statuses — Pending, Processing, and Completed — giving you granular visibility at every step of the pipeline.Status Flow
Status Descriptions
| Status | Phase | Description | Suggested User Message |
|---|---|---|---|
CREATED | Initial | Payout received and persisted, awaiting queue entry | ”Payout submitted” |
CASH_IN_PENDING | Cash In | Incoming fund collection queued | ”Processing payment” |
CASH_IN_PROCESSING | Cash In | Collecting funds from pre-fund balance | ”Collecting funds” |
CASH_IN_COMPLETED | Cash In | Funds collected successfully | ”Funds collected” |
KYT_OUT_PENDING | KYT Out | Outgoing transaction queued for compliance check | ”Outbound check pending” |
KYT_OUT_PROCESSING | KYT Out | Compliance review in progress (outgoing) | “Outbound check in progress” |
KYT_OUT_COMPLETED | KYT Out | Outgoing compliance check passed | ”Ready for transfer” |
CASH_OUT_PENDING | Cash Out | Disbursement to beneficiary queued | ”Transfer queued” |
CASH_OUT_PROCESSING | Cash Out | Funds submitted to payment provider | ”Transfer in progress” |
CASH_OUT_COMPLETED | Cash Out | Payment provider confirmed delivery | ”Transfer delivered” |
COMPLETED | Terminal | Payout fully settled | ”Payment delivered!” |
REVIEW_NEEDED | Review | Transaction flagged for manual compliance review | ”Under review — we’ll notify you” |
FAILED | Error State | Operation failed. Terminal if during Cash In (no funds collected). Transitions to refund flow if during KYT Out or Cash Out. | ”Transfer failed — check beneficiary details” |
REJECTED | Error State | Payout blocked by compliance review. Always transitions to refund flow since it only occurs after Cash In. | ”Transfer rejected — compliance issue” |
ERROR | Error State | Internal system error. Terminal if during Cash In (no funds collected). Transitions to refund flow if during KYT Out or Cash Out. | ”Internal error — contact support” |
REFUND_PENDING | Refund | Refund to pre-fund balance queued | ”Refund initiated” |
REFUND_PROCESSING | Refund | Refund in progress | ”Refund in progress” |
REFUNDED | Terminal | Funds returned to pre-fund balance | ”Funds refunded to balance” |
Getting Payout Status
Polling for Status
Use polling as a fallback when webhooks are unavailable:Webhooks for Status Updates
Subscribe to thePAYOUT event type to receive real-time notifications on every status change:
Best Practices
Webhooks as Primary Channel
Webhooks as Primary Channel
Always configure a webhook endpoint for
PAYOUT events. This gives you instant status updates without any polling overhead and reduces unnecessary API calls.Poll as Backup
Poll as Backup
If your webhook delivery fails, poll
GET /api/v2/payouts/{id} every 15–30 seconds. Set a reasonable timeout (e.g., 5 minutes) and alert your team if a payout remains in any processing state longer than expected.Distinguish Failure States
Distinguish Failure States
Each non-success status has a distinct cause and remediation. Critically, the phase in which
FAILED or ERROR occurs determines whether a refund is issued:FAILED/ERRORduring Cash In — Terminal. No funds were collected, so no refund is issued. ForERROR, contact support if it recurs.FAILED/ERRORafter Cash In (KYT Out, Cash Out) — Transient. Because funds were already collected, the payout automatically transitions toREFUND_PENDING→REFUND_PROCESSING→REFUNDED.REJECTED— Blocked by compliance review. Do not retry automatically; escalate internally. Always leads to the refund flow since funds were already collected.REVIEW_NEEDED— A KYT check flagged the transaction for manual review. The payout resumes automatically or transitions toREJECTEDafter review; no action required on your side.
Reconcile Daily
Reconcile Daily
Pull all payouts for the previous day via
GET /api/v2/payouts and reconcile against your internal ledger. Compare expected vs. actual terminal statuses to catch any discrepancies early.Next Steps
Webhooks Setup
Configure and secure webhook notifications
Error Handling
Handle API errors and retries gracefully