Skip to main content
POST
/
payout-link
/
generate-payout-url
cURL
curl --request POST \
  --url https://api.clickpesa.com/third-parties/payout-link/generate-payout-url \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '
{
  "amount": "<string>",
  "orderReference": "<string>",
  "checksum": "<string>"
}
'
import requests

url = "https://api.clickpesa.com/third-parties/payout-link/generate-payout-url"

payload = {
"amount": "<string>",
"orderReference": "<string>",
"checksum": "<string>"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}

response = requests.post(url, json=payload, headers=headers)

print(response.text)
const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({amount: '<string>', orderReference: '<string>', checksum: '<string>'})
};

fetch('https://api.clickpesa.com/third-parties/payout-link/generate-payout-url', 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.clickpesa.com/third-parties/payout-link/generate-payout-url",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'amount' => '<string>',
'orderReference' => '<string>',
'checksum' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}
package main

import (
"fmt"
"strings"
"net/http"
"io"
)

func main() {

url := "https://api.clickpesa.com/third-parties/payout-link/generate-payout-url"

payload := strings.NewReader("{\n \"amount\": \"<string>\",\n \"orderReference\": \"<string>\",\n \"checksum\": \"<string>\"\n}")

req, _ := http.NewRequest("POST", url, payload)

req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")

res, _ := http.DefaultClient.Do(req)

defer res.Body.Close()
body, _ := io.ReadAll(res.Body)

fmt.Println(string(body))

}
HttpResponse<String> response = Unirest.post("https://api.clickpesa.com/third-parties/payout-link/generate-payout-url")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"amount\": \"<string>\",\n \"orderReference\": \"<string>\",\n \"checksum\": \"<string>\"\n}")
.asString();
require 'uri'
require 'net/http'

url = URI("https://api.clickpesa.com/third-parties/payout-link/generate-payout-url")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"amount\": \"<string>\",\n \"orderReference\": \"<string>\",\n \"checksum\": \"<string>\"\n}"

response = http.request(request)
puts response.read_body
{
  "payoutLink": "<string>",
  "clientId": "<string>"
}
{
"message": "Invalid Order Reference, should only contain alphanumeric characters and cannot be blank"
}
{
"message": "Unauthorized"
}
{
"message": "Order reference {Your reference} already used: Create a different reference"
}

Authorizations

Authorization
string
header
required

Authorization header containing the JWT access token returned from the generate token endpoint. The token already includes the Bearer prefix. Example: Authorization: Bearer eyJhbGciOi...

Body

application/json
amount
string

Your payout amount

orderReference
string

Your unique Order reference

checksum
string

If enabled, this is the generated checksum of the payload. Refer to the documentation for more details.

Response

Generate Payout URL Response

Hosted Payout Link

clientId
string

Application Client ID associated with the payoutLink