UseePay Open API
UseePay PortalMechant Dashboard
Product Docs
Product Docs
  • V2.0
  • V1.0
UseePay PortalMechant Dashboard
Product Docs
Product Docs
  • V2.0
  • V1.0
  1. Webhooks
  • Integration
    • Welcome to the UseePay Demo Page
    • Payment Product Overview
      • Hosted Checkout Integration Guide
      • Embedded Checkout Integration Guide
      • Express Checkout Integration Guide
      • Server to Server Integration Guide
    • About Payment Methods
      • Card
      • Apple Pay Web Integration (API Integration)
      • Google Pay Web Integration (API Integration)
      • Apple Pay(Hosted Checkout)
      • Google Pay
      • Klarna
      • Naver pay
      • Kakao Pay
      • Toss Pay
      • Payco
      • Affirm
      • Blik
      • Trustly
      • Cashapp
      • Pay with Link
    • Subscription
      • Get started with Subscription
    • Online payment
      • Get started with online payments
    • Payment Capabilities
      • Adaptive Price
      • Supported Payment Methods for Checkout
    • Checkout session
      • Checkout Session Guide
  • Developer
    • Introduction
    • Authentication
    • Errors
    • Error code
      • last_payment_error documentation
    • Best Integration
      • Quickly create a paymentIntent for a subscription
      • Auto-Charge Subscription Guide
    • Payment Intents
      • Payment Intent Overview
      • Quickly create a paymentIntent
      • Create a PaymentIntent
      • Retrieve a PaymentIntent
      • Update a PaymentIntent
      • Confirm a PaymentIntent
      • Cancel a PaymentIntent
      • Capture a PaymentIntent
      • List all payment intents
    • Customers
      • Create a customer
      • Retrieves a customer
      • Update a customer
      • List all customers
    • Subscriptions
      • Create a subscription
      • Retrieves a subscription
      • Update a subscription
      • List all subscriptions
      • Cancel a subscription
    • Invoices
      • Create a invoice
      • Retrieves a invoice
      • List all invoices
      • Pay a invoice
    • Payment Methods
      • Retieve Payment Method Session
    • Mandates
      • Create a mandate
      • Retrieves a mandate
      • List all mandates
    • Refunds
      • Create a refund
      • Retrieves a refund
      • List all refunds
    • Webhooks
      • Webhook Activation/Signature Verification Steps
      • Supported Webhook Events
      • Dispute Webhook Integration Document
      • 2026-04 coming soon
        • Webhook Request Format Update
        • Webhook events for example
      • Before 2026-04 supported
        • Webhook Events Documentation
        • Webhook events for example
      • Create a webhook
        POST
      • Retrieves a webhook
        GET
      • Update a webhook
        POST
      • List all webhooks
        GET
    • Embedded Checkout
      • Payment Element
      • Payment Element (Deferred Intent)
      • Express Checkout Element
      • Checkout Session Element
    • About Testing
      • Test Cards
      • ApplePay&GooglePay
    • Payment Method Configuration
      • Retieve Payment Method Configuration
    • Checkout Session
      • Create Checkout Session
      • Retrieve Checkout Session
    • Trackers
      • upload trackers
      • Retrieve a tracker
    • Capture
      • Capture Overview
      • List captures by intent id
    • Schemas
      • CheckoutSessionCreateRequest
      • PaymentMethod
      • CreatePaymentIntentRequest
      • LineItem
      • Customer
      • Address
      • ProductData
      • Shipping
      • SubscriptionData
      • Error
      • DiscountPeriodConfig
      • DeviceData
      • CheckoutSessionResponse
      • ErrorResponse
      • Order
      • Product
      • PaymentMethodOptions
      • RiskControlOptions
      • Mandate
      • PaymentIntent
      • Billing
      • Card
      • AliPay
      • Wallet
      • Klarna
      • WechatPay
      • Refund
      • Subscription
      • Recurring
      • PriceData
      • SubscriptionItem
      • Invoice
      • NextAction
      • Webhook
      • CollectableOptions
      • PaymentLink
      • last_payment_error
      • discount_period_config
      • Capture
  • Reconciliation
    • SFTP Access for Reconciliation
  • Message
    • Messaging Element
  • FAQ
    • Unable to receive Webhook notifications
  1. Webhooks

Dispute Webhook Integration Document

1. Overview#

To help merchants receive timely updates on dispute progress, OpenAPI provides dispute Webhook notification capability.
Merchants can create Webhooks and subscribe to dispute-related events to receive asynchronous notifications when a dispute is created and when a dispute is closed.
This capability applies to transactions initiated through OpenAPI. Only OpenAPI transactions will trigger the corresponding dispute Webhook.
Create Webhook API reference: https://docs-v2.useepay.com/233908796e0

2. Supported Event Types#

The following event types are currently supported:
dispute.created
dispute.closed

2.1 dispute.created#

Indicates that a new dispute event has been created.
Typical scenarios include:
First chargeback
Retrieval

2.2 dispute.closed#

Indicates that the current dispute event has been closed.
Typical scenarios include:
Dispute won by the merchant / chargeback reversed
Dispute lost by the merchant
Retrieval process closed

2.3 Important Notes#

The meaning of dispute.closed is:
The current dispute has been completed
It does not mean the entire order is permanently closed
It does not mean no further disputes can occur for this order
In other words:
An order may first receive a retrieval
A formal chargeback may occur later
Or multiple dispute-related events may occur for the same order at different stages
Therefore, when receiving notifications, merchants should use the dispute ID data.id as the unique identifier for each individual dispute, rather than assuming that there can only be one dispute for an order based solely on merchant_order_id or payment_intent_id.

3. Rules for Creating a Webhook#

When creating a Webhook, merchants need to be aware of the following restrictions:

3.1 Supported Subscribed Events#

When creating a Webhook, the following events can be subscribed to:
dispute.created
dispute.closed

3.2 api_version Restriction#

When creating a Webhook, api_version only supports the following version:
2026-04
If another version is passed, a parameter validation error should be returned.

3.3 Event Type Validation#

When creating a Webhook, the system validates the event types passed by the merchant.
If an event type is not within the supported range, a parameter validation error should be returned.

4. Notification Payload Structure#

Dispute Webhooks use a unified event structure:
{
  "id": "Event ID",
  "name": "Event type",
  "data": {
    "id": "Dispute order ID",
    "status": "Dispute status",
    "retrieval": false,
    "amount": 500.23,
    "currency": "USD",
    "reason": "Dispute reason",
    "merchant_no": "500000000008901",
    "app_id": "www.pay.com",
    "create_at": "2026-04-14T04:22:25Z",
    "payment_intent_id": "1012604141216938827",
    "merchant_order_id": "19d82600-e9d1-4f43-934d-18090d6db098",
    "payment_method_details": {
      "type": "card",
      "brand": "visa"
    }
  }
}

5. Field Descriptions#

5.1 Top-level Fields#

FieldTypeDescription
idstringWebhook event ID, uniquely identifies one notification
namestringEvent type. Possible values are dispute.created or dispute.closed
dataobjectDispute business data

5.2 data Field Description#

FieldTypeDescription
idstringDispute order ID, uniquely identifies the current dispute
statusstringCurrent dispute status
retrievalbooleanWhether this is a retrieval. true indicates retrieval, false indicates a formal chargeback
amountnumberOriginal disputed amount of this dispute
amount_wonnumberAmount actually won back in this dispute. Not returned if the merchant loses
currencystringCurrency
reasonstringDispute reason
reason_codestringDispute reason code
merchant_nostringMerchant number
app_idstringApplication ID
create_atstringDispute creation time, in UTC time and ISO 8601 format
payment_intent_idstringCorresponding payment order ID
merchant_order_idstringMerchant order ID
payment_method_detailsobjectPayment method details

5.3 payment_method_details Field Description#

FieldTypeDescription
typestringPayment method type, such as card, klarna
brandstringCard brand: visa, master, dc, jcb, ae

6. Status Description#

The following status values are currently supported:
Status ValueDescription
need_responseThe current dispute/retrieval still requires merchant action
wonThe merchant won or partially won. The specific won amount is determined by amount_won
lostThe merchant lost
warning_closedThe retrieval process has been closed
Additional notes:
retrieval = true indicates that the current event is a retrieval process.
retrieval = false indicates that the current event is a formal chargeback process.
dispute.closed only indicates that the current dispute has been closed. The final result is reflected by status.
When a formal chargeback is closed, status is won or lost.
When a retrieval is closed, status is warning_closed.
For partial-win scenarios, status remains won, and the specific won amount is determined by amount_won.

7. Event Lifecycle Description#

Merchants should pay special attention that disputes are processed at the dispute level, not as a one-time event at the order level.

7.1 Typical Lifecycle of a Single Dispute#

A dispute generally goes through the following process:
1.
A dispute event is generated
dispute.created is pushed
2.
The dispute enters the processing stage
The status may be need_response
3.
The dispute processing is completed
dispute.closed is pushed
4.
The final status may be:
won
lost
warning_closed

7.2 The Same Order May Have Multiple Disputes#

The same merchant_order_id or payment_intent_id may correspond to multiple different disputes.
For example:
First dispute: retrieval
Second dispute: formal chargeback
It may also be:
The first dispute has been closed
A new dispute is created later
Therefore, when designing their systems, merchants are advised to follow these principles:
Use data.id as the primary key of the dispute
Use merchant_order_id / payment_intent_id as association dimensions
Do not assume that no further disputes will occur for the order after receiving one dispute.closed event

8. Dispute Notification Flow Diagram#


9. Payload Examples#

9.1 dispute.created Example#

{
  "id": "evt_768654c9e6fe48c3a73e48108c5a9e0f",
  "name": "dispute.created",
  "data": {
    "id": "2012604141222938830",
    "status": "need_response",
    "retrieval": false,
    "amount": 100,
    "currency": "USD",
    "reason": "Goods/ services ordered but not received",
    "reason_code": "unauthorized_purchase",
    "merchant_no": "500000000008901",
    "app_id": "www.pay.com",
    "create_at": "2026-04-14T04:22:25Z",
    "payment_intent_id": "1012604141216938827",
    "merchant_order_id": "19d82600-e9d1-4f43-934d-18090d6db098",
    "payment_method_details": {
      "type": "card",
      "brand": "visa"
    }
  }
}

9.2 dispute.closed Example#

9.2.1 Merchant Lost#

{
  "id": "evt_45322c063a9f47bb89fc0204a406dc8b",
  "name": "dispute.closed",
  "data": {
    "id": "2012604141356938847",
    "status": "lost",
    "retrieval": false,
    "amount": 100,
    "currency": "USD",
    "reason": "Goods/ services ordered but not received",
    "reason_code":"unauthorized_purchase",
    "merchant_no": "500000000008901",
    "app_id": "www.pay.com",
    "create_at": "2026-04-14T05:56:11Z",
    "payment_intent_id": "1012604141355938845",
    "merchant_order_id": "889219a2-e50d-4cc5-b34f-0a5851b5be78",
    "payment_method_details": {
      "type": "klarna"
    }
  }
}

9.2.2 Merchant Fully Won#

{
  "id": "evt_45322c063a9f47bb89fc0204a406dc8b",
  "name": "dispute.closed",
  "data": {
    "id": "2012604141356938847",
    "status": "won",
    "retrieval": false,
    "amount": 100,
    "amount_won": 100,
    "currency": "USD",
    "reason": "Goods/ services ordered but not received",
    "reason_code":"unauthorized_purchase",
    "merchant_no": "500000000008901",
    "app_id": "www.pay.com",
    "create_at": "2026-04-14T05:56:11Z",
    "payment_intent_id": "1012604141355938845",
    "merchant_order_id": "889219a2-e50d-4cc5-b34f-0a5851b5be78",
    "payment_method_details": {
      "type": "klarna"
    }
  }
}

9.2.3 Merchant Partially Won#

{
  "id": "evt_45322c063a9f47bb89fc0204a406dc8b",
  "name": "dispute.closed",
  "data": {
    "id": "2012604141356938847",
    "status": "won",
    "retrieval": false,
    "amount": 100,
    "amount_won": 50,
    "currency": "USD",
    "reason": "Goods/ services ordered but not received",
    "reason_code":"unauthorized_purchase",
    "merchant_no": "500000000008901",
    "app_id": "www.pay.com",
    "create_at": "2026-04-14T05:56:11Z",
    "payment_intent_id": "1012604141355938845",
    "merchant_order_id": "889219a2-e50d-4cc5-b34f-0a5851b5be78",
    "payment_method_details": {
      "type": "klarna"
    }
  }
}

9.2.4 Retrieval Closed#

{
  "id": "evt_45322c063a9f47bb89fc0204a406dc8b",
  "name": "dispute.closed",
  "data": {
    "id": "2012604141356938847",
    "status": "warning_closed",
    "retrieval": true,
    "amount": 100,
    "currency": "USD",
    "reason": "Goods/ services ordered but not received",
    "reason_code":"unauthorized_purchase",
    "merchant_no": "500000000008901",
    "app_id": "www.pay.com",
    "create_at": "2026-04-14T05:56:11Z",
    "payment_intent_id": "1012604141355938845",
    "merchant_order_id": "889219a2-e50d-4cc5-b34f-0a5851b5be78",
    "payment_method_details": {
      "type": "klarna"
    }
  }
}

10. Signature Verification#

After receiving the request, and after validating that all required parameters are complete, you should use the raw HTTP request body for signature verification.
Reference: https://docs-v2.useepay.com/7598891m0

11. Notes#

1.
Merchants must ensure that the Webhook URL is accessible and supports processing application/json request bodies.
2.
Merchants should design their data model based on the dispute dimension, rather than assuming that an order can only have one dispute.
3.
dispute.closed means the current dispute has been closed. It does not mean that no further disputes can occur for the order.
Modified at 2026-04-28 07:25:36
Previous
Supported Webhook Events
Next
Webhook Request Format Update
Built with