curl --request GET \
--url https://api.jenzy.com/v1/payouts/{id} \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.jenzy.com/v1/payouts/{id}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.jenzy.com/v1/payouts/{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://api.jenzy.com/v1/payouts/{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: Bearer <token>"
],
]);
$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://api.jenzy.com/v1/payouts/{id}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.jenzy.com/v1/payouts/{id}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.jenzy.com/v1/payouts/{id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"amount_mwk": "250000.00",
"fee": "2710.00",
"rail": "bank",
"status": "succeeded",
"destination": {
"institution_id": 123,
"account_number": "<string>",
"beneficiary_name": "<string>"
},
"failure": {
"code": "recipient_account_invalid",
"message": "<string>"
},
"created_at": "2023-11-07T05:31:56Z",
"terminal_at": "2023-11-07T05:31:56Z"
}{
"error": {
"code": "validation_error",
"message": "<string>"
}
}{
"error": {
"code": "validation_error",
"message": "<string>"
}
}Get a payout
One payout by id — the polling read for a payout you created.
curl --request GET \
--url https://api.jenzy.com/v1/payouts/{id} \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.jenzy.com/v1/payouts/{id}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.jenzy.com/v1/payouts/{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://api.jenzy.com/v1/payouts/{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: Bearer <token>"
],
]);
$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://api.jenzy.com/v1/payouts/{id}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.jenzy.com/v1/payouts/{id}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.jenzy.com/v1/payouts/{id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"amount_mwk": "250000.00",
"fee": "2710.00",
"rail": "bank",
"status": "succeeded",
"destination": {
"institution_id": 123,
"account_number": "<string>",
"beneficiary_name": "<string>"
},
"failure": {
"code": "recipient_account_invalid",
"message": "<string>"
},
"created_at": "2023-11-07T05:31:56Z",
"terminal_at": "2023-11-07T05:31:56Z"
}{
"error": {
"code": "validation_error",
"message": "<string>"
}
}{
"error": {
"code": "validation_error",
"message": "<string>"
}
}Authorizations
Your Jenzy API key: Authorization: Bearer jz_live_…
Path Parameters
The payout id (UUID).
Response
The payout.
Payout id — your handle for polling and support.
The amount instructed — exact decimal string at 2 decimal places.
"250000.00"
What the provider charged for this payout, passed through to you at cost — an exact decimal string at two decimal places (fees are not whole kwacha), so parse it with a decimal library and never a float.
null means the fee is not known — usually because the payout is still in flight, but a terminal payout can also read null when the provider reported no fee for it. It never means free, so do not treat null as zero, and do not treat it as proof the payout is still moving — status is what tells you that.
A failed payout reads "0.00" — fees apply to successful transfers only — and a reversed payout keeps the fee it was charged, because it did succeed before it was clawed back.
Use POST /fees/quote to know the cost BEFORE you send: this field cannot tell you in advance, and your balance must cover the amount plus the fee.
"2710.00"
bank, momo Lifecycle: received → validated → held → submitted → pending → succeeded | failed. succeeded, failed and reversed are terminal. reversed means the payout succeeded and the provider then clawed the transfer back — it is not a failure and carries no failure object.
received, validated, held, submitted, pending, succeeded, failed, reversed "succeeded"
The destination snapshot as validated at accept — shape follows rail.
- Option 1
- Option 2
Show child attributes
Show child attributes
Set exactly when status is failed; null otherwise.
Show child attributes
Show child attributes
When the payout first reached a terminal state. A payout that is later reversed keeps the timestamp of its original settlement — this never moves once set.