---
title: "Dispute Alert Created"
method: POST
path: "dispute_alert.created"
tags: ["Dispute alerts"]
---

# Dispute Alert Created

`POST dispute_alert.created` (webhook)

Sent when a dispute alert is created

Required permissions:
 - `payment:dispute_alert:read`
 - `payment:basic:read`
 - `member:email:read`
 - `member:basic:read`
 - `member:phone:read`
 - `payment:dispute:read`
 - `webhook_receive:disputes`

## Headers

- `webhook-id` string, required — A unique identifier for this webhook request
- `webhook-signature` string, required — The signature of the webhook request with the webhook version prepended
- `webhook-timestamp` string, required — The timestamp in seconds since the Unix epoch that the webhook was sent at on the server

## Payload

- object
  - `api_version` 'v1', required — The API version for this webhook
  - `api_version_date` string, nullable, required — The dated API version (Api-Version-Date) the payload is serialized to
  - `company_id` string, nullable — The account ID that this webhook event is associated with
  - `data` DisputeAlert, required
    - `account_id` string, nullable, required — The account the alerted payment belongs to, prefixed `biz_`. `null` while the alert is unmatched.
    - `actionable` boolean, required — Whether refunding the payment can still avoid a chargeback. `false` once the payment has been disputed or fully refunded, or when the alert could not be matched to a payment — `not_actionable_reason` says which.
    - `amount` number, required — The alerted amount, in whole units of `currency`. This is what the issuer reported, which can differ from the payment's own amount.
    - `card_brand` string, nullable, required — The card network as reported by the issuer, lowercased, such as `visa` or `mastercard`. `unknown` when the report carries neither a network nor a recognizable BIN.
    - `created_at` string, required — When Whop received the alert, as an ISO 8601 timestamp.
    - `currency` string, required — Three-letter ISO currency code of the alerted amount.
    - `fee_charged` boolean, required — Whether Whop charged the account an alert fee for this one. Always `false` for `early_fraud_warning`, which Whop is not billed for and never passes on.
    - `id` string, required — Dispute alert ID, prefixed `dspa_`.
    - `issuer` string, nullable, required — Name of the bank that issued the card and filed the report.
    - `not_actionable_reason` 'network_resolved' | 'payment_unmatched' | 'payment_not_captured' | 'payment_disputed' | 'payment_refunded' | 'null', nullable, required — Why refunding can no longer avoid a chargeback. `network_resolved` when a Visa RDR already closed the case, `payment_unmatched` when no payment matched, `payment_not_captured` when it never captured money, `payment_disputed` once the payment carries a dispute, `payment_refunded` once fully refunded. `null` while `actionable` is true.
    - `payment_id` string, nullable, required — The payment the issuer reported, prefixed `pay_`. `null` when Whop could not match the report to a payment.
    - `product_id` string, nullable, required — The product the alerted payment was for, prefixed `prod_`.
    - `reported_at` string, required — When the issuer filed the report, as an ISO 8601 timestamp. Earlier than `created_at`, which is when Whop received it.
    - `transaction_at` string, nullable, required — When the reported transaction was made, as an ISO 8601 timestamp.
    - `type` 'early_fraud_warning' | 'dispute_alert' | 'rapid_dispute_resolution', required — What the issuer sent. `early_fraud_warning` is a fraud report on a settled payment (Visa TC40 / Mastercard SAFE) — refunding still avoids the chargeback, and Whop never charges a fee for one. `dispute_alert` is a pre-dispute notice from the issuer's alert network, which Whop pays for and passes on as a fee. `rapid_dispute_resolution` is a Visa RDR case the network already closed by refunding the payment — nothing is left to act on.
    - `updated_at` string, required — When the alert was last changed, as an ISO 8601 timestamp.
  - `id` string, required — A unique ID for every single webhook request
  - `timestamp` string, date-time, required — The timestamp in ISO 8601 format that the webhook was sent at on the server
  - `type` 'dispute_alert.created', required — The webhook event type

## Acknowledgement `200`

Return a 200 status to indicate that the data was received successfully

---

[API](https://skmtc.net/whop/apis/whop-api.md) · [All operations](https://skmtc.net/whop/apis/whop-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/whop/whop-api/revisions/c363cb2feb95/schema)
