Overview
To automate dispute handling, merchants use the REST 2.0 Disputes API:
Function | Method and Endpoint |
---|---|
Retrieve a list of disputes for a processing entity. | GET /entities/{entity-id}/disputes |
Retrieve details of a dispute. | GET entities/{entity-id}/disputes/{dispute-id} |
Upload one or more image files Nuvei includes in dispute responses. | POST /entities/{entity-id}/files |
Perform an action on a dispute. | POST /entities/{entity-id}/disputes/{dispute-id}/{action} |
The Disputes API currently supports Visa and Mastercard disputes for which Nuvei is the direct acquirer. Future releases will provide additional support.
Retrieve a List of Disputes
To retrieve a list of disputes for a processing entity, the merchant sends a GET request to /entities/{entity-id}/disputes
, using the merchant’s processing entity ID provided by Nuvei. The merchant can filter the list by including the following URL-encoded query string parameters in the request URL:
Query Parameter | Type | Mandatory | Description |
---|---|---|---|
from_date | String | Yes | Start date filter in the following format: YYYY-MM-DD. |
to_date | String | Yes | Last date filter in the following format: YYYY-MM-DD. |
response_date_sort | String | Yes | Date to use for from_date and to_date filtering. Valid values:UpdateDate – Filter according to last event date. CreateDate – Filter according to first event date. |
retrieve_files | Boolean | No | Determines whether the request retrieves image data: true – Retrieves image data. false (default) – Does not retrieve image data. |
offset | Number | No | Paging parameter – Dispute list begins at this position in the dataset. Default value is 0. |
size | Number | No | Paging parameter – Maximum number of disputes on each response page. Default value is 100. Maximum value when retrieveImages is false: 100. Otherwise: 10. |
Example GET /entities/{entity-id}/disputes
Request URL
GET /entities/3ede43b4-8a1a-4bc9-a120-f07836ddf7d9/disputes?from_date=2024-02-02&to_date=2024-02-06&response_date_sort=UpdateDate&retrieve_files=true
The response includes a status.code
and a status.description
for each dispute in the list. For a list of possible dispute status codes and descriptions, see below.
Example GET /entities/{entity-id}/disputes
Response
{ "totalResultCount": 1, "disputes": [ { "id": "FRI3dJoEHQ/f8gaGUi86So4F8AQiznNgxWZFLvDJVxhBU3tq0kzakLH6wWpM+Llc", "creationDate": "2022-09-02T11:38:26.511Z", "verdict": "", "transaction": { "id": 210000000, "date": "2022-08-02T11:38:26.511Z", "merchantTransactionId": "1324343", "arn": "1234556", "amount": 100.2, "currency": "USD" }, "paymentOption": "Visa", "maskedCardNumber": "123456************3456", "availableActions": [ "ACCEPT", "PARTIAL", "REJECT" ], "lastDisputeEvent": { "id": "ABI3dJoEHQ/f8gaGUi86So4F8AQiznNgxWZFLvDJVxhBU3tq0kzakLH6wWpM+Mmc", "updateDate": "2022-09-04T11:38:26.511Z", "expirationDate": "2022-09-25T11:38:26.511Z", "status": { "code": "FC-M-RJCT", "description": "First Chargeback- Rejected by Merchant" }, "disputeAmount": 100.2, "rejectAmount": 100.2, "currency": "USD", "remarks": "chargeback notes example", "disputeReason": { "code": "12.4", "description": "reason name" }, "rejectReason": { "code": "IDRC25", "reason": "Invalid Dispute" }, "files": [ { "id": 123456, "name": "testimage.pdf", "data": "This is an image file stored in a base64 encoded string" } ], "initiatedBy": "Issuer" } } ] }
Retrieve the Details of a Dispute
To retrieve the complete details for a dispute case, including the entire status flow, the merchant sends a GET request to entities/{entity-id}/disputes/{dispute-id}
. The status flow indicates the stages the dispute went through until its current status. The request URL can include the query string parameter as described in Retrieve Dispute Details.
The response includes a status.code
and a status.description
for each dispute in the list. For a list of possible dispute status codes and descriptions, see below.
Example GET entities/{entity-id}/disputes/{dispute-id}
Response
{ "disputes": { "id": "FRI3dJoEHQ/f8gaGUi86So4F8AQiznNgxWZFLvDJVxhBU3tq0kzakLH6wWpM+Llc", "creationDate": "2022-09-02T11:38:26.511Z", "verdict": "", "transaction": { "id": 210000000, "date": "2022-09-02T11:38:26.511Z", "merchantTransactionId": "1324343", "arn": "1234556", "amount": 100.2, "currency": "USD" }, "paymentOption": "Visa", "maskedCardNumber": "123456************3456", "availableActions": [ "ACCEPT", "PARTIAL", "REJECT" ], "disputeEvents": [ { "updateDate": "2022-09-02T11:38:26.511Z", "expirationDate": "2022-09-02T11:38:26.511Z", "status": { "code": "FC", "description": "First Chargeback- Initiated by Issuer" }, "disputeAmount": 100.2, "rejectAmount": null, "currency": "USD", "remarks": "chargeback notes example", "disputeReason": { "code": "12.4", "reason": "reason name" }, "rejectReason": { "code": null, "description": null }, "files": [ { "id": 123456, "name": "testimage.pdf", "data": "This is an image file stored in a base64 encoded string" } ], "initiatedBy": "Issuer" }, { "updateDate": "2022-09-02T11:38:26.511Z", "expirationDate": "2022-09-02T11:38:26.511Z", "status": { "code": "FC-M-RJCT", "description": "First Chargeback- Rejected by Merchant" }, "disputeAmount": 100.2, "rejectAmount": 100.2, "currency": "USD", "remarks": "chargeback reject notes example", "disputeReason": { "code": "12.4", "reason": "reason name" }, "rejectreason": { "code": "IDRC25", "descripion": "reason name" }, "files": [ { "id": 555456, "name": "respimage.pdf", "data": "This is a response image file stored in a base64 encoded string" } ], "initiatedBy": "Acquirer" } ] } }
Upload Image Files
Merchants can re-present a dispute with supporting files. Uploading one or more files is the first step of the representment flow. To upload a file, the merchant sends a POST request to /entities/{entity-id}/files
. In each request only one file can be uploaded.
The following is information related to the upload of parameters and an image file(s):
files.name
value is the file name of the image.files.data
value is the base-64 encoded string of the file data.- File size is in MB, with a maximum file size of 2 MB.
- Supported file format is PDF.
Example POST /entities/{entity-id}/files
Request
{ "file": { "name": "testimage.pdf", "data": "This is an image file stored in a base64 encoded string" } }
Example POST /entities/{entity-id}/files
Response
{ "file": { "correlationId": "123e4567-e89b-12d3-a456-426655440000", "name": "testimage.pdf" }, "result": { "status": "SUCCESS" } }
The final confirmation for a successful upload of a file is received via the callback (webhook) ‘Dispute API Image Callback‘. The callback includes a FileId
, which is used if performing an action on the dispute (the second step of the representment flow).
Perform an Action on a Dispute
To submit a response to the dispute, the merchant sends a POST request to /entities/{entity-id}/disputes/{dispute-id}/{action}
. The merchant can accept, partially accept, or reject the dispute. If the action requires a supporting file, the request must include the correlationID
of the previously uploaded file.
Example POST /entities/{entity-id}/disputes/{dispute-id}/{action}
Request URL
POST /entities/3ede43b4-8a1a-4bc9-a120-f07836ddf7d9/disputes/FRI3dJoEHf8gaGUi86So4F8AQiznNgxWZFLvDJVxhBU3tq0kzakLH6wWpM+Llc/PARTIAL
Example POST /entities/{entity-id}/disputes/{dispute-id}/{action}
Request
{ "acceptedAmount": 100, "currency":"USD", "cardholderNoLongerDisputes": null, "notes": "the dispute was partial accepted because ...", "files": [ "123e4567-e89b-12d3-a456-426655440000" ] }
Example /entities/{entity-id}/disputes/{dispute-id}/{action}
Response
{ "disputeEventId": "55333abc422" }
Dispute Status Codes
The following table lists the possible dispute status.codes
and status.descriptions
.
Code | Description |
---|---|
FC | First Chargeback-Initiated by Issuer |
CC | Credit Chargeback-Initiated by Issuer |
CC-A-ACPT | Credit Chargeback-Accepted Automatically |
FC-A-EPRD | First Chargeback- No response by Merchant- CB expired |
FC-M-ACPT | First Chargeback-Accepted by merchant |
FC-A-ACPT | First Chargeback-Accepted Automatically |
FC-A-ACPT-MCOLL | First Chargeback-Accepted Automatically |
FC-M-PART | First Chargeback-Partially Accepted by merchant |
FC-M-PART-EXP | First Chargeback-Partially Accepted by merchant - Expired |
FC-M-RJCT | First Chargeback- Rejected by Merchant |
FC-M-RJCT-EXP | First Chargeback- Rejected by Merchant - Expired |
FC-A-RJCT | First Chargeback- Rejected Automatically |
FC-A-RJCT-EXP | First Chargeback- Rejected Automatically – Expired |
IPA | Pre-Arbitration- Initiated by issuer |
MPA-I-ACPT | Merchant pre-arbitration accepted by Issuer |
MPA-I-RJCT | Merchant pre-arbitration rejected by Issuer |
MPA-I-PART | Merchant pre-arbitration partially accepted by Issuer |
FC-CLSD-MF | First Chargeback is closed in merchant favour |
FC-CLSD-CHF | First Chargeback is closed in card holder favour |
FC-CLSD-RCL | First Chargeback-Dispute is closed (Recall) |
FC-I-RCL | First Chargeback - Recalled by issuer |
PA-CLSD-MF | Pre-arbitration is closed in merchant favour |
PA-CLSD-CHF | Pre-arbitration is closed in card holder favour |
RDR | RDR |
FC-SPCSE | First Chargeback-Initiated by Issuer - Dispute Response is not allowed |
MCC | MC Collaboration - Initiated by Issuer |
MCC-A-RJCT | Collaboration - Previously Refunded (automatic response) |
MCC-M-ACPT | Collaboration - Refunded by Merchant |
MCC-EXPR | Collaboration - Expired |
MCC-M-RJCT | Collaboration - Rejected by Merchant |
MCC-A-ACPT | Collaboration - Automatic Accept |
MCC-CLSD-MF | Collaboration is closed in merchant favour |
MCC-CLSD-CHF | Collaboration is closed in card holder favour |
INQ | Inquiry-Initiated by Issuer |
INQ-M-RSP | Inquiry Responded by merchant |
INQ-EXPR | Inquiry Expired |
INQ-A-RJCT | Inquiry Automatically Rejected |
INQ-A-CNLD | Inquiry Cancelled (After Refund) |
INQ-M-RFND | Inquiry Accepted (Full Refund) |
INQ-M-P-RFND | Inquiry Partial Accepted (Partial Refund) |
INQ-UPD | Inquiry-Initiated by Issuer (updated) |
IPA-M-ACPT | Pre-Arbitration accepted by merchant |
IPA-M-PART | Pre-Arbitration partially accepted by merchant |
IPA-M-PART-EXP | Pre-Arbitration partially accepted by merchant - Expired |
IPA-M-RJCT | Pre-Arbitration rejected by merchant |
IPA-M-RJCT-EXP | Pre-Arbitration rejected by merchant - Expired |
IPA-A-ACPT | Pre-Arbitration automatically accepted by merchant |
PA-CLSD-RC | Pre-Arbitration is closed (Recall) |
IPAR-M-ACPT | Rejected Pre-Arb accepted by merchant |
IPAR-A-ACPT | Rejected Pre-Arb expired, automatically accepted by merchant |
CC-I-RCLL | Credit Chargeback - Recalled by issuer |