Verify Payout
Check the current status and details of a payout after it has been initiated.
The Verify Payout endpoint lets you check the current status and details of a payout (transfer) after it has been initiated.
Because transfers are asynchronous, a payout may not complete immediately. Verification helps you:
- Confirm whether funds were successfully delivered
- Check if a transfer is still processing
- Identify failures, reversals, or blocks
- Support customer and vendor inquiries
Always treat the transfer initialization response as temporary. Use verification or webhooks to confirm the final state.
GET /v2/payouts/{reference}/verify
Host: api.chapa.co
| Name | Required | Description |
|---|
Authorization | Yes | Bearer <PRIVATE_API_KEY> |
Content-Type | Yes | application/json |
| Name | Type | Required | Description |
|---|
reference | string | Yes | Payout reference (merchant reference or Chapa reference) |
GET https://api.chapa.co/v2/payouts/PAYOUT_20251107_001/verify
Authorization: Bearer CHAPA_TEST_xxxxxxxxxxxxx
Content-Type: application/json
{
"status": "success",
"message": "Payout verification successful",
"data": {
"merchant_reference": "PAYOUT_20251107_001",
"amount": 150000,
"currency": "ETB",
"status": "completed",
"account_number": "1001234567890",
"account_name": "Abebe Kebede",
"bank_slug": "ABY",
"service_fee": 1500,
"created_at": "2025-11-07T12:10:00Z",
"updated_at": "2025-11-07T12:15:00Z",
"processed_at": "2025-11-07T12:15:00Z",
"reason": "Vendor payout for service"
}
}
| Field | Type | Description |
|---|
merchant_reference | string | Merchant-generated reference |
amount | number | Transfer amount |
currency | string | ISO currency code |
status | string | Transfer status |
account_number | string | Destination account |
account_name | string | Recipient name |
bank_slug | string | Bank or wallet identifier |
service_fee | number | Fee charged |
created_at | string | Transfer creation timestamp |
updated_at | string | Last status update |
processed_at | string | null | Completion timestamp |
reason | string | Optional description |
| Status | Meaning |
|---|
pending | Transfer created |
processing | Transfer in progress |
completed | Funds delivered |
failed | Transfer failed |
blocked | Compliance or risk issue |
reversed | Funds reversed |
auth_needed | Additional authentication required |
otp_needed | OTP verification required |
- Initiate transfer (
POST /v2/payouts)
- Receive initial
pending status
- Wait for webhook or poll verification
- Act based on final status:
completed → mark payout successful
failed / reversed → notify user or retry
auth_needed / otp_needed → prompt for required action
- Prefer webhooks for final status updates
- Use verification as a fallback or manual check
- Store all status changes for audit and reconciliation
- Never assume completion immediately after creation
| HTTP | Error Code | Description |
|---|
| 400 | MISSING_REQUIRED_FIELD | Reference is missing |
| 404 | NOT_FOUND | Payout not found |
| 500 | PROCESSING_FAILED | System issue fetching payout |