Skip to main content

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

During the Cash In phase, FAILED and ERROR are terminal statuses — no funds were collected, so no refund is issued. For all subsequent phases (KYT Out, Cash Out), FAILED and ERROR are transient: the payout transitions to the refund flow (REFUND_PENDINGREFUND_PROCESSINGREFUNDED). REJECTED also triggers the refund flow since it only occurs after Cash In.

Status Descriptions

Getting Payout Status

Polling for Status

Use polling as a fallback when webhooks are unavailable:
Use webhooks as the primary notification method. Polling every 15–30 seconds is appropriate as a backup.

Webhooks for Status Updates

Subscribe to the PAYOUT event type to receive real-time notifications on every status change:
Handle incoming payout webhook events:

Best Practices

Always configure a webhook endpoint for PAYOUT events. This gives you instant status updates without any polling overhead and reduces unnecessary API calls.
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.
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 / ERROR during Cash In — Terminal. No funds were collected, so no refund is issued. For ERROR, contact support if it recurs.
  • FAILED / ERROR after Cash In (KYT Out, Cash Out) — Transient. Because funds were already collected, the payout automatically transitions to REFUND_PENDINGREFUND_PROCESSINGREFUNDED.
  • 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 to REJECTED after review; no action required on your side.
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