# Update dispute evidence

Updates dispute evidence by ID.

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.

### Request Method

PATCH

### Request URL

/accounts/{accountID}/disputes/{disputeID}/evidence/{evidenceID}

### Example Requests

**Curl:**
```shell
curl -X PATCH "https://api.moov.io/accounts/{accountID}/disputes/{disputeID}/evidence/{evidenceID}" \
  -H "Authorization: Bearer {token}" \
  -H "X-Moov-Version: v2026.04.00"
```

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

var accountID string
var disputeID string
var evidenceID string

mc.UpdateDisputeEvidence(ctx, accountID, disputeID, evidenceID, moov.DisputesEvidenceUpdate{
  EvidenceType: moov.EvidenceType_Receipt,
})
```

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

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

async function run() {
  const result = await moov.disputes.updateEvidence({
    accountID: "bc2af75d-427a-486d-8580-3adfa9599023",
    disputeID: "36df0cea-d95d-427e-ba60-c9923d1e25a7",
    evidenceID: "fd46ede8-5d47-4e5e-91a7-9af8162f76b2",
    updateEvidence: {},
  });

console.log(result);
}

run();
```

**PHP:**
```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();

$updateEvidence = new Components\UpdateEvidence();

$response = $sdk->disputes->updateEvidence(
    accountID: 'bc2af75d-427a-486d-8580-3adfa9599023',
    disputeID: '36df0cea-d95d-427e-ba60-c9923d1e25a7',
    evidenceID: 'fd46ede8-5d47-4e5e-91a7-9af8162f76b2',
    updateEvidence: $updateEvidence
);

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

**Java:**
```java
package hello.world;

import io.moov.sdk.Moov;
import io.moov.sdk.models.components.Security;
import io.moov.sdk.models.components.UpdateEvidence;
import io.moov.sdk.models.errors.GenericError;
import io.moov.sdk.models.operations.UpdateDisputeEvidenceResponse;
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();

UpdateDisputeEvidenceResponse res = sdk.disputes().updateEvidence()
                .accountID("bc2af75d-427a-486d-8580-3adfa9599023")
                .disputeID("36df0cea-d95d-427e-ba60-c9923d1e25a7")
                .evidenceID("fd46ede8-5d47-4e5e-91a7-9af8162f76b2")
                .updateEvidence(UpdateEvidence.builder()
                    .build())
                .call();

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

**Python:**
```python
from moovio_sdk import Moov
from moovio_sdk.models import components

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

res = moov.disputes.update_evidence(account_id="bc2af75d-427a-486d-8580-3adfa9599023", dispute_id="36df0cea-d95d-427e-ba60-c9923d1e25a7", evidence_id="fd46ede8-5d47-4e5e-91a7-9af8162f76b2")

# Handle response
    print(res)
```

**Ruby:**
```ruby
require 'moov_ruby'

Models = ::Moov::Models
s = ::Moov::Client.new(
  security: Models::Components::Security.new(
    username: '',
    password: ''
  )
)
res = s.disputes.update_evidence(account_id: 'bc2af75d-427a-486d-8580-3adfa9599023', dispute_id: '36df0cea-d95d-427e-ba60-c9923d1e25a7', evidence_id: 'fd46ede8-5d47-4e5e-91a7-9af8162f76b2', update_evidence: Models::Components::UpdateEvidence.new)

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

**C#:**
```csharp
using Moov.Sdk;
using Moov.Sdk.Models.Components;

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

var res = await sdk.Disputes.UpdateEvidenceAsync(
    accountID: "bc2af75d-427a-486d-8580-3adfa9599023",
    disputeID: "36df0cea-d95d-427e-ba60-c9923d1e25a7",
    evidenceID: "fd46ede8-5d47-4e5e-91a7-9af8162f76b2",
    body: new UpdateEvidence() {}
);

// handle response
```

### Success Response

The request completed successfully.

### Example Response
```json
{
  "evidenceID": "string",
  "disputeID": "string",
  "evidenceType": "receipt",
  "text": "string",
  "mimeType": "string",
  "filename": "string",
  "size": 0,
  "createdOn": "2019-08-24T14:15:22Z",
  "updatedOn": "2019-08-24T14:15:22Z",
  "submittedOn": "2019-08-24T14:15:22Z"
}
```

### Error Responses

#### Invalid Request Syntax
```json
{
  "error": "string"
}
```

#### Missing/Expired Authentication

#### Unauthorized Request

#### Resource Not Found

#### Rate Limited Request

#### Unexpected Error

#### Downstream Service Error

### API Versioning

Set this header to v2026.04.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.

### Possible Evidence Types
- `receipt`
- `proof-of-delivery`
- `cancelation-policy`
- `terms-of-service`
- `customer-communication`
- `generic-evidence`
- `cover-letter`
- `other`

### Evidence Submission
When the evidence was submitted for review.

### Text Evidence
For text evidence, the new text to associate with the dispute.
