curl --request POST \
--url https://sandbox.cashfree.com/bbps/cou/v1/billers/response/ticket-status \
--header 'Content-Type: application/json' \
--header 'x-api-version: <x-api-version>' \
--header 'x-client-id: <api-key>' \
--header 'x-client-secret: <api-key>' \
--data '
{
"ref_id": "TKREF4QOS7X1UGPY7JGUV444P10102202"
}
'import requests
url = "https://sandbox.cashfree.com/bbps/cou/v1/billers/response/ticket-status"
payload = { "ref_id": "TKREF4QOS7X1UGPY7JGUV444P10102202" }
headers = {
"x-api-version": "<x-api-version>",
"x-client-id": "<api-key>",
"x-client-secret": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
'x-api-version': '<x-api-version>',
'x-client-id': '<api-key>',
'x-client-secret': '<api-key>',
'Content-Type': 'application/json'
},
body: JSON.stringify({ref_id: 'TKREF4QOS7X1UGPY7JGUV444P10102202'})
};
fetch('https://sandbox.cashfree.com/bbps/cou/v1/billers/response/ticket-status', 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://sandbox.cashfree.com/bbps/cou/v1/billers/response/ticket-status",
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([
'ref_id' => 'TKREF4QOS7X1UGPY7JGUV444P10102202'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"x-api-version: <x-api-version>",
"x-client-id: <api-key>",
"x-client-secret: <api-key>"
],
]);
$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://sandbox.cashfree.com/bbps/cou/v1/billers/response/ticket-status"
payload := strings.NewReader("{\n \"ref_id\": \"TKREF4QOS7X1UGPY7JGUV444P10102202\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-api-version", "<x-api-version>")
req.Header.Add("x-client-id", "<api-key>")
req.Header.Add("x-client-secret", "<api-key>")
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://sandbox.cashfree.com/bbps/cou/v1/billers/response/ticket-status")
.header("x-api-version", "<x-api-version>")
.header("x-client-id", "<api-key>")
.header("x-client-secret", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"ref_id\": \"TKREF4QOS7X1UGPY7JGUV444P10102202\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://sandbox.cashfree.com/bbps/cou/v1/billers/response/ticket-status")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-api-version"] = '<x-api-version>'
request["x-client-id"] = '<api-key>'
request["x-client-secret"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"ref_id\": \"TKREF4QOS7X1UGPY7JGUV444P10102202\"\n}"
response = http.request(request)
puts response.read_bodyPoll Ticket Status Response
Use this API to poll the status of a previously raised ticket.
Call this using the ref_id returned from the Raise Ticket Request API.
Polling strategy
Polling strategy
Poll at increasing intervals until message is no longer "Ticket request is still being processed":
| Attempt | Wait before this poll |
|---|---|
| 1 | 5 seconds |
| 2 | 15 seconds |
| 3 | 30 seconds |
| 4 | 1 minute |
| 5+ | 3 minutes |
Stop polling when message is "Ticket details fetched successfully" or "Ticket request failed". If the ticket remains in a processing state beyond your retry limit, contact Cashfree support with the ref_id.
Response outcomes by `message`
Response outcomes by `message`
message | Meaning |
|---|---|
"Ticket details fetched successfully" | Completed. Check data for ticket details. |
"Ticket request failed" | Terminal failure. Stop polling. |
"Ticket request is still being processed" | Still processing. Continue polling. |
curl --request POST \
--url https://sandbox.cashfree.com/bbps/cou/v1/billers/response/ticket-status \
--header 'Content-Type: application/json' \
--header 'x-api-version: <x-api-version>' \
--header 'x-client-id: <api-key>' \
--header 'x-client-secret: <api-key>' \
--data '
{
"ref_id": "TKREF4QOS7X1UGPY7JGUV444P10102202"
}
'import requests
url = "https://sandbox.cashfree.com/bbps/cou/v1/billers/response/ticket-status"
payload = { "ref_id": "TKREF4QOS7X1UGPY7JGUV444P10102202" }
headers = {
"x-api-version": "<x-api-version>",
"x-client-id": "<api-key>",
"x-client-secret": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
'x-api-version': '<x-api-version>',
'x-client-id': '<api-key>',
'x-client-secret': '<api-key>',
'Content-Type': 'application/json'
},
body: JSON.stringify({ref_id: 'TKREF4QOS7X1UGPY7JGUV444P10102202'})
};
fetch('https://sandbox.cashfree.com/bbps/cou/v1/billers/response/ticket-status', 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://sandbox.cashfree.com/bbps/cou/v1/billers/response/ticket-status",
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([
'ref_id' => 'TKREF4QOS7X1UGPY7JGUV444P10102202'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"x-api-version: <x-api-version>",
"x-client-id: <api-key>",
"x-client-secret: <api-key>"
],
]);
$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://sandbox.cashfree.com/bbps/cou/v1/billers/response/ticket-status"
payload := strings.NewReader("{\n \"ref_id\": \"TKREF4QOS7X1UGPY7JGUV444P10102202\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-api-version", "<x-api-version>")
req.Header.Add("x-client-id", "<api-key>")
req.Header.Add("x-client-secret", "<api-key>")
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://sandbox.cashfree.com/bbps/cou/v1/billers/response/ticket-status")
.header("x-api-version", "<x-api-version>")
.header("x-client-id", "<api-key>")
.header("x-client-secret", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"ref_id\": \"TKREF4QOS7X1UGPY7JGUV444P10102202\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://sandbox.cashfree.com/bbps/cou/v1/billers/response/ticket-status")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-api-version"] = '<x-api-version>'
request["x-client-id"] = '<api-key>'
request["x-client-secret"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"ref_id\": \"TKREF4QOS7X1UGPY7JGUV444P10102202\"\n}"
response = http.request(request)
puts response.read_bodyAuthorizations
Your unique client identifier issued by Cashfree. You can find this in your Merchant Dashboard.
Your unique client secret issued by Cashfree. Keep this confidential and never expose it in client-side code. You can find this in your Merchant Dashboard.
Headers
API version to be used. Format is YYYY-MM-DD.
Body
Request parameters to poll the status of a raised ticket.
Reference ID received from the Raise Ticket Request API response (data.ref_id).
"TKREF4QOS7X1UGPY7JGUV444P10102202"
Response
Ticket status response.
HTTP status of the API call. This is always "OK".
"OK"
Human-readable outcome indicator. "Ticket details fetched successfully" indicates success; "Ticket request failed" indicates a terminal failure; "Ticket request is still being processed" indicates the request is pending.
"Ticket details fetched successfully"
Ticket details and current status. Present once the ticket request has been processed.
Show child attributes
Show child attributes
Was this page helpful?