a84d4905fdbb

latestOpenAPI 3.1.02026-08-143874115.7 MB
Resolution Center Cases

Reply to a Case

Replies to an open request for information on the case. As the merchant this answers Whop's request (valid while the case awaits your information); as the customer it provides the information requested from you. The actor is resolved from the credential.

post/resolution_center_cases/{id}/reply

Headers

Api-Version-Datestring
Example:2026-08-13

Pins the request to a dated API version.

Idempotency-Keystring
Example:d9105228-4a08-46b1-8b91-42fed586d383

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

Request body

messagestring required

The reply to add to the case.

Example request

{
  "attachments": [
    {
      "direct_upload_id": "eyJfcmFpbHMiOnsiZGF0YSI6MSwicHVyIjoiYmxvYl9pZCJ9fQ==--xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
      "id": "file_xxxxxxxxxxxxxx"
    }
  ],
  "message": "Here are the before and after photos from the Burnet Rd bay."
}

Response

reply added

amountnumber required

The amount in question, in whole units of currency.

available_actionsstring[] required
created_atstring required

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

currencystring nullable required

Three-letter ISO currency code of the amount.

customer_appealedboolean required

Whether the customer has appealed a decision on this case.

escalatedboolean required

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

idstring required

Resolution center case ID, prefixed reso_.

outcome'customer_won' | 'merchant_won' | 'withdrawn' | 'null' nullable required

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

plan_idstring nullable required

The plan the payment was made on, prefixed plan_.

product_idstring nullable required

The product the payment was for, prefixed prod_.

reason'fraudulent' | 'product_not_received' | 'not_as_described' | 'product_unacceptable' | 'subscription_canceled' required

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

refund'none' | 'merchant' | 'platform' | 'null' nullable 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.

response_due_atstring nullable required

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

status'awaiting_merchant' | 'awaiting_customer' | 'under_review' | 'closed' 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.

updated_atstring required

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

Example response

{
  "account": {
    "id": "biz_xxxxxxxxxxxxxx",
    "title": "Shine Time Auto Detailing"
  },
  "amount": 249,
  "available_actions": [
    "accept"
  ],
  "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",
  "id": "reso_xxxxxxxxxxxxxx",
  "outcome": "merchant_won",
  "payment": {
    "card_brand": "visa",
    "card_last4": "4242",
    "created_at": "2026-01-01T12:00:00.000Z",
    "id": "pay_xxxxxxxxxxxxxx",
    "payment_method_type": "card"
  },
  "plan_id": "plan_xxxxxxxxxxxxxx",
  "product_id": "prod_xxxxxxxxxxxxxx",
  "reason": "product_not_received",
  "refund": "none",
  "response_due_at": "2026-01-01T12:00:00.000Z",
  "status": "closed",
  "updated_at": "2026-01-01T12:00:00.000Z"
}