import { WhopClient } from "@whop/sdk";
const client = new WhopClient({ token: "YOUR_TOKEN", apiVersionDate: "2026-08-21-1", idempotencyKey: "YOUR_IDEMPOTENCY_KEY" });
await client.disputes.list();
curl --request GET \
--url https://api.whop.com/api/v1/disputes \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.whop.com/api/v1/disputes"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.whop.com/api/v1/disputes', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.whop.com/api/v1/disputes",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.whop.com/api/v1/disputes"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.whop.com/api/v1/disputes")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.whop.com/api/v1/disputes")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"data": [
{
"acceptable": true,
"account_id": "biz_xxxxxxxxxxxxxx",
"amount": 150,
"buyer": {
"email": "marcus@shinetime.example",
"member_id": "mber_xxxxxxxxxxxxxx",
"name": "Dana Whitfield",
"user_id": "user_xxxxxxxxxxxxxx",
"username": "danawhitfield"
},
"created_at": "2026-01-01T12:00:00.000Z",
"currency": "usd",
"evidence": {
"access_activity_log": "Vehicle checked in 2026-01-04 09:02, released 2026-01-05 16:40. Signed release on file.",
"billing_address": "4180 Burnet Rd, Austin, TX 78756, US",
"cancellation_policy_attachment": {
"content_type": "image/png",
"filename": "booking-confirmation-email.png",
"id": "file_xxxxxxxxxxxxxx",
"platform": false,
"url": "https://whop-assets-example.s3.amazonaws.com/uploads/image/2026-01-01/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
},
"cancellation_policy_disclosure": "Shown at checkout and again in the booking confirmation email.",
"customer_communication_attachment": {
"content_type": "image/png",
"filename": "booking-confirmation-email.png",
"id": "file_xxxxxxxxxxxxxx",
"platform": false,
"url": "https://whop-assets-example.s3.amazonaws.com/uploads/image/2026-01-01/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
},
"customer_email_address": "marcus@shinetime.example",
"customer_name": "Dana Whitfield",
"documents": [
{
"blurhash": "LA6bDXT$E3b:R6i+RibEIWbp%ej1",
"content_type": "image/png",
"created_at": "2026-01-01T12:00:00.000Z",
"document_type": "customer_order_history",
"duration_seconds": null,
"filename": "customer-order-history.png",
"height": 100,
"id": "file_xxxxxxxxxxxxxx",
"object": "file",
"removed_by_moderation": false,
"size": 1024,
"upload_status": "ready",
"url": "https://whop-assets-example.s3.amazonaws.com/uploads/image/2026-01-01/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"visibility": "public",
"waveform_url": null,
"width": 100,
"multipart_chunk_size": 123,
"multipart_upload_id": "<string>",
"multipart_upload_urls": [
{
"part_number": 1,
"url": "https://whop-assets-example.s3.amazonaws.com/uploads/2026-01-01/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/application.pdf"
}
],
"upload_headers": {},
"upload_url": "<string>"
}
],
"notes": "Two-day ceramic coating completed and collected. Before and after photos attached.",
"product_description": "Two-stage paint correction with a three-year ceramic coating.",
"refund_policy_attachment": {
"content_type": "image/png",
"filename": "booking-confirmation-email.png",
"id": "file_xxxxxxxxxxxxxx",
"platform": false,
"url": "https://whop-assets-example.s3.amazonaws.com/uploads/image/2026-01-01/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
},
"refund_policy_disclosure": "Linked from the booking page and accepted at checkout.",
"refund_refusal_explanation": "Work was completed and the vehicle collected, so the deposit is non-refundable.",
"service_date": "2026-01-01",
"uncategorized_attachment": {
"content_type": "image/png",
"filename": "booking-confirmation-email.png",
"id": "file_xxxxxxxxxxxxxx",
"platform": false,
"url": "https://whop-assets-example.s3.amazonaws.com/uploads/image/2026-01-01/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}
},
"evidence_due_at": "2026-01-01T12:00:00.000Z",
"evidence_editable": true,
"evidence_locked_reason": "not_contestable",
"evidence_submitted_at": null,
"fee": {
"amount": "-1234.56",
"currency": "usd",
"decimals": 2,
"display_decimals": 2
},
"fee_charged": true,
"id": "dspt_xxxxxxxxxxxxxx",
"inquiry": false,
"issuer_comments": [
{
"received_at": "2026-01-01T12:00:00.000Z",
"text": "Note: Cardholder states the ceramic coating appointment never took place\nCancellation method: By phone"
}
],
"line_items": [
{
"id": "li_xxxxxxxxxxxxxx",
"label": "Ceramic Coating Package",
"product_id": "prod_xxxxxxxxxxxxxx",
"product_title": "Ceramic Coating Package",
"quantity": 1,
"sku": null,
"subtotal": {
"amount": "-1234.56",
"currency": "usd",
"decimals": 2,
"display_decimals": 2
},
"variant_id": "plan_xxxxxxxxxxxxxx",
"variant_title": "Ceramic Coating — Full Vehicle"
}
],
"payment": {
"amount": 249,
"card_brand": "visa",
"card_last4": "4242",
"created_at": "2026-01-01T12:00:00.000Z",
"currency": "usd",
"id": "pay_xxxxxxxxxxxxxx",
"payment_instrument": {
"card": {
"brand": "visa",
"exp_month": 10,
"exp_year": 2031,
"issuer_identification_number": "41111111",
"last4": "4242",
"network_transaction_id": "016153570198200"
},
"display_name": "Visa •••• 4242",
"icons": {
"card": {
"dark": {
"png_1x": "https://content.whop.com/payment_methods/card/icons/card_dark_30.png",
"png_2x": "https://content.whop.com/payment_methods/card/icons/card_dark_60.png",
"png_4x": "https://content.whop.com/payment_methods/card/icons/card_dark_120.png",
"svg": "https://content.whop.com/payment_methods/card/icons/card_dark.svg"
},
"light": {
"png_1x": "https://content.whop.com/payment_methods/card/icons/card_dark_30.png",
"png_2x": "https://content.whop.com/payment_methods/card/icons/card_dark_60.png",
"png_4x": "https://content.whop.com/payment_methods/card/icons/card_dark_120.png",
"svg": "https://content.whop.com/payment_methods/card/icons/card_dark.svg"
}
},
"square": {
"dark": {
"png_1x": "https://content.whop.com/payment_methods/card/icons/card_dark_30.png",
"png_2x": "https://content.whop.com/payment_methods/card/icons/card_dark_60.png",
"png_4x": "https://content.whop.com/payment_methods/card/icons/card_dark_120.png",
"svg": "https://content.whop.com/payment_methods/card/icons/card_dark.svg"
},
"light": {
"png_1x": "https://content.whop.com/payment_methods/card/icons/card_dark_30.png",
"png_2x": "https://content.whop.com/payment_methods/card/icons/card_dark_60.png",
"png_4x": "https://content.whop.com/payment_methods/card/icons/card_dark_120.png",
"svg": "https://content.whop.com/payment_methods/card/icons/card_dark.svg"
}
}
},
"installment_count": null,
"payment_method_type": "card"
},
"payment_method_type": "card",
"payment_processor": null
},
"product_id": "prod_xxxxxxxxxxxxxx",
"reason": "other",
"reason_code": "13.1",
"status": "needs_response",
"updated_at": "2026-01-01T12:00:00.000Z",
"variant_id": "plan_xxxxxxxxxxxxxx"
}
],
"page_info": {
"end_cursor": null,
"has_next_page": false,
"has_previous_page": false,
"start_cursor": "WyJjdXJzb3IiLDFd"
}
}{
"error": {
"message": "account_id is required",
"type": "bad_request",
"code": "<string>"
}
}{
"error": {
"message": "account_id is required",
"type": "bad_request",
"code": "<string>"
}
}{
"error": {
"message": "account_id is required",
"type": "bad_request",
"code": "<string>"
}
}List Disputes
Lists the disputes across the accounts you can read.
import { WhopClient } from "@whop/sdk";
const client = new WhopClient({ token: "YOUR_TOKEN", apiVersionDate: "2026-08-21-1", idempotencyKey: "YOUR_IDEMPOTENCY_KEY" });
await client.disputes.list();
curl --request GET \
--url https://api.whop.com/api/v1/disputes \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.whop.com/api/v1/disputes"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.whop.com/api/v1/disputes', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.whop.com/api/v1/disputes",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.whop.com/api/v1/disputes"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.whop.com/api/v1/disputes")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.whop.com/api/v1/disputes")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"data": [
{
"acceptable": true,
"account_id": "biz_xxxxxxxxxxxxxx",
"amount": 150,
"buyer": {
"email": "marcus@shinetime.example",
"member_id": "mber_xxxxxxxxxxxxxx",
"name": "Dana Whitfield",
"user_id": "user_xxxxxxxxxxxxxx",
"username": "danawhitfield"
},
"created_at": "2026-01-01T12:00:00.000Z",
"currency": "usd",
"evidence": {
"access_activity_log": "Vehicle checked in 2026-01-04 09:02, released 2026-01-05 16:40. Signed release on file.",
"billing_address": "4180 Burnet Rd, Austin, TX 78756, US",
"cancellation_policy_attachment": {
"content_type": "image/png",
"filename": "booking-confirmation-email.png",
"id": "file_xxxxxxxxxxxxxx",
"platform": false,
"url": "https://whop-assets-example.s3.amazonaws.com/uploads/image/2026-01-01/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
},
"cancellation_policy_disclosure": "Shown at checkout and again in the booking confirmation email.",
"customer_communication_attachment": {
"content_type": "image/png",
"filename": "booking-confirmation-email.png",
"id": "file_xxxxxxxxxxxxxx",
"platform": false,
"url": "https://whop-assets-example.s3.amazonaws.com/uploads/image/2026-01-01/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
},
"customer_email_address": "marcus@shinetime.example",
"customer_name": "Dana Whitfield",
"documents": [
{
"blurhash": "LA6bDXT$E3b:R6i+RibEIWbp%ej1",
"content_type": "image/png",
"created_at": "2026-01-01T12:00:00.000Z",
"document_type": "customer_order_history",
"duration_seconds": null,
"filename": "customer-order-history.png",
"height": 100,
"id": "file_xxxxxxxxxxxxxx",
"object": "file",
"removed_by_moderation": false,
"size": 1024,
"upload_status": "ready",
"url": "https://whop-assets-example.s3.amazonaws.com/uploads/image/2026-01-01/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"visibility": "public",
"waveform_url": null,
"width": 100,
"multipart_chunk_size": 123,
"multipart_upload_id": "<string>",
"multipart_upload_urls": [
{
"part_number": 1,
"url": "https://whop-assets-example.s3.amazonaws.com/uploads/2026-01-01/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/application.pdf"
}
],
"upload_headers": {},
"upload_url": "<string>"
}
],
"notes": "Two-day ceramic coating completed and collected. Before and after photos attached.",
"product_description": "Two-stage paint correction with a three-year ceramic coating.",
"refund_policy_attachment": {
"content_type": "image/png",
"filename": "booking-confirmation-email.png",
"id": "file_xxxxxxxxxxxxxx",
"platform": false,
"url": "https://whop-assets-example.s3.amazonaws.com/uploads/image/2026-01-01/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
},
"refund_policy_disclosure": "Linked from the booking page and accepted at checkout.",
"refund_refusal_explanation": "Work was completed and the vehicle collected, so the deposit is non-refundable.",
"service_date": "2026-01-01",
"uncategorized_attachment": {
"content_type": "image/png",
"filename": "booking-confirmation-email.png",
"id": "file_xxxxxxxxxxxxxx",
"platform": false,
"url": "https://whop-assets-example.s3.amazonaws.com/uploads/image/2026-01-01/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}
},
"evidence_due_at": "2026-01-01T12:00:00.000Z",
"evidence_editable": true,
"evidence_locked_reason": "not_contestable",
"evidence_submitted_at": null,
"fee": {
"amount": "-1234.56",
"currency": "usd",
"decimals": 2,
"display_decimals": 2
},
"fee_charged": true,
"id": "dspt_xxxxxxxxxxxxxx",
"inquiry": false,
"issuer_comments": [
{
"received_at": "2026-01-01T12:00:00.000Z",
"text": "Note: Cardholder states the ceramic coating appointment never took place\nCancellation method: By phone"
}
],
"line_items": [
{
"id": "li_xxxxxxxxxxxxxx",
"label": "Ceramic Coating Package",
"product_id": "prod_xxxxxxxxxxxxxx",
"product_title": "Ceramic Coating Package",
"quantity": 1,
"sku": null,
"subtotal": {
"amount": "-1234.56",
"currency": "usd",
"decimals": 2,
"display_decimals": 2
},
"variant_id": "plan_xxxxxxxxxxxxxx",
"variant_title": "Ceramic Coating — Full Vehicle"
}
],
"payment": {
"amount": 249,
"card_brand": "visa",
"card_last4": "4242",
"created_at": "2026-01-01T12:00:00.000Z",
"currency": "usd",
"id": "pay_xxxxxxxxxxxxxx",
"payment_instrument": {
"card": {
"brand": "visa",
"exp_month": 10,
"exp_year": 2031,
"issuer_identification_number": "41111111",
"last4": "4242",
"network_transaction_id": "016153570198200"
},
"display_name": "Visa •••• 4242",
"icons": {
"card": {
"dark": {
"png_1x": "https://content.whop.com/payment_methods/card/icons/card_dark_30.png",
"png_2x": "https://content.whop.com/payment_methods/card/icons/card_dark_60.png",
"png_4x": "https://content.whop.com/payment_methods/card/icons/card_dark_120.png",
"svg": "https://content.whop.com/payment_methods/card/icons/card_dark.svg"
},
"light": {
"png_1x": "https://content.whop.com/payment_methods/card/icons/card_dark_30.png",
"png_2x": "https://content.whop.com/payment_methods/card/icons/card_dark_60.png",
"png_4x": "https://content.whop.com/payment_methods/card/icons/card_dark_120.png",
"svg": "https://content.whop.com/payment_methods/card/icons/card_dark.svg"
}
},
"square": {
"dark": {
"png_1x": "https://content.whop.com/payment_methods/card/icons/card_dark_30.png",
"png_2x": "https://content.whop.com/payment_methods/card/icons/card_dark_60.png",
"png_4x": "https://content.whop.com/payment_methods/card/icons/card_dark_120.png",
"svg": "https://content.whop.com/payment_methods/card/icons/card_dark.svg"
},
"light": {
"png_1x": "https://content.whop.com/payment_methods/card/icons/card_dark_30.png",
"png_2x": "https://content.whop.com/payment_methods/card/icons/card_dark_60.png",
"png_4x": "https://content.whop.com/payment_methods/card/icons/card_dark_120.png",
"svg": "https://content.whop.com/payment_methods/card/icons/card_dark.svg"
}
}
},
"installment_count": null,
"payment_method_type": "card"
},
"payment_method_type": "card",
"payment_processor": null
},
"product_id": "prod_xxxxxxxxxxxxxx",
"reason": "other",
"reason_code": "13.1",
"status": "needs_response",
"updated_at": "2026-01-01T12:00:00.000Z",
"variant_id": "plan_xxxxxxxxxxxxxx"
}
],
"page_info": {
"end_cursor": null,
"has_next_page": false,
"has_previous_page": false,
"start_cursor": "WyJjdXJzb3IiLDFd"
}
}{
"error": {
"message": "account_id is required",
"type": "bad_request",
"code": "<string>"
}
}{
"error": {
"message": "account_id is required",
"type": "bad_request",
"code": "<string>"
}
}{
"error": {
"message": "account_id is required",
"type": "bad_request",
"code": "<string>"
}
}Authorizations
An Account API key, an App API key, an account access token, an account-scoped user token, or a user OAuth token. Prepend the key or token with Bearer, for example Bearer ***************************. See Auth & API keys for how to get each one.
Headers
Pins the request to a dated API version.
"2026-11-02-1"
Query Parameters
Only disputes filed against this account (biz_ tag). Omit it to cover every account you can read.
Number of results to return from the start of the range.
x <= 100Return results after this cursor. Use page_info.end_cursor from the previous response to fetch the next page.
Number of results to return from the end of the range.
x <= 100Return results before this cursor. Use page_info.start_cursor from the previous response to fetch the previous page.
The field to sort disputes by.
created_at, amount, evidence_due_at Sort direction.
asc, desc Only disputes in these statuses. Repeat the parameter to pass several — one paginated list covers all of them. Inquiries match only the warning_ statuses. A needs_response dispute whose evidence deadline has passed reports and filters as under_review instead.
needs_response, warning_needs_response, under_review, warning_under_review, won, lost, prevented, warning_closed Only disputes in this three-letter ISO currency.
Only disputes opened before this ISO 8601 timestamp.
Only disputes opened after this ISO 8601 timestamp.
Search disputes by dispute ID, payment ID, user ID, membership ID, user email, name, or username. Email filtering requires the member:email:read permission.
Also cover the account's connected accounts. Requires account_id, and is a 400 without it. Without query, covers the disputes of the account and every connected account, in any order. The listing is cut off after 10 seconds; add a query to narrow it. With query, matches on dispute, payment, user or membership ID, buyer email, or a card's first 6 or 8 digits and last 4 separated by a space or dash (424242 4242); free-text queries such as a name search only the named account. Connected accounts' disputes are returned only for connected accounts you can read disputes on.

