cURL
curl --request POST \
--url https://api.clickpesa.com/third-parties/payments/preview-ussd-push-request \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"amount": "<string>",
"currency": "TZS",
"orderReference": "<string>",
"phoneNumber": "<string>",
"fetchSenderDetails": false,
"checksum": "<string>"
}
'import requests
url = "https://api.clickpesa.com/third-parties/payments/preview-ussd-push-request"
payload = {
"amount": "<string>",
"currency": "TZS",
"orderReference": "<string>",
"phoneNumber": "<string>",
"fetchSenderDetails": False,
"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>',
currency: 'TZS',
orderReference: '<string>',
phoneNumber: '<string>',
fetchSenderDetails: false,
checksum: '<string>'
})
};
fetch('https://api.clickpesa.com/third-parties/payments/preview-ussd-push-request', 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/payments/preview-ussd-push-request",
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>',
'currency' => 'TZS',
'orderReference' => '<string>',
'phoneNumber' => '<string>',
'fetchSenderDetails' => false,
'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/payments/preview-ussd-push-request"
payload := strings.NewReader("{\n \"amount\": \"<string>\",\n \"currency\": \"TZS\",\n \"orderReference\": \"<string>\",\n \"phoneNumber\": \"<string>\",\n \"fetchSenderDetails\": false,\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/payments/preview-ussd-push-request")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"amount\": \"<string>\",\n \"currency\": \"TZS\",\n \"orderReference\": \"<string>\",\n \"phoneNumber\": \"<string>\",\n \"fetchSenderDetails\": false,\n \"checksum\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.clickpesa.com/third-parties/payments/preview-ussd-push-request")
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 \"currency\": \"TZS\",\n \"orderReference\": \"<string>\",\n \"phoneNumber\": \"<string>\",\n \"fetchSenderDetails\": false,\n \"checksum\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"activeMethods": [
{
"name": "<string>",
"fee": 123,
"message": 123
}
],
"sender": {
"accountName": "Mathayo John",
"accountNumber": "255712345678",
"accountProvider": "TIGO-PESA"
}
}{
"message": "Invalid Order Reference, should only contain alphanumeric characters and cannot be blank"
}{
"message": "Unauthorized"
}{
"message": "Account has no payment collection methods"
}{
"message": "Order reference {Your reference} already used: Create a different reference"
}USSD-PUSH
Preview USSD-PUSH request
Validates push details like phone number, amount, order-reference and verifies payment channels availability
POST
/
payments
/
preview-ussd-push-request
cURL
curl --request POST \
--url https://api.clickpesa.com/third-parties/payments/preview-ussd-push-request \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"amount": "<string>",
"currency": "TZS",
"orderReference": "<string>",
"phoneNumber": "<string>",
"fetchSenderDetails": false,
"checksum": "<string>"
}
'import requests
url = "https://api.clickpesa.com/third-parties/payments/preview-ussd-push-request"
payload = {
"amount": "<string>",
"currency": "TZS",
"orderReference": "<string>",
"phoneNumber": "<string>",
"fetchSenderDetails": False,
"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>',
currency: 'TZS',
orderReference: '<string>',
phoneNumber: '<string>',
fetchSenderDetails: false,
checksum: '<string>'
})
};
fetch('https://api.clickpesa.com/third-parties/payments/preview-ussd-push-request', 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/payments/preview-ussd-push-request",
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>',
'currency' => 'TZS',
'orderReference' => '<string>',
'phoneNumber' => '<string>',
'fetchSenderDetails' => false,
'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/payments/preview-ussd-push-request"
payload := strings.NewReader("{\n \"amount\": \"<string>\",\n \"currency\": \"TZS\",\n \"orderReference\": \"<string>\",\n \"phoneNumber\": \"<string>\",\n \"fetchSenderDetails\": false,\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/payments/preview-ussd-push-request")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"amount\": \"<string>\",\n \"currency\": \"TZS\",\n \"orderReference\": \"<string>\",\n \"phoneNumber\": \"<string>\",\n \"fetchSenderDetails\": false,\n \"checksum\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.clickpesa.com/third-parties/payments/preview-ussd-push-request")
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 \"currency\": \"TZS\",\n \"orderReference\": \"<string>\",\n \"phoneNumber\": \"<string>\",\n \"fetchSenderDetails\": false,\n \"checksum\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"activeMethods": [
{
"name": "<string>",
"fee": 123,
"message": 123
}
],
"sender": {
"accountName": "Mathayo John",
"accountNumber": "255712345678",
"accountProvider": "TIGO-PESA"
}
}{
"message": "Invalid Order Reference, should only contain alphanumeric characters and cannot be blank"
}{
"message": "Unauthorized"
}{
"message": "Account has no payment collection methods"
}{
"message": "Order reference {Your reference} already used: Create a different reference"
}Authorizations
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
Your payment amount
Available options:
TZS Your unique Order reference
Mobile phone number to receive USSD-PUSH and make payment, starting with country code and without the plus sign e.g., 255712345678
If true, fetch sender details. Defaults to false.
If enabled, this is the generated checksum of the payload. Refer to the documentation for more details.
⌘I

