curl --request POST \
--url https://api-pacb-uat.eximpe.com/pg/chargebacks/{chargeback_id}/respond/ \
--header 'Content-Type: multipart/form-data' \
--header 'X-API-Version: <api-key>' \
--header 'X-Client-ID: <api-key>' \
--header 'X-Client-Secret: <api-key>' \
--form action=contest \
--form condition=contested \
--form 'fields[remarks]=Delivered on 30 Oct, signed for by the customer' \
--form 'fields[proof_of_delivery][email protected]' \
--form 'fields[shipping_proof][email protected]'{
"success": true,
"message": "Response submitted for chargeback CB6358819770",
"data": {
"chargeback_id": "CB6358819770",
"payment_id": "PR1400935863",
"order_id": "OD8950153797",
"order_reference_id": "ORDER-10422",
"amount": "2500.00",
"status": "PENDING_DOC_REVIEW",
"action": "contest",
"chargeback_type": "Chargeback",
"reason_description": "Goods or Services Not Provided / Not Received",
"raised_on": "2026-10-26T03:47:59Z",
"respond_by": "2026-11-02T03:47:59Z",
"can_respond": false,
"created_at": "2026-10-26T03:47:59Z",
"response": {
"action": "contest",
"condition": "contested",
"submitted_at": "2026-10-26T03:48:13Z"
}
}
}Chargeback
Respond to Chargeback
Accept, contest or partially accept a chargeback, with the evidence its condition takes.
POST
/
pg
/
chargebacks
/
{chargeback_id}
/
respond
/
curl --request POST \
--url https://api-pacb-uat.eximpe.com/pg/chargebacks/{chargeback_id}/respond/ \
--header 'Content-Type: multipart/form-data' \
--header 'X-API-Version: <api-key>' \
--header 'X-Client-ID: <api-key>' \
--header 'X-Client-Secret: <api-key>' \
--form action=contest \
--form condition=contested \
--form 'fields[remarks]=Delivered on 30 Oct, signed for by the customer' \
--form 'fields[proof_of_delivery][email protected]' \
--form 'fields[shipping_proof][email protected]'{
"success": true,
"message": "Response submitted for chargeback CB6358819770",
"data": {
"chargeback_id": "CB6358819770",
"payment_id": "PR1400935863",
"order_id": "OD8950153797",
"order_reference_id": "ORDER-10422",
"amount": "2500.00",
"status": "PENDING_DOC_REVIEW",
"action": "contest",
"chargeback_type": "Chargeback",
"reason_description": "Goods or Services Not Provided / Not Received",
"raised_on": "2026-10-26T03:47:59Z",
"respond_by": "2026-11-02T03:47:59Z",
"can_respond": false,
"created_at": "2026-10-26T03:47:59Z",
"response": {
"action": "contest",
"condition": "contested",
"submitted_at": "2026-10-26T03:48:13Z"
}
}
}The request and response are the same whatever
X-API-Version you send. v1, v2 and v3 integrations share these chargeback endpoints.Sending an answer
Send theaction and condition you picked from Get Chargeback Actions, plus one fields[<name>] part per field of that condition:
- Text fields: the text.
- True/false fields:
trueorfalse. - Documents: the file. Attach at least the condition’s
min_documents. amount: only withpartial_accept, where it is required. It must be less than the disputed amount; to accept all of it, useaccept.
Where the keys come from. Every key you send is read from the Get Chargeback Actions response:
For example, the entry under
| In Get Chargeback Actions | Send as |
|---|---|
The key under actions: accept, contest or partial_accept | action |
The condition of the entry you picked under that key | condition |
Each name in that entry’s text_fields, boolean_fields and documents | fields[<name>] |
actions.contest with "condition": "contested", a text field named remarks and a document named proof_of_delivery is sent as action=contest, condition=contested, fields[remarks]=… and fields[proof_of_delivery][email protected].curl -X POST 'https://api-pacb-uat.eximpe.com/pg/chargebacks/CB6358819770/respond/' \
-H 'X-Client-ID: <client_id>' \
-H 'X-Client-Secret: <client_secret>' \
-H 'X-API-Version: 1.0.0' \
-F 'action=contest' \
-F 'condition=contested' \
-F 'fields[remarks]=Delivered on 30 Oct, signed for by the customer' \
-F 'fields[proof_of_delivery][email protected]' \
-F 'fields[shipping_proof][email protected]'
curl -X POST 'https://api-pacb-uat.eximpe.com/pg/chargebacks/CB6358819770/respond/' \
-H 'X-Client-ID: <client_id>' \
-H 'X-Client-Secret: <client_secret>' \
-H 'X-API-Version: 1.0.0' \
-F 'action=contest' \
-F 'condition=product_delivered' \
-F 'fields[product_details]=1 x Blue widget, order ORDER-10422' \
-F 'fields[courier_name]=BlueDart' \
-F 'fields[customer_tried_to_cancel]=false' \
-F 'fields[proof_of_delivery][email protected]'
400 keyed by that field’s name. Fewer documents than min_documents comes back keyed documents. Nothing is recorded, so fix it and send the answer again.
Documents may be PDF, JPG, JPEG or PNG. Some payments also take Word files; a file type the payment can’t take is refused with a 400 naming the types it does take.
After you answer
The chargeback moves toPENDING_DOC_REVIEW and takes no further answers (409). Its status changes from there are sent in the DISPUTE_UPDATED webhook.
If EximPe needs more from you before taking your answer to the bank, the chargeback moves to INSUFFICIENT_DOCUMENT and you are emailed what is missing. It can then be answered again: fetch its actions and send a new answer before respond_by.
502 with code 40670: do not resubmit. The gateway accepted some of your documents and then failed. Your contest is registered and the chargeback is PENDING_DOC_REVIEW. details.delivered and details.failed name the documents by your field names; send the failed ones to EximPe support.Any other 502 means nothing was recorded, and you can retry.Authorizations
Body
multipart/form-dataapplication/json
Plus one fields[<name>] part per field of the chosen condition, with the names from Get Chargeback Actions: the text for a text field, true or false for a true/false field, and the file for a document. Attach at least the condition's min_documents documents. See the request examples.