# Disputes

Raise and manage card transaction disputes, including submission via Dynamic Flow or direct API, file uploads, and dispute lifecycle tracking.
For implementation details, see:
- [Disputes via Dynamic Flow](/guides/product/issue-cards/card-disputes-dynamic-flow) — build a dispute UI using the Dynamic Flow framework
- [Disputes via API](/guides/product/issue-cards/card-disputes-api) — submit disputes directly, with per-reason request body details
- [Dispute management](/guides/product/issue-cards/card-disputes-management) — track and withdraw disputes

Dispute sub-statuses 
The possible `subStatus` values are:
- `SUBMITTED` — Initial status
- `IN_REVIEW` — The dispute is under review or requires additional information
- `REFUNDED` — The refund has been processed
- `REJECTED` — The dispute is invalid
- `WITHDRAWN` — The customer has withdrawn the dispute
- `CONFIRMED` — The dispute has been reviewed but a refund is not applicable
- `REFUND_IN_PROGRESS` — A refund is being processed
- `ATTEMPTING_RECOVERY` — A chargeback request has been submitted
- `RECOVERY_UNSUCCESSFUL` — The chargeback attempt was unsuccessful

The status transition diagram may undergo modifications in the future and only covers regular pathways.

 - [POST /v3/spend/profiles/{profileId}/dispute-form/flows/step/{scheme}/{reason}](https://docs.wise.com/api-reference/legacy/disputes/disputedynamicflowstep.md): Retrieves the JSON for initiating the dispute flow. Use this endpoint with Wise's [Dynamic Flow framework](https://www.npmjs.com/package/@transferwise/dynamic-flows). The JSON response must be passed
 - [GET /v3/spend/profiles/{profileId}/dispute-form/reasons](https://docs.wise.com/api-reference/legacy/disputes/disputereasonsget.md): Retrieves the list of possible reasons for submitting a dispute. If a reason code has `subOptions`, those should be used as the reason code when submitting disputes.
 - [POST /v3/spend/profiles/{profileId}/dispute-form/flows/{scheme}/{reason}](https://docs.wise.com/api-reference/legacy/disputes/disputesubmit.md): Submit a dispute for a card transaction. The request body structure varies per dispute reason code. All reasons share a common structure with `transaction`, `form`, `disclaimer`, and `files` objects,
 - [POST /v4/spend/profiles/{profileId}/dispute-form/file](https://docs.wise.com/api-reference/legacy/disputes/disputefileupload.md): Upload a file for use in a dispute submission. Use the returned file ID in the `files` object when submitting a dispute. A dispute referencing the returned file ID must be submitted no later than **tw
 - [GET /v3/spend/profiles/{profileId}/disputes](https://docs.wise.com/api-reference/legacy/disputes/disputelist.md): List disputes for a profile with optional filters.
 - [GET /v3/spend/profiles/{profileId}/disputes/{disputeId}](https://docs.wise.com/api-reference/legacy/disputes/disputeget.md): Retrieve a dispute by its ID.
 - [PUT /v3/spend/profiles/{profileId}/disputes/{disputeId}/status](https://docs.wise.com/api-reference/legacy/disputes/disputewithdraw.md): Withdraw a dispute by setting its status to `CLOSED`. You can only withdraw a dispute if `canWithdraw` is `true` on the dispute resource.
 - [POST /v3/spend/profiles/{profileId}/dispute-form/file](https://docs.wise.com/api-reference/legacy/disputes/disputefileuploadv3.md): This endpoint is deprecated. Use the [v4 upload dispute file endpoint](/api-reference/legacy/disputes/disputefileupload) instead. Submit a file for disputes. This API is not available for sandbox test
 - [POST transaction-disputes#update](https://docs.wise.com/api-reference/legacy/disputes/eventtransactiondisputesupdate.md): Triggered every time a transaction dispute is submitted or updated. You may receive update events even when there are no apparent changes in the dispute `status` or `subStatus`, as certain underlying
