Get Chargeback Actions
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": "accepted",
"text_fields": [],
"boolean_fields": [],
"documents": [],
"min_documents": 0
}
],
"contest": [
{
"condition": "contested",
"text_fields": [
{
"name": "remarks",
"required": true
}
],
"boolean_fields": [],
"documents": [
{
"name": "proof_of_delivery",
"required": false
},
{
"name": "shipping_proof",
"required": false
},
{
"name": "statement_of_service",
"required": false
},
{
"name": "service_fulfilment_proof",
"required": false
},
{
"name": "cancellation_proof",
"required": false
},
{
"name": "refund_proof",
"required": false
},
{
"name": "business_model_explanation",
"required": false
},
{
"name": "extra_charges_declaration",
"required": false
},
{
"name": "terms_and_conditions",
"required": false
},
{
"name": "customer_communication",
"required": false
},
{
"name": "certificate_of_authenticity",
"required": false
},
{
"name": "reseller_agreement",
"required": false
}
],
"min_documents": 1
}
]
}
}
}Chargeback
Get Chargeback Actions
The ways a chargeback can be answered, and the fields and documents each one takes.
GET
/
pg
/
chargebacks
/
{chargeback_id}
/
actions
/
Get Chargeback Actions
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": "accepted",
"text_fields": [],
"boolean_fields": [],
"documents": [],
"min_documents": 0
}
],
"contest": [
{
"condition": "contested",
"text_fields": [
{
"name": "remarks",
"required": true
}
],
"boolean_fields": [],
"documents": [
{
"name": "proof_of_delivery",
"required": false
},
{
"name": "shipping_proof",
"required": false
},
{
"name": "statement_of_service",
"required": false
},
{
"name": "service_fulfilment_proof",
"required": false
},
{
"name": "cancellation_proof",
"required": false
},
{
"name": "refund_proof",
"required": false
},
{
"name": "business_model_explanation",
"required": false
},
{
"name": "extra_charges_declaration",
"required": false
},
{
"name": "terms_and_conditions",
"required": false
},
{
"name": "customer_communication",
"required": false
},
{
"name": "certificate_of_authenticity",
"required": false
},
{
"name": "reseller_agreement",
"required": false
}
],
"min_documents": 1
}
]
}
}
}The request and response are the same whatever
X-API-Version you send. v1, v2 and v3 integrations share these chargeback endpoints.How answering works
- Call this endpoint for the chargeback.
- Pick an action (
accept,contestorpartial_accept) and one of its conditions. - Send that condition’s fields to Respond to Chargeback, each as
fields[<name>].
- Accept, or contest with evidence.
accepthas a singleacceptedcondition that takes nothing.contesthas a singlecontestedcondition: yourremarks(required) and any of the evidence documents, all optional, withmin_documents: 1. Attach whichever documents back your case, and at least one. - Detailed conditions. Each condition describes the situation that applies, such as
product_deliveredoralready_refunded, and takes its own text fields, true/false fields and documents.partial_acceptmay be offered too.
actions is empty, and can_respond is false, while your answer is under review or once the chargeback is closed. If EximPe sends the chargeback back to you for more information, its status becomes INSUFFICIENT_DOCUMENT and its actions are offered again.
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.