Status Overview
A payout moves through several statuses from creation to final settlement. Tracking these statuses lets you confirm delivery, detect failures early, and provide accurate feedback to your users.Status Flow
Status Descriptions
| Status | Description | Suggested User Message |
|---|---|---|
CREATED | The payout has been received and persisted. It is awaiting entry into the processing queue. | ”Payout submitted” |
PENDING | The payout is queued and waiting to be dispatched to the payment provider. | ”Processing soon” |
PROCESSING | The disbursement has been submitted to the payment provider and is awaiting confirmation. | ”Transfer in progress” |
COMPLETED | The payment provider has confirmed successful delivery of funds to the beneficiary. | ”Payment delivered!” |
ERROR | An internal system error occurred. No funds were disbursed. Contact support if this persists. | ”Internal error — contact support” |
FAILED | The disbursement was declined due to invalid or incorrect beneficiary account details. | ”Transfer failed — check beneficiary details” |
REJECTED | The payout was blocked by a compliance review and will not be processed. | ”Transfer rejected — compliance issue” |
REFUNDED | The disbursed funds have been returned to the 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 stays in PROCESSING longer than expected.Distinguish ERROR, FAILED, and REJECTED
Distinguish ERROR, FAILED, and REJECTED
Each non-success terminal status has a distinct cause and the appropriate remediation differs:
ERROR— An internal system issue on KillB’s side. No action is needed on the beneficiary details; contact support if the issue recurs.FAILED— The beneficiary’s bank declined the transfer due to invalid or incorrect account details. Review and correct the beneficiary information before retrying.REJECTED— The payout was blocked by a compliance review. Do not retry automatically; escalate internally for review.
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