Disputes

Submit evidence

Submit a payment dispute to the payment processor for review. Once submitted, no further edits can be made.

Required permissions:

  • payment:dispute
  • plan:basic:read
  • access_pass:basic:read
  • company:basic:read
  • payment:basic:read
  • member:email:read
  • member:basic:read
  • member:phone:read
post/disputes/{id}/submit_evidence

Path parameters

idstring required
Example:dspt_xxxxxxxxxxxxx

The unique identifier of the dispute to submit to the payment processor for review.

Response

A successful response

account_idstring nullable required

The account the dispute was filed against, prefixed biz_.

amountnumber required

The disputed amount, in whole units of currency.

created_atstring required

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

currencystring required

Three-letter ISO currency code of the disputed amount.

evidence_due_atstring nullable required

The deadline to submit evidence, as an ISO 8601 timestamp. Whop reserves the last 24 hours before the processor's own cutoff to forward the submission.

evidence_editableboolean 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_atstring nullable required

When the evidence was submitted to the processor, as an ISO 8601 timestamp.

idstring required

Dispute ID, prefixed dspt_.

inquiryboolean 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.

plan_idstring nullable required

The plan the disputed payment was made on, prefixed plan_.

product_idstring nullable required

The product the disputed payment was for, prefixed prod_.

rapid_dispute_resolutionboolean required

Whether Visa Rapid Dispute Resolution settled this automatically. These refund the customer without an evidence round.

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 card networks. other covers a code Whop has not categorized yet — read reason_code for the raw value.

reason_codestring nullable required

The raw card-network or processor reason code, such as 10.4.

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_atstring required

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

Example response

{
  "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",
      "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",
      "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": [
      {
        "content_type": "image/png",
        "created_at": "2026-01-01T12:00:00.000Z",
        "document_type": "customer_order_history",
        "filename": "customer-order-history.png",
        "id": "file_xxxxxxxxxxxxxx",
        "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"
          }
        ],
        "object": "file",
        "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"
      }
    ],
    "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",
      "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",
      "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_locked_reason": "submitted",
  "evidence_submitted_at": "2026-01-01T12:00:00.000Z",
  "generated_response_attachment": {
    "content_type": "image/png",
    "filename": "booking-confirmation-email.png",
    "id": "file_xxxxxxxxxxxxxx",
    "url": "https://whop-assets-example.s3.amazonaws.com/uploads/image/2026-01-01/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
  },
  "id": "dspt_xxxxxxxxxxxxxx",
  "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"
    }
  ],
  "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",
        "last4": "4242"
      },
      "display_name": "Visa •••• 4242",
      "icons": {
        "card": {
          "dark": {
            "png_1x": "https://content.whop.com/payment_methods/visa/icons/card_dark_30.png",
            "png_2x": "https://content.whop.com/payment_methods/visa/icons/card_dark_60.png",
            "png_4x": "https://content.whop.com/payment_methods/visa/icons/card_dark_120.png",
            "svg": "https://content.whop.com/payment_methods/visa/icons/card_dark.svg"
          },
          "light": {
            "png_1x": "https://content.whop.com/payment_methods/visa/icons/card_dark_30.png",
            "png_2x": "https://content.whop.com/payment_methods/visa/icons/card_dark_60.png",
            "png_4x": "https://content.whop.com/payment_methods/visa/icons/card_dark_120.png",
            "svg": "https://content.whop.com/payment_methods/visa/icons/card_dark.svg"
          }
        },
        "square": {
          "dark": {
            "png_1x": "https://content.whop.com/payment_methods/visa/icons/card_dark_30.png",
            "png_2x": "https://content.whop.com/payment_methods/visa/icons/card_dark_60.png",
            "png_4x": "https://content.whop.com/payment_methods/visa/icons/card_dark_120.png",
            "svg": "https://content.whop.com/payment_methods/visa/icons/card_dark.svg"
          },
          "light": {
            "png_1x": "https://content.whop.com/payment_methods/visa/icons/card_dark_30.png",
            "png_2x": "https://content.whop.com/payment_methods/visa/icons/card_dark_60.png",
            "png_4x": "https://content.whop.com/payment_methods/visa/icons/card_dark_120.png",
            "svg": "https://content.whop.com/payment_methods/visa/icons/card_dark.svg"
          }
        }
      },
      "payment_method_type": "card"
    },
    "payment_method_type": "card",
    "payment_processor": "stripe"
  },
  "plan_id": "plan_xxxxxxxxxxxxxx",
  "product_id": "prod_xxxxxxxxxxxxxx",
  "reason": "other",
  "reason_code": "13.1",
  "status": "under_review",
  "updated_at": "2026-01-01T12:00:00.000Z"
}

Changes

Changed in 6 of the 41 revisions of this API.3812121

    • added the optional property evidence/documents/items/multipart_chunk_size to the response with the 200 status

      response-optional-property-added

    • added the optional property evidence/documents/items/multipart_upload_id to the response with the 200 status

      response-optional-property-added

    • added the optional property evidence/documents/items/multipart_upload_urls to the response with the 200 status

      response-optional-property-added

    • added the optional property evidence/documents/items/upload_headers to the response with the 200 status

      response-optional-property-added

    • added the optional property evidence/documents/items/upload_url to the response with the 200 status

      response-optional-property-added

    • added the required property evidence/documents/items/created_at to the response with the 200 status

      response-required-property-added

    • added the required property evidence/documents/items/object to the response with the 200 status

      response-required-property-added

    • added the required property evidence/documents/items/size to the response with the 200 status

      response-required-property-added

    • added the required property evidence/documents/items/upload_status to the response with the 200 status

      response-required-property-added

    • added the required property evidence/documents/items/visibility to the response with the 200 status

      response-required-property-added

    • added the required property evidence/documents to the response with the 200 status

      response-required-property-added

    • added the required property generated_response_attachment to the response with the 200 status

      response-required-property-added

    This revision also has 1 change that name no endpoint, such as unreferenced schemas being removed. See the revision's changelog

    • added the required property payment/oneOf[DisputePayment]/payment_instrument to the response with the 200 status

      response-required-property-added

    • added the required property issuer_comments to the response with the 200 status

      response-required-property-added

    This revision also has 4 changes that name no endpoint, such as unreferenced schemas being removed. See the revision's changelog

  • 60bbb4a6ffbc3812107See the full diff
    • added DisputePayment subschema #2 to the payment response property oneOf list for the response status 200

      response-property-one-of-added

    • the created_at response's property type/format changed from string null/date-time to string/ for status 200

      response-property-type-changed

    • the payment response's property type/format changed from object null/ to / for status 200

      response-property-type-changed

    • removed the required property access_activity_log from the response with the 200 status

      response-required-property-removed

    • removed the required property billing_address from the response with the 200 status

      response-required-property-removed

    • removed the required property cancellation_policy_attachment from the response with the 200 status

      response-required-property-removed

    • removed the required property cancellation_policy_disclosure from the response with the 200 status

      response-required-property-removed

    • removed the required property company from the response with the 200 status

      response-required-property-removed

    • removed the required property customer_communication_attachment from the response with the 200 status

      response-required-property-removed

    • removed the required property customer_email_address from the response with the 200 status

      response-required-property-removed

    • removed the required property customer_name from the response with the 200 status

      response-required-property-removed

    • removed the required property editable from the response with the 200 status

      response-required-property-removed

    • removed the required property needs_response_by from the response with the 200 status

      response-required-property-removed

    • removed the required property notes from the response with the 200 status

      response-required-property-removed

    • removed the required property payment/billing_reason from the response with the 200 status

      response-required-property-removed

    • removed the required property payment/card_brand from the response with the 200 status

      response-required-property-removed

    • removed the required property payment/card_last4 from the response with the 200 status

      response-required-property-removed

    • removed the required property payment/created_at from the response with the 200 status

      response-required-property-removed

    • removed the required property payment/currency from the response with the 200 status

      response-required-property-removed

    • removed the required property payment/dispute_alerted_at from the response with the 200 status

      response-required-property-removed

    • removed the required property payment/id from the response with the 200 status

      response-required-property-removed

    • removed the required property payment/member from the response with the 200 status

      response-required-property-removed

    • removed the required property payment/membership from the response with the 200 status

      response-required-property-removed

    • removed the required property payment/paid_at from the response with the 200 status

      response-required-property-removed

    • removed the required property payment/payment_method_type from the response with the 200 status

      response-required-property-removed

    • removed the required property payment/subtotal from the response with the 200 status

      response-required-property-removed

    • removed the required property payment/total from the response with the 200 status

      response-required-property-removed

    • removed the required property payment/usd_total from the response with the 200 status

      response-required-property-removed

    • removed the required property payment/user from the response with the 200 status

      response-required-property-removed

    • removed the required property plan from the response with the 200 status

      response-required-property-removed

    • removed the required property product from the response with the 200 status

      response-required-property-removed

    • removed the required property product_description from the response with the 200 status

      response-required-property-removed

    • removed the required property refund_policy_attachment from the response with the 200 status

      response-required-property-removed

    • removed the required property refund_policy_disclosure from the response with the 200 status

      response-required-property-removed

    • removed the required property refund_refusal_explanation from the response with the 200 status

      response-required-property-removed

    • removed the required property service_date from the response with the 200 status

      response-required-property-removed

    • removed the required property uncategorized_attachment from the response with the 200 status

      response-required-property-removed

    • removed the required property visa_rdr from the response with the 200 status

      response-required-property-removed

    • added the new bank_cannot_process enum value to the reason response property for the response status 200

      response-property-enum-value-added

    • added the new credit_not_processed enum value to the reason response property for the response status 200

      response-property-enum-value-added

    • added the new declined_authorization enum value to the reason response property for the response status 200

      response-property-enum-value-added

    • added the new documentation_request enum value to the reason response property for the response status 200

      response-property-enum-value-added

    • added the new duplicate enum value to the reason response property for the response status 200

      response-property-enum-value-added

    • added the new fraudulent enum value to the reason response property for the response status 200

      response-property-enum-value-added

    • added the new other enum value to the reason response property for the response status 200

      response-property-enum-value-added

    • added the new processing_error enum value to the reason response property for the response status 200

      response-property-enum-value-added

    • added the new product_not_received enum value to the reason response property for the response status 200

      response-property-enum-value-added

    • added the new product_unacceptable enum value to the reason response property for the response status 200

      response-property-enum-value-added

    • added the new subscription_canceled enum value to the reason response property for the response status 200

      response-property-enum-value-added

    • added the new unrecognized enum value to the reason response property for the response status 200

      response-property-enum-value-added

    • removed the aed enum value from the currency response property for the response status 200

      response-property-enum-value-removed

    • removed the all enum value from the currency response property for the response status 200

      response-property-enum-value-removed

    • removed the amd enum value from the currency response property for the response status 200

      response-property-enum-value-removed

    • removed the ape enum value from the currency response property for the response status 200

      response-property-enum-value-removed

    • removed the ars enum value from the currency response property for the response status 200

      response-property-enum-value-removed

    • removed the aud enum value from the currency response property for the response status 200

      response-property-enum-value-removed

    • removed the awg enum value from the currency response property for the response status 200

      response-property-enum-value-removed

    • removed the bam enum value from the currency response property for the response status 200

      response-property-enum-value-removed

    • removed the bgn enum value from the currency response property for the response status 200

      response-property-enum-value-removed

    • removed the bhd enum value from the currency response property for the response status 200

      response-property-enum-value-removed

    • removed the bob enum value from the currency response property for the response status 200

      response-property-enum-value-removed

    • removed the brl enum value from the currency response property for the response status 200

      response-property-enum-value-removed

    • removed the bsd enum value from the currency response property for the response status 200

      response-property-enum-value-removed

    • removed the btc enum value from the currency response property for the response status 200

      response-property-enum-value-removed

    • removed the cad enum value from the currency response property for the response status 200

      response-property-enum-value-removed

    • removed the chf enum value from the currency response property for the response status 200

      response-property-enum-value-removed

    • removed the clp enum value from the currency response property for the response status 200

      response-property-enum-value-removed

    • removed the cny enum value from the currency response property for the response status 200

      response-property-enum-value-removed

    • removed the cop enum value from the currency response property for the response status 200

      response-property-enum-value-removed

    • removed the crc enum value from the currency response property for the response status 200

      response-property-enum-value-removed

    • removed the czk enum value from the currency response property for the response status 200

      response-property-enum-value-removed

    • removed the dkk enum value from the currency response property for the response status 200

      response-property-enum-value-removed

    • removed the dop enum value from the currency response property for the response status 200

      response-property-enum-value-removed

    • removed the dzd enum value from the currency response property for the response status 200

      response-property-enum-value-removed

    • removed the egp enum value from the currency response property for the response status 200

      response-property-enum-value-removed

    • removed the etb enum value from the currency response property for the response status 200

      response-property-enum-value-removed

    • removed the eth enum value from the currency response property for the response status 200

      response-property-enum-value-removed

    • removed the eur enum value from the currency response property for the response status 200

      response-property-enum-value-removed

    • removed the gbp enum value from the currency response property for the response status 200

      response-property-enum-value-removed

    • removed the ghs enum value from the currency response property for the response status 200

      response-property-enum-value-removed

    • removed the gmd enum value from the currency response property for the response status 200

      response-property-enum-value-removed

    • removed the gtq enum value from the currency response property for the response status 200

      response-property-enum-value-removed

    • removed the gyd enum value from the currency response property for the response status 200

      response-property-enum-value-removed

    • removed the hkd enum value from the currency response property for the response status 200

      response-property-enum-value-removed

    • removed the huf enum value from the currency response property for the response status 200

      response-property-enum-value-removed

    • removed the idr enum value from the currency response property for the response status 200

      response-property-enum-value-removed

    • removed the ils enum value from the currency response property for the response status 200

      response-property-enum-value-removed

    • removed the inr enum value from the currency response property for the response status 200

      response-property-enum-value-removed

    • removed the jmd enum value from the currency response property for the response status 200

      response-property-enum-value-removed

    • removed the jod enum value from the currency response property for the response status 200

      response-property-enum-value-removed

    • removed the jpy enum value from the currency response property for the response status 200

      response-property-enum-value-removed

    • removed the kes enum value from the currency response property for the response status 200

      response-property-enum-value-removed

    • removed the khr enum value from the currency response property for the response status 200

      response-property-enum-value-removed

    • removed the krw enum value from the currency response property for the response status 200

      response-property-enum-value-removed

    • removed the kwd enum value from the currency response property for the response status 200

      response-property-enum-value-removed

    • removed the kzt enum value from the currency response property for the response status 200

      response-property-enum-value-removed

    • removed the lkr enum value from the currency response property for the response status 200

      response-property-enum-value-removed

    • removed the mad enum value from the currency response property for the response status 200

      response-property-enum-value-removed

    • removed the mdl enum value from the currency response property for the response status 200

      response-property-enum-value-removed

    • removed the mga enum value from the currency response property for the response status 200

      response-property-enum-value-removed

    • removed the mkd enum value from the currency response property for the response status 200

      response-property-enum-value-removed

    • removed the mnt enum value from the currency response property for the response status 200

      response-property-enum-value-removed

    • removed the mop enum value from the currency response property for the response status 200

      response-property-enum-value-removed

    • removed the mur enum value from the currency response property for the response status 200

      response-property-enum-value-removed

    • removed the mxn enum value from the currency response property for the response status 200

      response-property-enum-value-removed

    • removed the myr enum value from the currency response property for the response status 200

      response-property-enum-value-removed

    • removed the nad enum value from the currency response property for the response status 200

      response-property-enum-value-removed

    • removed the ngn enum value from the currency response property for the response status 200

      response-property-enum-value-removed

    • removed the nok enum value from the currency response property for the response status 200

      response-property-enum-value-removed

    • removed the nzd enum value from the currency response property for the response status 200

      response-property-enum-value-removed

    • removed the omr enum value from the currency response property for the response status 200

      response-property-enum-value-removed

    • removed the other enum value from the status response property for the response status 200

      response-property-enum-value-removed

    • removed the pen enum value from the currency response property for the response status 200

      response-property-enum-value-removed

    • removed the php enum value from the currency response property for the response status 200

      response-property-enum-value-removed

    • removed the pkr enum value from the currency response property for the response status 200

      response-property-enum-value-removed

    • removed the pln enum value from the currency response property for the response status 200

      response-property-enum-value-removed

    • removed the pyg enum value from the currency response property for the response status 200

      response-property-enum-value-removed

    • removed the qar enum value from the currency response property for the response status 200

      response-property-enum-value-removed

    • removed the ron enum value from the currency response property for the response status 200

      response-property-enum-value-removed

    • removed the rsd enum value from the currency response property for the response status 200

      response-property-enum-value-removed

    • removed the rub enum value from the currency response property for the response status 200

      response-property-enum-value-removed

    • removed the rwf enum value from the currency response property for the response status 200

      response-property-enum-value-removed

    • removed the sar enum value from the currency response property for the response status 200

      response-property-enum-value-removed

    • removed the sek enum value from the currency response property for the response status 200

      response-property-enum-value-removed

    • removed the sgd enum value from the currency response property for the response status 200

      response-property-enum-value-removed

    • removed the thb enum value from the currency response property for the response status 200

      response-property-enum-value-removed

    • removed the tnd enum value from the currency response property for the response status 200

      response-property-enum-value-removed

    • removed the try enum value from the currency response property for the response status 200

      response-property-enum-value-removed

    • removed the ttd enum value from the currency response property for the response status 200

      response-property-enum-value-removed

    • removed the twd enum value from the currency response property for the response status 200

      response-property-enum-value-removed

    • removed the tzs enum value from the currency response property for the response status 200

      response-property-enum-value-removed

    • removed the usd enum value from the currency response property for the response status 200

      response-property-enum-value-removed

    • removed the usdt enum value from the currency response property for the response status 200

      response-property-enum-value-removed

    • removed the uyu enum value from the currency response property for the response status 200

      response-property-enum-value-removed

    • removed the uzs enum value from the currency response property for the response status 200

      response-property-enum-value-removed

    • removed the vnd enum value from the currency response property for the response status 200

      response-property-enum-value-removed

    • removed the warning_closed enum value from the status response property for the response status 200

      response-property-enum-value-removed

    • removed the warning_needs_response enum value from the status response property for the response status 200

      response-property-enum-value-removed

    • removed the warning_under_review enum value from the status response property for the response status 200

      response-property-enum-value-removed

    • removed the whop_usd enum value from the currency response property for the response status 200

      response-property-enum-value-removed

    • removed the xau enum value from the currency response property for the response status 200

      response-property-enum-value-removed

    • removed the xcd enum value from the currency response property for the response status 200

      response-property-enum-value-removed

    • removed the xof enum value from the currency response property for the response status 200

      response-property-enum-value-removed

    • removed the zar enum value from the currency response property for the response status 200

      response-property-enum-value-removed

    • added the required property account_id to the response with the 200 status

      response-required-property-added

    • added the required property buyer to the response with the 200 status

      response-required-property-added

    • added the required property evidence to the response with the 200 status

      response-required-property-added

    • added the required property evidence_due_at to the response with the 200 status

      response-required-property-added

    • added the required property evidence_editable to the response with the 200 status

      response-required-property-added

    • added the required property evidence_locked_reason to the response with the 200 status

      response-required-property-added

    • added the required property evidence_submitted_at to the response with the 200 status

      response-required-property-added

    • added the required property inquiry to the response with the 200 status

      response-required-property-added

    • added the required property plan_id to the response with the 200 status

      response-required-property-added

    • added the required property product_id to the response with the 200 status

      response-required-property-added

    • added the required property rapid_dispute_resolution to the response with the 200 status

      response-required-property-added

    • added the required property reason_code to the response with the 200 status

      response-required-property-added

    • added the required property updated_at to the response with the 200 status

      response-required-property-added

    This revision also has 1 change that name no endpoint, such as unreferenced schemas being removed. See the revision's changelog