> ## Documentation Index
> Fetch the complete documentation index at: https://www.marqeta.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Close a Dispute

Once arbitration is completed it is time to close the dispute and notify the cardholder.

At this stage, the network has decided whether the case is won or lost. In production, you must notify the cardholder of the outcome.

To simulate this transition, use one of the following actions:

* `CLOSE_WITH_CASE_WON`
* `CLOSE_WITH_NETWORK_REJECTED`

The example below demonstrates a `case.won` flow by sending `CLOSE_WITH_CASE_WON` in the `action` field.

### Sample request body

<Accordion title="Sample request" defaultOpen>
  <CodeGroup>
    ```bash Curl theme={null}
        curl -X POST "https://your-subdomain.marqeta.com/v3/cases/<case_token>/disputetransitions" \
            -H "X-Marqeta-Program-Short-Code: your-program-code" \
            -H "Authorization: Basic YOUR_BASE64_ENCODED_STRING" \
            -H "Content-Type: application/json" \
            -d '{
                "action": "CLOSE_WITH_CASE_WON",
                "created_by": "Your Name"
            }'
    ```

    ```javascript JavaScript theme={null}
        const closeCaseWon = async (caseToken) => {
            const url = `https://your-subdomain.marqeta.com/v3/cases/${caseToken}/disputetransitions`;

            const payload = {
                action: "CLOSE_WITH_CASE_WON",
                created_by: "Your Name"
            };

            const response = await fetch(url, {
                method: 'POST',
                headers: {
                    'X-Marqeta-Program-Short-Code': 'your-program-code',
                    'Authorization': 'Basic YOUR_BASE64_ENCODED_STRING',
                    'Content-Type': 'application/json'
                },
                body: JSON.stringify(payload)
            });

            const data = await response.json();
            console.log('Case Closed - Won:', data);
        };
    ```

    ```python Python theme={null}
        import requests

        case_token = "<case_token>"
        url = f"https://your-subdomain.marqeta.com/v3/cases/{case_token}/disputetransitions"

        headers = {
            "X-Marqeta-Program-Short-Code": "your-program-code",
            "Authorization": "Basic YOUR_BASE64_ENCODED_STRING",
            "Content-Type": "application/json"
        }

        payload = {
            "action": "CLOSE_WITH_CASE_WON",
            "created_by": "Your Name"
        }

        response = requests.post(url, headers=headers, json=payload)

        print(f"Status: {response.status_code}")
        print(response.json())
    ```

    ```java Java theme={null}
        import java.net.URI;
        import java.net.http.HttpClient;
        import java.net.http.HttpRequest;
        import java.net.http.HttpResponse;

        public class CloseCaseWon {
            public static void main(String[] args) throws Exception {
                String caseToken = "<case_token>";
                HttpClient client = HttpClient.newHttpClient();

                String jsonBody = """
                    {
                        "action": "CLOSE_WITH_CASE_WON",
                        "created_by": "Your Name"
                    }
                    """;

                HttpRequest request = HttpRequest.newBuilder()
                    .uri(URI.create("https://your-subdomain.marqeta.com/v3/cases/" + caseToken + "/disputetransitions"))
                    .header("X-Marqeta-Program-Short-Code", "your-program-code")
                    .header("Authorization", "Basic YOUR_BASE64_ENCODED_STRING")
                    .header("Content-Type", "application/json")
                    .POST(HttpRequest.BodyPublishers.ofString(jsonBody))
                    .build();

                HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());

                System.out.println("Result: " + response.body());
            }
        }
    ```
  </CodeGroup>
</Accordion>

### Sample response body

<Accordion title="Sample response" defaultOpen>
  <CodeGroup>
    ```json JSON theme={null}
    {
        "token": "203a8a7d-944f-40a4-a160-25da40573f41",
        "created_time": "2026-03-10T16:02:10Z",
        "last_modified_time": "2026-03-10T16:02:10Z",
        "case_token": "<case_token>",
        "action": "CLOSE_WITH_CASE_WON",
        "created_by": "Frank Disputes"
    }
    ```
  </CodeGroup>
</Accordion>

Marqeta states transitions to `CLOSED` regardless of the decision and the network state transitions to `case.won` or `case.lost` automatically, based on this decision.

## Confirming the dispute status

Marqeta state for dispute is now `CLOSED`. You can check the state of your Dispute with the following request.

### Sample request body

<Accordion title="Sample request" defaultOpen>
  <CodeGroup>
    ```bash Curl theme={null}
        curl -X GET "https://your-subdomain.marqeta.com/v3/cases/<case_token>" \
            -H "X-Marqeta-Program-Short-Code: your-program-code" \
            -H "Authorization: Basic YOUR_BASE64_ENCODED_STRING" \
            -H "Content-Type: application/json"
    ```

    ```javascript JavaScript theme={null}
        const getCaseDetails = async (caseToken) => {
            const url = `https://your-subdomain.marqeta.com/v3/cases/${caseToken}`;

            try {
                const response = await fetch(url, {
                    method: 'GET',
                    headers: {
                        'X-Marqeta-Program-Short-Code': 'your-program-code',
                        'Authorization': 'Basic YOUR_BASE64_ENCODED_STRING',
                        'Content-Type': 'application/json'
                    }
                });

                const data = await response.json();
                console.log('Case Details:', data);
                console.log('Current State:', data.state);
            } catch (error) {
                console.error('Error fetching case:', error);
            }
        };
    ```

    ```python Python theme={null}
        import requests

        case_token = "<case_token>"
        url = f"https://your-subdomain.marqeta.com/v3/cases/{case_token}"

        headers = {
            "X-Marqeta-Program-Short-Code": "your-program-code",
            "Authorization": "Basic YOUR_BASE64_ENCODED_STRING",
            "Content-Type": "application/json"
        }

        response = requests.get(url, headers=headers)

        if response.status_code == 200:
            case_info = response.json()
            print(f"Case State: {case_info.get('state')}")
            print(case_info)
        else:
            print(f"Failed to retrieve case: {response.status_code}")
    ```

    ```java Java theme={null}
        import java.net.URI;
        import java.net.http.HttpClient;
        import java.net.http.HttpRequest;
        import java.net.http.HttpResponse;

        public class GetCase {
            public static void main(String[] args) throws Exception {
                String caseToken = "<case_token>";
                HttpClient client = HttpClient.newHttpClient();

                HttpRequest request = HttpRequest.newBuilder()
                    .uri(URI.create("https://your-subdomain.marqeta.com/v3/cases/" + caseToken))
                    .header("X-Marqeta-Program-Short-Code", "your-program-code")
                    .header("Authorization", "Basic YOUR_BASE64_ENCODED_STRING")
                    .header("Content-Type", "application/json")
                    .GET()
                    .build();

                HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());

                if (response.statusCode() == 200) {
                    System.out.println("Case Details: " + response.body());
                } else {
                    System.out.println("Error: " + response.statusCode());
                }
            }
        }
    ```
  </CodeGroup>
</Accordion>


## Related topics

- [Transitioning Cases](/docs/developer-guides/disputes-portal-transitioning-and-closing.md)
- [Disputes (Mastercard)](/docs/core-api/disputes-mastercard.md)
- [Disputes (PULSE)](/docs/core-api/disputes-pulse.md)
- [Disputes (Visa)](/docs/core-api/disputes-visa.md)
- [Disputes in the Marqeta Dashboard](/docs/developer-guides/disputes-dashboard.md)
