id from GET /cards/transactions or GET /cards/{cardId}/transactions, or the transactionId from a card.transaction.* webhook.
POST /cards/transactions/TRANSACTION_ID/dispute
Response
disputeAmount as the amount filed. Every dispute is submitted to the card network.
See Create a dispute for a transaction.
GET /cards/transactions/TRANSACTION_ID/dispute
404 when the transaction has no dispute.
GET /cards/transactions/{transactionId} includes issuerDispute when a dispute was logged. That object is loaded from the card issuer and includes the current status. GET /cards/transactions/{transactionId}/dispute returns the same issuer dispute. See Get the dispute for a transaction.
One active dispute is allowed per transaction. A dispute is active while its status is pending or inReview. Filing another dispute in that window returns 409.
When a dispute can be filed
The transaction must be settled. That means statuscompleted and a posted time. Pending, declined, and reversed transactions are rejected with 400. A zero-amount transaction, such as an authorisation hold the merchant never captured, is also rejected with 400.
Filing window
Card networks expect a dispute within 120 days of the transaction date. A shorter 75-day window applies when either of these is true:- The transaction was force-posted, meaning it settled without a prior authorisation.
- You file under
cardRecoveryBulletin,declinedAuthorization,noAuthorization, orinvalidData.
Dispute type and reason code
disputeType is the broad category. disputeReasonCode is the finer reason code. It is optional. A reason code classifies the case more precisely and shortens review.
- Send only
disputeReasonCodeand the issuer derivesdisputeType. - Send only
disputeTypeand the dispute is filed with that type and no reason code. - Send both and they must agree. When they disagree, the API returns
400and names the expected type. - An unsupported reason code returns
400. - The response includes
disputeReasonCodewhen you sent one, and omits it when you did not.
Dispute types
Reason codes
textEvidence is optional written evidence, up to 65,535 characters.
Thresholds and fees
You can submit a dispute of any amount. Reporting a dispute costs nothing, and small disputes still help track fraud patterns. The card programme files a dispute with the card network only when the amount meets a minimum.Status and reimbursement
card.dispute.created fires when the dispute is filed. card.dispute.updated fires when the status or textEvidence changes. Payload examples are in Webhooks.
When the network accepts the dispute, reimbursement is a new completed card transaction with a negative amount (a credit). You receive card.transaction.completed for that credit. The credit can be less than the transaction amount that was disputed. Network investigations typically take 30–60 business days.
Unauthorized charges
When a user reports a charge they did not make:- Cancel the affected card. For a virtual card, replace it. For a physical card, delete it and issue a new one.
- File a dispute for the settled unauthorized transaction.