Skip to main content

The REST Admin API is a legacy API as of October 1, 2024. Starting April 1, 2025, all new public apps must be built exclusively with the GraphQL Admin API. For details and migration steps, visit our migration guide.

Dispute

Requires ANY of the following access scopes: shopify_payments_payouts, shopify_payments.

Disputes occur when a buyer questions the legitimacy of a charge with their financial institution.

Was this section helpful?

Anchor to

The Dispute resource

Anchor to

Properties


id
->
id

The ID of the dispute.


order_id
->
id

The ID of the order that the dispute belongs to.


type

Whether the dispute is still in the inquiry phase or has turned into a chargeback. Valid values:

Show type properties
  • inquiry: The dispute is in the inquiry phase.
  • chargeback: The dispute has turned into a chargeback.

currency

The ISO 4217 currency code of the dispute amount.


amount

The total amount disputed by the cardholder.


reason

The reason of the dispute provided by the cardholder's bank. Valid values:

Show reason properties
  • bank_not_process: The customer's bank cannot process the charge.
  • credit_not_processed: The customer claims that the purchased product was returned or the transaction was otherwise canceled, but the merchant have not yet provided a refund or credit.
  • customer_initiated: The customer initiated the dispute, so the merchant should contact the customer for additional details to find out why the payment was disputed.
  • debit_not_authorized: The customer's bank cannot proceed with the debit since it has not been authorized.
  • duplicate: The customer claims they were charged multiple times for the same product or service.
  • fraudulent: The cardholder claims that they didn't authorize the payment.
  • general: The dispute is uncategorized, so the merchant should contact the customer for additional details to find out why the payment was disputed.
  • incorrect_account_details: The customer account associated with the purchase is incorrect.
  • insufficient_funds: The customer's bank account has insufficient funds.
  • product_not_received: The customer claims they did not receive the products or services purchased.
  • product_unacceptable: The product or service was received but was defective, damaged, or not as described.
  • subscription_canceled: The customer claims that the merchant continued to charge them after a subscription was canceled.
  • unrecognized: The customer doesn't recognize the payment appearing on their card statement.

network_reason_code
string

The reason for the dispute provided by the cardholder's bank.


status

The current state of the dispute. Valid values:

Show status properties
  • needs_response: The dispute has been open and needs an evidence submission.
  • under_review: The evidence has been submitted and is being reviewed by the cardholder's bank.
  • charge_refunded: The merchant refunded the inquiry amount.
  • accepted: The merchant has accepted the dispute as being valid.
  • won: The cardholder's bank reached a final decision in the merchant's favor.
  • lost: The cardholder's bank reached a final decision in the buyer's favor.

evidence_due_by

The deadline for evidence submission.


evidence_sent_on

"The date and time (ISO 8601 format) when evidence was sent. Returns null if evidence has not yet been sent.


finalized_on

The date and time (ISO 8601 format) when this dispute was resolved. Returns null if the dispute is not yet resolved.


Was this section helpful?
{}

The Dispute resource

{
"id": 54534554564,
"order_id": 450789469,
"type": "inquiry",
"currency": "USD",
"amount": "102.53",
"reason": "fraudulent",
"network_reason_code": "4840",
"status": "under_review",
"evidence_due_by": "2018-01-10T11:00:00-05:00",
"evidence_sent_on": "2018-01-09T11:00:00-05:00",
"finalized_on": "2018-03-10T11:00:00-05:00"
}

Retrieve all disputes ordered by initiated_at date and time (ISO 8601 format), with the most recent being first. Note: This endpoint implements pagination by using links that are provided in the response header. To learn more, refer to Make paginated requests to the REST Admin API.


api_version
string
required

initiated_at

Return only disputes with the specified initiated_at date (ISO 8601 format).


last_id

Return only disputes before the specified ID.


since_id

Return only disputes after the specified ID.


status

Return only disputes with the specified status.


Was this section helpful?

Retrieve all disputes initiated on 2013-05-03

Query parameters
initiated_at=2013-05-03

Return only disputes with the specified initiated_at date (ISO 8601 format).

Retrieve all disputes ordered newest to oldest

Retrieve all won disputes

Query parameters
status=won

Return only disputes with the specified status.

Was this section helpful?
get

/admin/api/2025-07/shopify_payments/disputes.json?initiated_at=2013-05-03

curl -X GET "https://your-development-store.myshopify.com/admin/api/2025-07/shopify_payments/disputes.json?initiated_at=2013-05-03" \
-H "X-Shopify-Access-Token: {access_token}"

{}

Response

JSON
HTTP/1.1 200 OK
{
"disputes": [
{
"id": 1052608616,
"order_id": null,
"type": "chargeback",
"amount": "100.00",
"currency": "USD",
"reason": "fraudulent",
"network_reason_code": "4827",
"status": "won",
"evidence_due_by": "2013-07-03T19:00:00-04:00",
"evidence_sent_on": "2013-07-04T07:00:00-04:00",
"finalized_on": null,
"initiated_at": "2013-05-03T20:00:00-04:00"
},
{
"id": 815713555,
"order_id": 625362839,
"type": "chargeback",
"amount": "11.50",
"currency": "USD",
"reason": "credit_not_processed",
"network_reason_code": "4827",
"status": "needs_response",
"evidence_due_by": "2099-12-29T19:00:00-05:00",
"evidence_sent_on": null,
"finalized_on": null,
"initiated_at": "2013-05-03T20:00:00-04:00"
},
{
"id": 782360659,
"order_id": 625362839,
"type": "chargeback",
"amount": "11.50",

Retrieves a single dispute by ID.


api_version
string
required

dispute_id
string
required

Was this section helpful?

Retrieves a single dispute by ID

Path parameters
dispute_id=598735659
string
required
Was this section helpful?
get

/admin/api/2025-07/shopify_payments/disputes/598735659.json

curl -X GET "https://your-development-store.myshopify.com/admin/api/2025-07/shopify_payments/disputes/598735659.json" \
-H "X-Shopify-Access-Token: {access_token}"

{}

Response

JSON
HTTP/1.1 200 OK
{
"dispute": {
"id": 598735659,
"order_id": 625362839,
"type": "chargeback",
"amount": "11.50",
"currency": "USD",
"reason": "fraudulent",
"network_reason_code": "4827",
"status": "needs_response",
"evidence_due_by": "2099-12-29T19:00:00-05:00",
"evidence_sent_on": null,
"finalized_on": null,
"initiated_at": "2013-05-03T20:00:00-04:00"
}
}