curl --request GET \
--url https://api-pacb-uat.eximpe.com/pg/chargebacks/{chargeback_id}/actions/ \
--header 'X-API-Version: <api-key>' \
--header 'X-Client-ID: <api-key>' \
--header 'X-Client-Secret: <api-key>'import requests
url = "https://api-pacb-uat.eximpe.com/pg/chargebacks/{chargeback_id}/actions/"
headers = {
"X-Client-ID": "<api-key>",
"X-Client-Secret": "<api-key>",
"X-API-Version": "<api-key>"
}
response = requests.get(url, headers=headers)
print(response.text)const options = {
method: 'GET',
headers: {
'X-Client-ID': '<api-key>',
'X-Client-Secret': '<api-key>',
'X-API-Version': '<api-key>'
}
};
fetch('https://api-pacb-uat.eximpe.com/pg/chargebacks/{chargeback_id}/actions/', 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-pacb-uat.eximpe.com/pg/chargebacks/{chargeback_id}/actions/",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"X-API-Version: <api-key>",
"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"
"net/http"
"io"
)
func main() {
url := "https://api-pacb-uat.eximpe.com/pg/chargebacks/{chargeback_id}/actions/"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-Client-ID", "<api-key>")
req.Header.Add("X-Client-Secret", "<api-key>")
req.Header.Add("X-API-Version", "<api-key>")
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-pacb-uat.eximpe.com/pg/chargebacks/{chargeback_id}/actions/")
.header("X-Client-ID", "<api-key>")
.header("X-Client-Secret", "<api-key>")
.header("X-API-Version", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api-pacb-uat.eximpe.com/pg/chargebacks/{chargeback_id}/actions/")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-Client-ID"] = '<api-key>'
request["X-Client-Secret"] = '<api-key>'
request["X-API-Version"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"success": true,
"message": "Chargeback actions retrieved successfully",
"data": {
"chargeback_id": "CB6358819770",
"status": "NEW",
"amount": "2500.00",
"respond_by": "2026-11-02T03:47:59Z",
"can_respond": true,
"actions": {
"accept": [
{
"condition": "customer_cancelled",
"text_fields": [],
"boolean_fields": [],
"documents": []
},
{
"condition": "other",
"text_fields": [
{
"name": "reason",
"required": true
}
],
"boolean_fields": [],
"documents": []
}
],
"contest": [
{
"condition": "product_delivered",
"text_fields": [
{
"name": "product_details",
"required": true
},
{
"name": "courier_name",
"required": false
},
{
"name": "awb_number",
"required": false
}
],
"boolean_fields": [
{
"name": "customer_tried_to_cancel",
"required": false
}
],
"documents": [
{
"name": "proof_of_delivery",
"required": false
},
{
"name": "invoice",
"required": false
}
]
},
{
"condition": "already_refunded",
"text_fields": [
{
"name": "refund_details",
"required": false
}
],
"boolean_fields": [],
"documents": [
{
"name": "refund_proof",
"required": false
}
]
}
],
"partial_accept": [
{
"condition": "partially_delivered",
"text_fields": [
{
"name": "remarks",
"required": false
}
],
"boolean_fields": [],
"documents": [
{
"name": "supporting_document",
"required": true
}
]
}
]
}
}
}{
"success": false,
"error": {
"code": "ERR_SERVICE_ERROR_000",
"message": "Payment gateway error",
"details": {
"chargeback": "Chargebacks on this payment cannot be answered yet: the PayU chargeback credentials are not configured for this merchant. Please contact support."
}
}
}{
"success": false,
"error": {
"code": 40669,
"message": "Chargeback not found",
"details": {
"chargeback_id": "Chargeback not found"
}
}
}{
"success": false,
"error": {
"code": "ERR_PAYMENT_003",
"message": "API error",
"details": {
"chargeback": "PayU's chargeback reasons are unavailable right now; please try again in a few minutes."
}
}
}Get Chargeback Actions
The ways a chargeback can be answered, and the fields and documents each one takes.
curl --request GET \
--url https://api-pacb-uat.eximpe.com/pg/chargebacks/{chargeback_id}/actions/ \
--header 'X-API-Version: <api-key>' \
--header 'X-Client-ID: <api-key>' \
--header 'X-Client-Secret: <api-key>'import requests
url = "https://api-pacb-uat.eximpe.com/pg/chargebacks/{chargeback_id}/actions/"
headers = {
"X-Client-ID": "<api-key>",
"X-Client-Secret": "<api-key>",
"X-API-Version": "<api-key>"
}
response = requests.get(url, headers=headers)
print(response.text)const options = {
method: 'GET',
headers: {
'X-Client-ID': '<api-key>',
'X-Client-Secret': '<api-key>',
'X-API-Version': '<api-key>'
}
};
fetch('https://api-pacb-uat.eximpe.com/pg/chargebacks/{chargeback_id}/actions/', 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-pacb-uat.eximpe.com/pg/chargebacks/{chargeback_id}/actions/",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"X-API-Version: <api-key>",
"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"
"net/http"
"io"
)
func main() {
url := "https://api-pacb-uat.eximpe.com/pg/chargebacks/{chargeback_id}/actions/"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-Client-ID", "<api-key>")
req.Header.Add("X-Client-Secret", "<api-key>")
req.Header.Add("X-API-Version", "<api-key>")
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-pacb-uat.eximpe.com/pg/chargebacks/{chargeback_id}/actions/")
.header("X-Client-ID", "<api-key>")
.header("X-Client-Secret", "<api-key>")
.header("X-API-Version", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api-pacb-uat.eximpe.com/pg/chargebacks/{chargeback_id}/actions/")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-Client-ID"] = '<api-key>'
request["X-Client-Secret"] = '<api-key>'
request["X-API-Version"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"success": true,
"message": "Chargeback actions retrieved successfully",
"data": {
"chargeback_id": "CB6358819770",
"status": "NEW",
"amount": "2500.00",
"respond_by": "2026-11-02T03:47:59Z",
"can_respond": true,
"actions": {
"accept": [
{
"condition": "customer_cancelled",
"text_fields": [],
"boolean_fields": [],
"documents": []
},
{
"condition": "other",
"text_fields": [
{
"name": "reason",
"required": true
}
],
"boolean_fields": [],
"documents": []
}
],
"contest": [
{
"condition": "product_delivered",
"text_fields": [
{
"name": "product_details",
"required": true
},
{
"name": "courier_name",
"required": false
},
{
"name": "awb_number",
"required": false
}
],
"boolean_fields": [
{
"name": "customer_tried_to_cancel",
"required": false
}
],
"documents": [
{
"name": "proof_of_delivery",
"required": false
},
{
"name": "invoice",
"required": false
}
]
},
{
"condition": "already_refunded",
"text_fields": [
{
"name": "refund_details",
"required": false
}
],
"boolean_fields": [],
"documents": [
{
"name": "refund_proof",
"required": false
}
]
}
],
"partial_accept": [
{
"condition": "partially_delivered",
"text_fields": [
{
"name": "remarks",
"required": false
}
],
"boolean_fields": [],
"documents": [
{
"name": "supporting_document",
"required": true
}
]
}
]
}
}
}{
"success": false,
"error": {
"code": "ERR_SERVICE_ERROR_000",
"message": "Payment gateway error",
"details": {
"chargeback": "Chargebacks on this payment cannot be answered yet: the PayU chargeback credentials are not configured for this merchant. Please contact support."
}
}
}{
"success": false,
"error": {
"code": 40669,
"message": "Chargeback not found",
"details": {
"chargeback_id": "Chargeback not found"
}
}
}{
"success": false,
"error": {
"code": "ERR_PAYMENT_003",
"message": "API error",
"details": {
"chargeback": "PayU's chargeback reasons are unavailable right now; please try again in a few minutes."
}
}
}How answering works
- Call this endpoint for the chargeback.
- Pick an action (
accept,contestorpartial_accept) and one of its conditions: the situation that applies, such asproduct_delivered. - Send that condition’s fields to Respond to Chargeback, each as
fields[<name>].
partial_accept, and the fields of a condition can differ between payments. Read the conditions from here for each chargeback instead of hard-coding them.
actions is empty, and can_respond is false, once the chargeback has been answered or closed.
403 means the chargeback can’t be answered through EximPe yet because its gateway credentials are not set up for your account. Contact EximPe support; retrying won’t change it.Authorizations
Client Application ID - Your unique application identifier used to authenticate API requests. You can find your Client ID in the Developer Settings section of the merchant dashboard.
Client Secret Key - Your secret key used alongside the Client ID for secure authentication. Keep this confidential and never expose it in client-side code. Available in the Developer Settings section of the merchant dashboard.
API Version - Specifies which version of the API to use (e.g., '1.X.X', '2.X.X', or '3.X.X'). This header allows you to control which API version your integration uses. Default version information is available in the Developer Settings.
Path Parameters
EximPe chargeback ID, e.g. CB6358819770.