The Lifecycle of a Payout
A payout is the process of sending funds from a NextAPI account to an external bank account or e-wallet. This page explains every state a payout passes through.
Payout States
INITIATED → PENDING → PROCESSING → COMPLETED
↓ ↓ ↓
FAILED CANCELLED REVERSED
State Descriptions
Initiated
The payout request has been created and validated:
- API request authenticated and parameters validated
- Amount, recipient, and account confirmed
- Idempotency key recorded
- Reference ID generated
{
"id": "pr_abc123",
"status": "initiated",
"amount": 10000,
"currency": "PHP",
"created_at": "2024-01-15T10:00:00Z"
}
Pending
The payout is queued for processing:
- Funds reserved from the source account (
availabledecreases,reservedincreases) - Recipient validation initiated
- Queued for the appropriate payment rail
Processing
Active payment processing via the selected rail:
- Sent to payment provider (one of NextAPI's 3 partner financial institutions)
- Bank or e-wallet transfer initiated
- For amounts under PHP 50,000: routed via InstaPay (real-time)
- For larger amounts: routed via PESONet (batch, same-day)
Completed
Payout successfully delivered:
- Funds received by the recipient
- Account
reservedbalance decreases permanently - Confirmation from the payment provider received
- Receipt available via
GET /v2/payouts/{id}/receipt
Exception States
Failed
The payout could not be completed. Common reasons:
- Insufficient available balance
- Invalid recipient bank details
- Payment rail network issues
- Recipient account closed or frozen
On failure, reserved funds return to available balance.
Cancelled
The payout was cancelled before processing began:
- Cancelled via API or by the system
- Funds return from
reservedtoavailable
Reversed
A completed payout was reversed after delivery:
- Recipient account issues
- Compliance requirements
- Bank-initiated return
Timeline and SLAs
| Transition | Typical Duration | Maximum |
|---|---|---|
| Initiated → Pending | < 1 second | 5 seconds |
| Pending → Processing | 1-5 minutes | 30 minutes |
| Processing → Completed (InstaPay) | 5-30 seconds | 5 minutes |
| Processing → Completed (PESONet) | 1-4 hours | 24 hours |
Webhook Events
Each state transition emits a webhook event. Configure webhooks to receive real-time updates:
payout_request.initiatedpayout_request.pendingpayout_request.processingpayout_request.completedpayout_request.failedpayout_request.cancelledpayout_request.reversed
See Understanding Webhooks for payload structure and delivery details.
Related
- Understanding Webhooks — real-time notifications for state changes
- Send a Single Payout — step-by-step guide
- API Reference: Payout Requests — endpoint details