Disputes
A dispute, also known as a chargeback, occurs when a cardholder or bank account owner questions a transaction with their card issuer or bank.
When dispute funds are withdrawn (see the DISPUTE_FUNDS_WITHDRAWN event), the full amount of the transaction, along with a non-refundable dispute fee, is debited from your balance. If you choose to challenge the dispute by submitting evidence, an additional fee may be applied.
Proactive Refund Protection
To avoid dispute fees entirely, you must issue a full refund to the customer before they initiate a dispute with their bank or credit card company. Once a dispute is formally initiated, the Dispute Received Fee cannot be avoided or refunded, regardless of the outcome.
Supported Events
| Event Type | Description | Applicable payment method types |
|---|---|---|
| DISPUTE_INITIATED | Emitted when a dispute is created. | CARD, BANK_ACCOUNT |
| DISPUTE_FUNDS_WITHDRAWN | Emitted when funds are withdrawn because of a dispute. | CARD, BANK_ACCOUNT |
| DISPUTE_WON | Emitted when a dispute is won and funds are reinstated. | CARD, BANK_ACCOUNT |
| DISPUTE_CLOSED | Emitted when a dispute is closed. | CARD, BANK_ACCOUNT |
Event Structure
| Field | Type | Valid values | Description |
|---|---|---|---|
| name | Enum | DISPUTE_INITIATED, DISPUTE_FUNDS_WITHDRAWN, DISPUTE_WON, DISPUTE_CLOSED | Event name |
| payload | Payload | Event Payload |
Payload Structure
| Field | Type | Description |
|---|---|---|
id | uuid | The unique identifier for the dispute. |
merchantTransactionId | uuid | The transaction ID provided by the merchant. |
paymentId | uuid | The unique identifier for the associated payment. |
vendorDisputeId | string | The dispute identifier from the vendor/processor. |
amount | long | Dispute amount in United States Cents. |
merchantId | uuid | The unique identifier for the merchant. |
evidence | Evidence | Evidence submitted for the dispute. |
reason | string | The reason for the dispute. |
status | string | The current status of the dispute. |
paymentMethodType | string | The payment method type, e.g., CARD or BANK_ACCOUNT. |
balanceTransactions | array | A list of balance transactions associated with the dispute. |
Evidence Structure
To increase your chances of winning, provide as much evidence as possible. We have categorized the fields below based on the type of documentation required.
The evidence object is typically empty for DISPUTE_INITIATED and DISPUTE_FUNDS_WITHDRAWN events, as evidence is submitted after a dispute is created. For DISPUTE_WON and DISPUTE_CLOSED events, this object will contain the submitted evidence.
Not all fields within the evidence object will be populated in every dispute event. The availability of a field is contingent on the information provided by the payment processor (e.g., Stripe).
- Customer Info
- Shipping & Fulfillment
- Policies & Legal
- Other
| Field | Description |
|---|---|
| customer_name | Full name of the customer. |
| customer_email_address | Contact email for the customer. |
| billing_address | The customer's registered billing address. |
| customer_purchase_ip | The IP address used at the time of purchase. |
| customer_signature | The customer's signature. |
| access_activity_log | A log of the customer's activity. |
| Field | Description |
|---|---|
| shipping_address | Where the physical goods were sent. |
| shipping_carrier | The service used (UPS, FedEx, etc). |
| shipping_tracking_number | Active tracking number for the shipment. |
| shipping_date | The date the order was shipped. |
| shipping_documentation | Documentation related to shipping. |
| service_date | Date the service was actually performed. |
| service_documentation | Documentation related to the service provided. |
| Field | Description |
|---|---|
| cancellation_policy | Your policy regarding order cancellations. |
| cancellation_policy_disclosure | Disclosure of the cancellation policy. |
| cancellation_rebuttal | Rebuttal to a cancellation claim. |
| refund_policy | Your policy regarding returns and refunds. |
| refund_policy_disclosure | Disclosure of the refund policy. |
| refund_refusal_explanation | Explanation for a refund refusal. |
| Field | Description |
|---|---|
| product_description | Description of the product. |
| receipt | The receipt for the transaction. |
| duplicate_charge_id | The ID of the duplicate charge. |
| duplicate_charge_explanation | Explanation for a duplicate charge. |
| duplicate_charge_documentation | Documentation for a duplicate charge. |
| uncategorized_text | Uncategorized text evidence. |
| uncategorized_file | Uncategorized file evidence. |
| customer_communication | Emails or chat logs with the customer. |
Balance Transaction Object Structure
The balanceTransactions array's content depends on the event type:
DISPUTE_INITIATED: This array is typically empty as the financial adjustment has not yet occurred.DISPUTE_FUNDS_WITHDRAWN: This array contains a transaction object representing the withdrawal of funds from your account.DISPUTE_WON/DISPUTE_CLOSED: This array may contain transaction objects if there was a financial adjustment (for example, returning some or all of the disputed transaction amount to your balance). These adjustments generally apply only to the underlying transaction amount; the non‑refundable Dispute Received Fee is not returned as part of these balance transactions. The array can be empty if no adjustment was needed.
Not all fields will be populated for every balance transaction object within the balanceTransactions array. The availability of each field can vary per object and depends on the information provided by the payment processor (e.g., Stripe).
| Field | Type | Description |
|---|---|---|
amount | integer | The amount of the transaction, in cents. |
fee | integer | The fee associated with the transaction, in cents. |
fee_details | array of Fee Detail | A list of fee details associated with the transaction. |
id | string | The unique identifier for the balance transaction. |
net | integer | The net amount of the transaction, in cents. |
type | string | The type of the balance transaction (e.g., adjustment). |
Fee Detail Structure
Each item in the fee_details array is an object with the following fields:
| Field | Type | Description |
|---|---|---|
amount | integer | The amount of the fee, in cents. |
description | string | A human-readable description of the specific fee. |
Payload Structure Samples
The following payload examples are representative and may be subject to change as our API, and that of our partners like Stripe, evolves.
Here are sample payloads for each of the dispute-related events.
- DISPUTE_INITIATED
- DISPUTE_FUNDS_WITHDRAWN
- DISPUTE_WON
- DISPUTE_CLOSED
{
"name": "DISPUTE_INITIATED",
"payload": {
"id": "2605fad5-db5a-447f-9cb8-9d9fdb3aef97",
"merchantTransactionId": "9d5e3a78-dcd1-4337-a461-fd9a348a9128",
"paymentId": "20240786-61cb-49a1-88ad-2678551e9b85",
"vendorDisputeId": "du_1SxXp2LkuYvMIVR6FzLrA3fU",
"amount": 500,
"merchantId": "6089b031-948b-49fd-baf1-ef52fee63920",
"evidence": {},
"reason": "FRAUDULENT",
"status": "NEEDS_RESPONSE",
"paymentMethodType": "CARD",
"balanceTransactions": []
}
}
{
"name": "DISPUTE_FUNDS_WITHDRAWN",
"payload": {
"id": "b4b0e7c7-f4f5-495e-b729-7c07fb2aa1fa",
"merchantTransactionId": "9d5e3a78-dcd1-4337-a461-fd9a348a9128",
"paymentId": "20240786-61cb-49a1-88ad-2678551e9b85",
"vendorDisputeId": "du_1SxXp2LkuYvMIVR6FzLrA3fU",
"amount": 500,
"merchantId": "6089b031-948b-49fd-baf1-ef52fee63920",
"evidence": {},
"reason": "FRAUDULENT",
"status": "NEEDS_RESPONSE",
"paymentMethodType": "CARD",
"balanceTransactions": [
{
"amount": -500,
"fee": 1500,
"fee_details": [
{
"amount": 1500,
"description": "Dispute fee"
}
],
"id": "txn_1SxXp3LkuYvMIVR6VAJgEW4U",
"net": -2000,
"type": "adjustment"
}
]
}
}
{
"name": "DISPUTE_WON",
"payload": {
"id": "d6140bac-39af-46c1-9cec-b2e5cd560494",
"merchantTransactionId": "9d5e3a78-dcd1-4337-a461-fd9a348a9128",
"paymentId": "20240786-61cb-49a1-88ad-2678551e9b85",
"vendorDisputeId": "du_1SxXp3LkuYvMIVR6vUOPg4Rw",
"amount": 500,
"merchantId": "6089b031-948b-49fd-baf1-ef52fee63920",
"evidence": {
"billing_address": "44444, US",
"customer_name": "test",
"customer_purchase_ip": "165.225.60.225",
"product_description": "UI widget payment"
},
"reason": "FRAUDULENT",
"status": "WON",
"paymentMethodType": "CARD",
"balanceTransactions": [
{
"amount": -500,
"fee": 1500,
"fee_details": [
{
"amount": 1500,
"description": "Dispute fee"
}
],
"id": "txn_1SxXp4LkuYvMIVR6JXB9t99N",
"net": -2000,
"type": "adjustment"
},
{
"amount": 500,
"fee": 0,
"fee_details": [],
"id": "txn_1SxXtJLkuYvMIVR6eRQS2MxU",
"net": 500,
"type": "adjustment"
}
]
}
}
{
"name": "DISPUTE_CLOSED",
"payload": {
"id": "6e3866c7-33d9-4c38-ae39-f04a88deb3f5",
"merchantTransactionId": "9d5e3a78-dcd1-4337-a461-fd9a348a9128",
"paymentId": "20240786-61cb-49a1-88ad-2678551e9b85",
"vendorDisputeId": "du_1SxXp3LkuYvMIVR6vUOPg4Rw",
"amount": 500,
"merchantId": "6089b031-948b-49fd-baf1-ef52fee63920",
"evidence": {
"billing_address": "44444, US",
"customer_name": "test",
"customer_purchase_ip": "165.225.60.225",
"product_description": "UI widget payment"
},
"reason": "FRAUDULENT",
"status": "WON",
"paymentMethodType": "CARD",
"balanceTransactions": [
{
"amount": -500,
"fee": 1500,
"fee_details": [
{
"amount": 1500,
"description": "Dispute fee"
}
],
"id": "txn_1SxXp4LkuYvMIVR6JXB9t99N",
"net": -2000,
"type": "adjustment"
},
{
"amount": 500,
"fee": 0,
"fee_details": [],
"id": "txn_1SxXtJLkuYvMIVR6eRQS2MxU",
"net": 500,
"type": "adjustment"
}
]
}
}