Skip to content

List disputes

The disputes.list operation: GET /api/v1/disputes in the REST API and the disputes_list tool in the MCP server.

GET/api/v1/disputes

Lists the brand's disputes (chargebacks and inquiries reported by the payment processor) in the mode of the request, newest first. Filter by status (needs_response, under_review, won, lost; one or several), customerId or paymentId. Paginate with limit (1–100, default 10) and starting_after.

Each dispute has its amount and fee, the deadline to respond (evidenceDueBy), the ledger postings, the customer's wallets it froze and the credits it took back, and its evidence pack once built.

At a glance

  • REST: GET /api/v1/disputes
  • MCP tool: disputes_list
  • Operation ID: disputes.list
  • Scope: Brand
  • Permission: disputes:read
  • Risk tier: read
  • Dry run: Not supported
  • Idempotency: Not needed (read only)
  • Modes: Test and live
  • Pagination: limit (at most 100) and starting_after
  • Authentication: API key with the disputes:read scope
  • Since: M8

Request

Query parameters

FieldTypeRequiredDescription
statusone of needs_response, under_review, won, lost or array of one of needs_response, under_review, won, lostNo
customerIdcus_… IDNoDisputes of one customer (cus_…).
paymentIdpay_… IDNoDisputes of one payment (pay_…).
limitinteger (1 to 100)No
starting_afterdp_… IDNoThe next_cursor of the previous page.

Response

200 OK with a JSON object, a page of the list (newest first):

FieldTypeDescription
object"list"
dataarray of object
data[].iddp_… ID
data[].object"dispute"
data[].livemodeboolean
data[].entityIdent_… ID
data[].brandIdbrd_… ID
data[].paymentIdpay_… ID
data[].customerIdcus_… ID
data[].processorone of stripe, mollie, fake
data[].processorConnectionIdpcon_… ID
data[].processorRefstring
data[].reasonstring or null
data[].processorStatusstring or null
data[].statusone of needs_response, under_review, won, lost
data[].inquiryboolean
data[].fundsWithdrawnAtdate-time or null
data[].amountmoney
data[].feemoney or null
data[].evidenceDueBydate-time or null
data[].openedAtdate-time
data[].closedAtdate-time or null
data[].ledgerTxnIdsarray of txn_… ID
data[].walletFreezeobject or null
data[].walletReversalobject or null
data[].evidenceobject or null
data[].notesstring or null
data[].assigneeobject or null
data[].historyarray of object
data[].history[].atdate-time
data[].history[].eventone of 10 values, e.g. opened, wallet_frozen, funds_withdrawn (all in the OpenAPI document)
data[].history[].bystring
data[].history[].notestring or null
data[].createdAtdate-time
data[].updatedAtdate-time
data[].versioninteger (at least 1)
has_moreboolean
next_cursordp_… ID or null

Examples

Disputes that need a response

HTTP
GET /api/v1/disputes?status=needs_response
Authorization: Bearer or_test_…

Response (200):

JSON
{
  "object": "list",
  "data": [
    {
      "id": "dp_01m4ttwd3veh9apbewxheq5xb1",
      "object": "dispute",
      "livemode": true,
      "entityId": "ent_01m4ttwd3veh9apbewxheq5xh4",
      "brandId": "brd_01m4ttwd3veh9apbewxheq5xh5",
      "paymentId": "pay_01m4ttwd3veh9apbewxheq5xb2",
      "customerId": "cus_01m4ttwd3veh9apbewxheq5xb3",
      "processor": "stripe",
      "processorConnectionId": "pcon_01m4ttwd3veh9apbewxheq5xb4",
      "processorRef": "dp_1QOwnrecordTest01",
      "reason": "fraudulent",
      "processorStatus": "needs_response",
      "status": "needs_response",
      "inquiry": false,
      "fundsWithdrawnAt": "2026-10-18T08:00:00.000Z",
      "amount": {
        "amount": "12500000",
        "currency": "EUR"
      },
      "fee": {
        "amount": "15000000",
        "currency": "EUR"
      },
      "evidenceDueBy": "2026-10-25T23:59:59.000Z",
      "openedAt": "2026-10-18T08:00:00.000Z",
      "closedAt": null,
      "ledgerTxnIds": ["txn_01m4ttwd3veh9apbewxheq5xb6"],
      "walletFreeze": {
        "walletIds": ["wal_01m4ttwd3veh9apbewxheq5xb5"],
        "frozenAt": "2026-10-18T08:00:00.000Z",
        "unfrozenAt": null
      },
      "walletReversal": {
        "walletId": "wal_01m4ttwd3veh9apbewxheq5xb5",
        "credits": {
          "amount": "10000000",
          "currency": "EUR"
        },
        "restored": null
      },
      "evidence": null,
      "notes": null,
      "assignee": null,
      "history": [
        {
          "at": "2026-10-18T08:00:00.000Z",
          "event": "opened",
          "by": "system",
          "note": null
        },
        {
          "at": "2026-10-18T08:00:00.000Z",
          "event": "wallet_frozen",
          "by": "system",
          "note": "1 wallet"
        },
        {
          "at": "2026-10-18T08:00:00.000Z",
          "event": "funds_withdrawn",
          "by": "system",
          "note": null
        }
      ],
      "createdAt": "2026-10-18T08:00:00.000Z",
      "updatedAt": "2026-10-18T08:00:00.000Z",
      "version": 2
    }
  ],
  "has_more": false,
  "next_cursor": null
}

One customer's disputes

HTTP
GET /api/v1/disputes?customerId=cus_01m4ttwd3veh9apbewxheq5xb3&limit=20
Authorization: Bearer or_test_…

Response (200):

JSON
{
  "object": "list",
  "data": [
    {
      "id": "dp_01m4ttwd3veh9apbewxheq5xb1",
      "object": "dispute",
      "livemode": true,
      "entityId": "ent_01m4ttwd3veh9apbewxheq5xh4",
      "brandId": "brd_01m4ttwd3veh9apbewxheq5xh5",
      "paymentId": "pay_01m4ttwd3veh9apbewxheq5xb2",
      "customerId": "cus_01m4ttwd3veh9apbewxheq5xb3",
      "processor": "stripe",
      "processorConnectionId": "pcon_01m4ttwd3veh9apbewxheq5xb4",
      "processorRef": "dp_1QOwnrecordTest01",
      "reason": "fraudulent",
      "processorStatus": "needs_response",
      "status": "needs_response",
      "inquiry": false,
      "fundsWithdrawnAt": "2026-10-18T08:00:00.000Z",
      "amount": {
        "amount": "12500000",
        "currency": "EUR"
      },
      "fee": {
        "amount": "15000000",
        "currency": "EUR"
      },
      "evidenceDueBy": "2026-10-25T23:59:59.000Z",
      "openedAt": "2026-10-18T08:00:00.000Z",
      "closedAt": null,
      "ledgerTxnIds": ["txn_01m4ttwd3veh9apbewxheq5xb6"],
      "walletFreeze": {
        "walletIds": ["wal_01m4ttwd3veh9apbewxheq5xb5"],
        "frozenAt": "2026-10-18T08:00:00.000Z",
        "unfrozenAt": null
      },
      "walletReversal": {
        "walletId": "wal_01m4ttwd3veh9apbewxheq5xb5",
        "credits": {
          "amount": "10000000",
          "currency": "EUR"
        },
        "restored": null
      },
      "evidence": null,
      "notes": null,
      "assignee": null,
      "history": [
        {
          "at": "2026-10-18T08:00:00.000Z",
          "event": "opened",
          "by": "system",
          "note": null
        },
        {
          "at": "2026-10-18T08:00:00.000Z",
          "event": "wallet_frozen",
          "by": "system",
          "note": "1 wallet"
        },
        {
          "at": "2026-10-18T08:00:00.000Z",
          "event": "funds_withdrawn",
          "by": "system",
          "note": null
        }
      ],
      "createdAt": "2026-10-18T08:00:00.000Z",
      "updatedAt": "2026-10-18T08:00:00.000Z",
      "version": 2
    }
  ],
  "has_more": false,
  "next_cursor": null
}

Errors

CodeHTTP statusWhenWhat to do
validation_failed400A filter or pagination value is invalid.Fix the fields listed in details.issues and send the request again.
permission_denied403You can't see disputes of this brand.Ask an organization owner or admin for a role or scope that allows this action.

It can also return these common errors: api_version_unsupported, authentication_required, api_key_invalid, scope_required, resource_not_found, dry_run_not_supported, rate_limited, internal_error.