Skip to main content
POST
JavaScript

Authorizations

Authorization
string
header
required

A company API key, company scoped JWT, app API key, or user OAuth token. You must prepend your key/token with the word 'Bearer', which will look like Bearer ***************************

Headers

Api-Version-Date
string

Pins the request to a dated API version.

Example:

"2026-07-27"

Idempotency-Key
string

A unique key that makes this request safe to retry. See Idempotent requests.

Maximum string length: 255
Example:

"d9105228-4a08-46b1-8b91-42fed586d383"

Path Parameters

id
string
required

The resolution center case ID (reso_ tag).

Body

application/json
message
string
required

Why the claim is being denied. Shown to the customer.

attachments
object[]

Up to 3 evidence files, by existing file id or direct_upload_id.

Response

case denied

account
object | null
required

The account the case was filed against.

amount
number
required

The amount in question, in whole units of currency.

available_actions
enum<string>[]
required

What you can do to this case right now, named for the endpoint that does it. Resolved for the calling credential, so a merchant and a customer reading the same case see their own options.

Available options:
accept,
deny,
request_info,
reply,
appeal,
withdraw
buyer
object
required

The customer who opened the case.

created_at
string
required

When the case was opened, as an ISO 8601 timestamp.

currency
string | null
required

Three-letter ISO currency code of the amount.

customer_appealed
boolean
required

Whether the customer has appealed a decision on this case.

escalated
boolean
required

Whether Whop is involved — either reviewing the case, or waiting on the side named by status for something it asked for while reviewing.

id
string
required

Resolution center case ID, prefixed reso_.

outcome
enum<string> | null
required

Who prevailed on the claim. null until the case closes. Read refund for whether any money actually moved.

Available options:
customer_won,
merchant_won,
withdrawn,
null
Example:

"customer_won"

payment
object
required

The payment the case was opened against.

plan_id
string | null
required

The plan the payment was made on, prefixed plan_.

product_id
string | null
required

The product the payment was for, prefixed prod_.

reason
enum<string>
required

What the customer says went wrong. Shares the /disputes vocabulary, so a case that later becomes a chargeback reports the same complaint.

Available options:
fraudulent,
product_not_received,
not_as_described,
product_unacceptable,
subscription_canceled
Example:

"fraudulent"

refund
enum<string> | null
required

Whether money moved and off whose balance: none, merchant, or platform (Whop refunded the customer and the merchant kept the funds). Independent of outcome — a case the merchant won can still carry a platform refund. null while the case is open, and on older closed cases that predate this being recorded.

Available options:
none,
merchant,
platform,
null
Example:

"none"

response_due_at
string | null
required

When the next response is due, as an ISO 8601 timestamp.

status
enum<string>
required

Who the case is waiting on. awaiting_merchant and awaiting_customer name the side that owes a response, under_review means Whop is deciding, and closed means it is settled — read outcome for how.

Available options:
awaiting_merchant,
awaiting_customer,
under_review,
closed
Example:

"awaiting_merchant"

updated_at
string
required

When the case was last changed, as an ISO 8601 timestamp.