---
title: "List Disputes"
method: GET
path: "/disputes"
tags: ["Disputes"]
---

# List Disputes

`GET /disputes`

Lists the disputes across the accounts you can read.

## Query parameters

- `account_id` string
- `first` integer
- `after` string
- `last` integer
- `before` string
- `order` 'created_at' | 'amount' | 'evidence_due_at'
- `direction` 'asc' | 'desc'
- `status` string[]
- `currency` string
- `created_before` string
- `created_after` string

## Headers

- `Api-Version-Date` string

## Response `200`

disputes listed

- object
  - `data` Dispute[], required
    - `account_id` string, nullable, required — The account the dispute was filed against, prefixed `biz_`.
    - `amount` number, required — The disputed amount, in whole units of `currency`.
    - `buyer` DisputeBuyer, required
      - `email` string, nullable, required — The customer's email address. Requires the `member:email:read` scope; `null` without it.
      - `member_id` string, nullable, required — The customer's member row on the account, prefixed `mem_`.
      - `name` string, nullable, required — The customer's display name.
      - `user_id` string, nullable, required — The customer's user ID, prefixed `user_`. `null` for a guest checkout.
      - `username` string, nullable, required — The customer's Whop username.
    - `created_at` string, required — When the dispute was opened, as an ISO 8601 timestamp.
    - `currency` string, required — Three-letter ISO currency code of the disputed amount.
    - `evidence` DisputeEvidence, required
      - `access_activity_log` string, nullable, required — Log of the customer's access to the product, such as sign-in or download activity.
      - `billing_address` string, nullable, required — The billing address the customer provided at checkout.
      - `cancellation_policy_attachment` DisputeAttachment, required
        - `content_type` string, nullable, required — The uploaded file's MIME type.
        - `filename` string, nullable, required — The uploaded file's name.
        - `id` string, nullable, required — The attachment's ID. `null` for a Whop-hosted policy, which is not an uploaded file.
        - `platform` boolean, required — Whether this is Whop's own hosted policy, standing in because the seller uploaded none. Sending it back on a PATCH changes nothing.
        - `url` string, nullable, required — A URL to download the attachment.
      - `cancellation_policy_disclosure` string, nullable, required — How the cancellation policy was shown to the customer before purchase.
      - `customer_communication_attachment` DisputeAttachment, required
        - `content_type` string, nullable, required — The uploaded file's MIME type.
        - `filename` string, nullable, required — The uploaded file's name.
        - `id` string, nullable, required — The attachment's ID. `null` for a Whop-hosted policy, which is not an uploaded file.
        - `platform` boolean, required — Whether this is Whop's own hosted policy, standing in because the seller uploaded none. Sending it back on a PATCH changes nothing.
        - `url` string, nullable, required — A URL to download the attachment.
      - `customer_email_address` string, nullable, required — The email address the customer used at checkout.
      - `customer_name` string, nullable, required — The customer's name as given at checkout.
      - `documents` DisputeEvidenceDocument[], required
        - `content_type` 'application/pdf' | 'application/json' | 'image/jpeg' | 'image/png' | 'image/webp' | 'null', nullable, required — The uploaded file's MIME type. Uploads are restricted to the types the processor accepts, and rejected without one — never null.
        - `created_at` string, required — When the file was created, as an ISO 8601 timestamp.
        - `document_type` 'return_policy' | 'shipping_policy' | 'cancellation_policy' | 'terms_of_service' | 'physical_fulfillment' | 'customer_order_history' | 'product_image' | 'prior_transactions' | 'customer_session' | 'digital_fulfillment' | 'subscription' | 'customer_communication', required — What this document proves, in the processor's own evidence vocabulary. `return_policy`, `cancellation_policy`, and `terms_of_service` are the seller's policy documents — uploading one overrides the account's copy for this dispute (`return_policy`, `cancellation_policy`, and `customer_communication` also override the matching fixed evidence slot). `shipping_policy` is the seller's shipping terms. `customer_communication` is correspondence with the buyer — a support thread or chat log. `product_image` is a photo of the product or service the buyer received. `physical_fulfillment` is proof a physical order shipped and arrived; `digital_fulfillment` is proof the buyer accessed a digital product. `customer_order_history` is the buyer's past orders with this seller; `prior_transactions` is their broader payment history across the platform, for a fraud defense. `customer_session` is checkout forensics — IP, device fingerprint, AVS/CVV, 3D Secure result. `subscription` is membership lifecycle evidence — renewals, cancellation, reminders sent.
        - `filename` string, nullable, required — The original filename, including its extension.
        - `id` string, required — The file's ID, prefixed `file_`.
        - `multipart_chunk_size` integer, nullable — The byte size each part (except the last) must be. Present only on create, and only for multipart uploads.
        - `multipart_upload_id` string, nullable — The ID of the multipart upload, passed back to `complete`. Present only on create, and only for multipart uploads.
        - `multipart_upload_urls` FileMultipartUrl[], nullable
          - `part_number` integer, required — The 1-based index of this part within the multipart upload.
          - `url` string, required — The presigned URL to PUT this part's bytes to.
        - `object` string, required — The type of this object, always `file`.
        - `size` integer, nullable, required — The file size in bytes. `null` until the upload has finished.
        - `upload_headers` object — Headers to send with the upload PUT. Present only on create.
        - `upload_status` 'pending' | 'processing' | 'ready' | 'failed', required — Where the file is in its upload lifecycle.
        - `upload_url` string, nullable — Presigned URL to PUT the file's bytes to. Present only on create, and only for single-part uploads.
        - `url` string, nullable, required — A URL to download the file: a permanent CDN URL for public files, a signed expiring URL for private ones. `null` until the upload has finished.
        - `visibility` 'public' | 'private', required — `public` files are served via an unsigned CDN URL; `private` files via a signed, expiring URL.
      - `notes` string, nullable, required — Any additional context for the processor reviewing the dispute.
      - `product_description` string, nullable, required — What the customer purchased, in the seller's own words.
      - `refund_policy_attachment` DisputeAttachment, required
        - `content_type` string, nullable, required — The uploaded file's MIME type.
        - `filename` string, nullable, required — The uploaded file's name.
        - `id` string, nullable, required — The attachment's ID. `null` for a Whop-hosted policy, which is not an uploaded file.
        - `platform` boolean, required — Whether this is Whop's own hosted policy, standing in because the seller uploaded none. Sending it back on a PATCH changes nothing.
        - `url` string, nullable, required — A URL to download the attachment.
      - `refund_policy_disclosure` string, nullable, required — How the refund policy was shown to the customer before purchase.
      - `refund_refusal_explanation` string, nullable, required — Why a refund was refused, when one was requested and denied.
      - `service_date` string, nullable, required — When the product or service was delivered.
      - `uncategorized_attachment` DisputeAttachment, required
        - `content_type` string, nullable, required — The uploaded file's MIME type.
        - `filename` string, nullable, required — The uploaded file's name.
        - `id` string, nullable, required — The attachment's ID. `null` for a Whop-hosted policy, which is not an uploaded file.
        - `platform` boolean, required — Whether this is Whop's own hosted policy, standing in because the seller uploaded none. Sending it back on a PATCH changes nothing.
        - `url` string, nullable, required — A URL to download the attachment.
    - `evidence_due_at` string, nullable, required — The deadline to submit evidence, as an ISO 8601 timestamp. `null` when the network already auto-resolved the dispute (Visa RDR) with no evidence round, or when the processor hasn't reported a deadline for this dispute.
    - `evidence_editable` boolean, required — Whether `evidence` can still be changed and submitted.
    - `evidence_locked_reason` 'submitted' | 'response_window_closed' | 'not_contestable' | 'null', nullable, required — Why evidence can no longer be edited. `null` while `evidence_editable` is true.
    - `evidence_submitted_at` string, nullable, required — When the evidence was submitted to the processor, as an ISO 8601 timestamp.
    - `id` string, required — Dispute ID, prefixed `dspt_`.
    - `inquiry` boolean, required — Whether this is a pre-dispute inquiry rather than a formal chargeback. Inquiries follow the same lifecycle but move no funds unless one escalates.
    - `issuer_comments` DisputeIssuerComment[], required
      - `received_at` string, nullable, required — When the comment was received, as an ISO 8601 timestamp.
      - `text` string, required — What the issuer wrote, as received.
    - `line_items` ReceiptLineItem[], required
      - `id` string, nullable, required — Line item ID, prefixed `li_`. Null when the payment predates item snapshots and the item is read from the payment's plan.
      - `label` string, nullable, required — The item's name as shown at checkout — the product title, else the plan title.
      - `plan_id` string, nullable, required — The plan bought, prefixed `plan_`. Null when the plan has since been deleted.
      - `plan_title` string, nullable, required — The plan's current title, or `null` when the plan has been deleted or has no title.
      - `product_id` string, nullable, required — The product the plan belongs to, prefixed `prod_`. On a payment that predates item snapshots this falls back to the plan's product, so it can be set where the parent's own `product_id` is null. Null for a plan with no product.
      - `product_title` string, nullable, required — The product's current title, or `null` when the item has no product.
      - `quantity` number, required — How many units were bought.
      - `subtotal` Money, required
        - `amount` string, required — The amount in major units, as an exact decimal string — `"10.00"` is ten dollars. A string so no float rounds it in transit.
        - `currency` string, required — Three-letter ISO 4217 currency code, lowercase.
        - `decimals` integer, required — How many decimal places the amount CARRIES — the precision the charge itself runs at.
        - `display_decimals` integer, required — How many decimal places to SHOW. Usually equal to `decimals`, and deliberately not always: COP is charged in centavos but written in whole pesos, so it is `2` and `0`. Format the number in your own locale using this.
    - `payment` DisputePayment, required
      - `amount` number, nullable, required — What the customer was charged, in whole units of the payment's currency.
      - `card_brand` string, nullable, required — Card brand, when the customer paid by card.
      - `card_last4` string, nullable, required — Last four digits of the card, when the customer paid by card.
      - `created_at` string, required — When the payment was made, as an ISO 8601 timestamp.
      - `currency` string, nullable, required — Three-letter ISO currency code of the payment. Can differ from the dispute's currency when the processor settles in another currency.
      - `id` string, required — Payment ID, prefixed `pay_`.
      - `payment_instrument` PaymentInstrument, required
        - `card` PaymentInstrumentCard, required
          - `brand` string, nullable, required — The network identifier (`visa`, `amex`, …), matching `card.networks` entries and saved card payment methods. Null when the vault did not record the network.
          - `exp_month` number, nullable, required — The card's expiry month, 1 to 12. Null when the vault did not record it.
          - `exp_year` number, nullable, required — The card's four-digit expiry year. Null when the vault did not record it.
          - `issuer_identification_number` string, nullable, required — The issuer identification number, also called the BIN: the card's leading six or eight digits, which identify the issuing bank. Null when the processor did not report it.
          - `last4` string, nullable, required — The card's last four digits, when captured.
        - `display_name` string, required — Buyer-facing instrument name — "Visa •••• 4242" when the card surfaced, else the method's own name ("Klarna").
        - `icons` PaymentMethodIcons, required
          - `card` PaymentMethodIconVariants, required
            - `dark` PaymentMethodIconFiles, required
              - …
            - `light` PaymentMethodIconFiles, required
              - …
          - `square` PaymentMethodIconVariants, required
            - `dark` PaymentMethodIconFiles, required
              - …
            - `light` PaymentMethodIconFiles, required
              - …
        - `installment_count` number, nullable, required — Installment methods only: how many payments the charge splits into. Data, not copy — compose and translate the label client-side.
        - `payment_method_type` string, required — The payment method type identifier, e.g. `card`, `klarna`, `apple_pay`.
      - `payment_method_type` string, nullable, required — How the customer paid, such as `card` or `paypal`.
      - `payment_processor` string, nullable, required — Deprecated: no longer populated. Always `null`. DEPRECATED: No longer populated. Always null.
    - `plan_id` string, nullable, required — The plan the disputed payment was made on, prefixed `plan_`.
    - `product_id` string, nullable, required — The product the disputed payment was for, prefixed `prod_`.
    - `reason` 'fraudulent' | 'unrecognized' | 'declined_authorization' | 'product_not_received' | 'product_unacceptable' | 'subscription_canceled' | 'credit_not_processed' | 'duplicate' | 'processing_error' | 'documentation_request' | 'bank_cannot_process' | 'other', required — Why the customer says they are disputing, normalized across processors and card networks. `other` covers a processor reason Whop has not categorized yet.
    - `reason_code` string, nullable, required — The raw card-network or processor reason code, such as `10.4`. Informational only — `reason` is not derived from it.
    - `status` 'needs_response' | 'under_review' | 'won' | 'lost' | 'closed', required — Where the dispute stands. `needs_response` is awaiting evidence, `under_review` is with the processor, `won` returned the funds to the seller, `lost` returned them to the customer, and `closed` ended without a ruling. A dispute past its `evidence_due_at` reports `under_review` — the window to respond has closed.
    - `updated_at` string, required — When the dispute was last changed, as an ISO 8601 timestamp.
  - `page_info` object, required
    - `end_cursor` string, nullable, required
    - `has_next_page` boolean, required
    - `has_previous_page` boolean, required
    - `start_cursor` string, nullable, required

## Other responses

- `400` — Invalid Parameters
- `401` — Unauthorized
- `403` — Forbidden

## Changes

> 69 revisions in range; 1 not diffed.

- **2026-09-23** `140d015b9966` — 4 breaking, 3 warning, 16 info
  - the `data/items/buyer` response's property type changed from no type to `object` for status `200`
  - the `data/items/payment` response's property type changed from no type to `object` for status `200`
  - removed the required property `data/items/generated_response_attachment` from the response with the `200` status
  - removed the required property `data/items/rapid_dispute_resolution` from the response with the `200` status
  - …19 more
- **2026-09-16** `ff3a76573563` — 1 breaking, 2 warning
  - for the `query` request parameter `first`, default value `20` was added
  - for the `query` request parameter `first`, the max was set to `100.00`
  - for the `query` request parameter `last`, the max was set to `100.00`
- **2026-09-10** `2a25564a92d5` — 1 info
  - added the required property `data/items/line_items` to the response with the `200` status
- **2026-09-09** `18cde81b6763` — 1 info
  - added the required property `data/items/payment/oneOf[#/components/schemas/DisputePayment]/payment_instrument/oneOf[#/components/schemas/PaymentInstrument]/card/oneOf[#/components/schemas/PaymentInstrumentCard]/issuer_identification_number` to the response with the `200` status
- …earlier changes not shown

[Full history](https://skmtc.dev/whop/apis/whop-api/changes/disputes/get.md)

---

[API](https://skmtc.dev/whop/apis/whop-api.md) · [All operations](https://skmtc.dev/whop/apis/whop-api/llms.txt) · [OpenAPI document](https://skmtc.dev/whop/apis/whop-api/revisions/140d015b9966?raw)
