Check Payout Status
curl --request GET \
--url https://pesahub.co/api/payouts/check/{transaction_id} \
--header 'Authorization: <authorization>'import requests
url = "https://pesahub.co/api/payouts/check/{transaction_id}"
headers = {"Authorization": "<authorization>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: '<authorization>'}};
fetch('https://pesahub.co/api/payouts/check/{transaction_id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://pesahub.co/api/payouts/check/{transaction_id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: <authorization>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://pesahub.co/api/payouts/check/{transaction_id}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "<authorization>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://pesahub.co/api/payouts/check/{transaction_id}")
.header("Authorization", "<authorization>")
.asString();require 'uri'
require 'net/http'
url = URI("https://pesahub.co/api/payouts/check/{transaction_id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = '<authorization>'
response = http.request(request)
puts response.read_body{
"success": true,
"message": "<string>",
"status": "<string>",
"payout.event": "<string>",
"payout.transaction_id": "<string>",
"payout.transaction_method": "<string>",
"payout.amount.value": "<string>",
"payout.amount.fee": "<string>",
"payout.mobile.phone_number": "<string>",
"payout.mobile.network": "<string>",
"payout.bank.account_number": "<string>",
"payout.bank.name": "<string>",
"payout.bank.bic": "<string>",
"payout.paid_at": "<string>",
"payout.failure_reason": "<string>"
}Payout
Check Payout Status
Retrieves the current status and details of a payout using its transaction ID.
GET
/
api
/
payouts
/
check
/
{transaction_id}
Check Payout Status
curl --request GET \
--url https://pesahub.co/api/payouts/check/{transaction_id} \
--header 'Authorization: <authorization>'import requests
url = "https://pesahub.co/api/payouts/check/{transaction_id}"
headers = {"Authorization": "<authorization>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: '<authorization>'}};
fetch('https://pesahub.co/api/payouts/check/{transaction_id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://pesahub.co/api/payouts/check/{transaction_id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: <authorization>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://pesahub.co/api/payouts/check/{transaction_id}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "<authorization>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://pesahub.co/api/payouts/check/{transaction_id}")
.header("Authorization", "<authorization>")
.asString();require 'uri'
require 'net/http'
url = URI("https://pesahub.co/api/payouts/check/{transaction_id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = '<authorization>'
response = http.request(request)
puts response.read_body{
"success": true,
"message": "<string>",
"status": "<string>",
"payout.event": "<string>",
"payout.transaction_id": "<string>",
"payout.transaction_method": "<string>",
"payout.amount.value": "<string>",
"payout.amount.fee": "<string>",
"payout.mobile.phone_number": "<string>",
"payout.mobile.network": "<string>",
"payout.bank.account_number": "<string>",
"payout.bank.name": "<string>",
"payout.bank.bic": "<string>",
"payout.paid_at": "<string>",
"payout.failure_reason": "<string>"
}Request Headers
string
required
Bearer token for authentication. Format:
Bearer <token>string
default:"application/json"
Expected response format. Use
application/json.Path Parameters
string
required
Unique identifier of the payout transaction.
Example Request
cURL
curl -X GET https://pesahub.co/api/v1/payouts/f19605f6-f67e-4230-8152-30b35740a024 \
-H "Authorization: Bearer {{api_key}}" \
-H "Accept: application/json" \
-H "Content-Type: application/json"
Response
boolean
Indicates whether the request was successful.
string
Human-readable response message.
string
Current payout status (
pending, paid, failed, or cancelled).string
Latest payout event (for example,
payout.completed or payout.failed).string
Unique identifier of the payout transaction.
string
Payout method (
mobile or ach).string
Payout amount.
string
Transaction fee charged for the payout.
string
Recipient phone number (for mobile payouts).
string
Mobile network provider (for example,
airtel, vodacom, tigo).string
Recipient bank account number (for ACH payouts).
string
Bank name (for ACH payouts).
string
Bank Identifier Code (for ACH payouts).
string
ISO 8601 timestamp when the payout was completed.
string
Reason for payout failure (only present for failed payouts).
Example Responses
Mobile Payout (Paid)
{
"success": true,
"message": "Payout status retrieved successfully",
"status": "paid",
"payout": {
"event": "payout.completed",
"transaction_id": "f19605f6-f67e-4230-8152-30b35740a024",
"transaction_method": "mobile",
"amount": {
"value": "10,000.00",
"fee": "100.00"
},
"mobile": {
"phone_number": "255682908805",
"network": "airtel"
},
"paid_at": "2026-07-12T15:07:28.000000Z"
}
}
Bank Payout (Paid)
{
"success": true,
"message": "Payout status retrieved successfully",
"status": "paid",
"payout": {
"event": "payout.completed",
"transaction_id": "f19605f6-f67e-4230-8152-30b35740a024",
"transaction_method": "ach",
"amount": {
"value": "50,000.00",
"fee": "100.00"
},
"bank": {
"account_number": "0123456789",
"name": "CRDB Bank",
"bic": "CORUTZTZ"
},
"paid_at": "2026-07-12T15:07:28.000000Z"
}
}
Payout Failed
{
"success": true,
"message": "Payout status retrieved successfully",
"status": "failed",
"payout": {
"event": "payout.failed",
"transaction_id": "f19605f6-f67e-4230-8152-30b35740a024",
"amount": {
"value": "5,000.00"
},
"failure_reason": "Insufficient balance at gateway"
}
}
Poll this endpoint using the transaction ID to monitor payout progress until the transaction reaches a final state (
paid, failed, or cancelled).