# Submit dispute evidence

Submit the evidence associated with a dispute.

Evidence items must be uploaded using the appropriate endpoint(s) prior to calling this endpoint to submit it. **Evidence can only** **be submitted once per dispute.**

Read our [disputes guide](https://docs.moov.io/guides/money-movement/accept-payments/card-acceptance/disputes/) to learn more.

To access this endpoint using an [access token](https://docs.moov.io/api/authentication/access-tokens/) you\'ll need to specify the `/accounts/{accountID}/transfers.write` scope.

## Endpoint

`POST /accounts/{accountID}/disputes/{disputeID}/evidence/submit`

## Example Requests

Ask

```shell
curl -X POST "https://api.moov.io/accounts/{accountID}/disputes/{disputeID}/evidence/submit" \
  -H "Authorization: Bearer {token}" \
  -H "X-Moov-Version: v2026.07.00"
```

Ask

```go
mc, _ := moov.NewClient()

var accountID string
var disputeID string

mc.SubmitDisputeEvidence(ctx, accountID, disputeID)
```

Ask

```typescript
import { Moov } from "@moovio/sdk";

const moov = new Moov({
  security: {
    username: "",
    password: "",
  },
});

async function run() {
  const result = await moov.disputes.submitEvidence({
    accountID: "01f79d04-f2de-42de-9e37-23c751edecb4",
    disputeID: "8c5d6d6e-420a-49c8-b7c3-d4b5d1bbd415",
  });

console.log(result);
}

run();
```

Ask

```php
declare(strict_types=1);

require 'vendor/autoload.php';

use Moov\MoovPhp;
use Moov\MoovPhp\Models\Components;

$sdk = MoovPhp\Moov::builder()
    ->setSecurity(
        new Components\Security(
            username: '',
            password: '',
        )
    )
    ->build();

$response = $sdk->disputes->submitEvidence(
    accountID: '01f79d04-f2de-42de-9e37-23c751edecb4',
    disputeID: '8c5d6d6e-420a-49c8-b7c3-d4b5d1bbd415'
);

if ($response->dispute !== null) {
    // handle response
}
```

Ask

```java
package hello.world;

import io.moov.sdk.Moov;
import io.moov.sdk.models.components.Security;
import io.moov.sdk.models.errors.GenericError;
import io.moov.sdk.models.operations.SubmitDisputeEvidenceResponse;
import java.lang.Exception;

public class Application {

public static void main(String[] args) throws GenericError, Exception {

Moov sdk = Moov.builder()
                .security(Security.builder()
                    .username("")
                    .password("")
                    .build())
            .build();

SubmitDisputeEvidenceResponse res = sdk.disputes().submitEvidence()
                .accountID("01f79d04-f2de-42de-9e37-23c751edecb4")
                .disputeID("8c5d6d6e-420a-49c8-b7c3-d4b5d1bbd415")
                .call();

if (res.dispute().isPresent()) {
            System.out.println(res.dispute().get());
        }
    }
}
```

Ask

```python
from moovio_sdk import Moov
from moovio_sdk.models import components

with Moov(
    security=components.Security(
        username="",
        password="",
    ),
) as moov:

res = moov.disputes.submit_evidence(account_id="01f79d04-f2de-42de-9e37-23c751edecb4", dispute_id="8c5d6d6e-420a-49c8-b7c3-d4b5d1bbd415")

# Handle response
    print(res)
```

Ask

```ruby
require 'moov_ruby'

Models = ::Moov::Models
s = ::Moov::Client.new(
  security: Models::Components::Security.new(
    username: '',
    password: ''
  )
)
res = s.disputes.submit_evidence(account_id: '01f79d04-f2de-42de-9e37-23c751edecb4', dispute_id: '8c5d6d6e-420a-49c8-b7c3-d4b5d1bbd415')

unless res.dispute.nil?
  # handle response
end
```

Ask

```csharp
using Moov.Sdk;
using Moov.Sdk.Models.Components;

var sdk = new MoovClient(security: new Security() {
    Username = "",
    Password = "",
});

var res = await sdk.Disputes.SubmitEvidenceAsync(
    accountID: "01f79d04-f2de-42de-9e37-23c751edecb4",
    disputeID: "8c5d6d6e-420a-49c8-b7c3-d4b5d1bbd415"
);

// handle response
```

## Response Examples

The request completed successfully.

### Success Response Example

```json
{
  "amount": {
    "currency": "USD",
    "value": 257753
  },
  "createdOn": "2024-12-23T17:55:00Z",
  "disputeID": "6e356108-fdfa-4910-bbe4-1e3c8abf5520",
  "merchantAccountID": "34233b72-780c-4e0e-8b08-cbbe1bc878f8",
  "networkReasonCode": "10.4",
  "phase": "chargeback",
  "respondBy": "2024-12-23T18:55:00Z",
  "status": "response-needed",
  "transfer": {
    "transferID": "ecac148a-917e-4ee0-b46a-c51408939fff"
  }
}
```

### Error Response Example

```json
{
  "error": "string"
}
```

### Notes
- Set this header to v2026.07.00 to use the API described in this specification. When omitted, the server defaults to v2024.01.00, which may not match the behavior documented here.

### Dispute Attributes
- **amount**: A 3-letter ISO 4217 currency code.
- **createdOn**: Timestamp of creation.
- **disputeID**: Unique identifier for the dispute.
- **merchantAccountID**: Identifier for the merchant account.
- **networkReasonCode**: Card network category for the dispute.
- **phase**: Current phase of the dispute lifecycle.
- **status**: Current status of the dispute.
- **transfer**: Details of the disputed transfer.
