Upload evidence file | Moov Documentation

Upload evidence file

Uploads a file as evidence for a dispute.

Read our disputes guide to learn more.

To access this endpoint using an access token you'll need to specify the /accounts/{accountID}/transfers.write scope.

Endpoint

POST /accounts/{accountID}/disputes/{disputeID}/evidence-file

Ask

curl -X POST "https://api.moov.io/accounts/{accountID}/disputes/{disputeID}/evidence-file" \
  -H "Authorization: Bearer {token}" \
  -H "X-Moov-Version: v2026.04.00" \
  -F "file=@/path/to/file" \
  -F "evidenceType=receipt"

Ask

mc, _ := moov.NewClient()

var accountID string
var disputeID string
file, _ := os.Open("path/to/test.pdf")

mc.UploadEvidenceFile(ctx, accountID, disputeID, moov.EvidenceType_CoverLetter, "test.pdf", file, "application/pdf")

Ask

import { Moov } from "@moovio/sdk";
import { openAsBlob } from "node:fs";

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

async function run() {
  const result = await moov.disputes.uploadEvidenceFile({
    accountID: "c09fd2f8-75fb-4ed9-be03-f8565d3ddc67",
    disputeID: "ad27f84d-00b1-4db0-8cf5-be001d71251d",
    createEvidenceFileMultiPart: {
      file: await openAsBlob("example.file"),
      evidenceType: "cancelation-policy",
    },
  });

console.log(result);
}

run();

Ask

declare(strict_types=1);

require 'vendor/autoload.php';

use Moov"}

```php
MoovPhp;
use Moov"}

```php
MoovPhp\Models\Components;

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

$createEvidenceFileMultiPart = new Components\CreateEvidenceFileMultiPart(
    file: new Components\File(
        fileName: 'example.file',
        content: file_get_contents('example.file');,
    ),
    evidenceType: Components\EvidenceType::CancelationPolicy,
);

$response = $sdk->disputes->uploadEvidenceFile(
    accountID: 'fbed9e03-f856-45d3-8ddc-67dad27f84d0',
    disputeID: 'b1db0cf5-be00-41d7-a125-1d2d283c2a62',
    createEvidenceFileMultiPart: $createEvidenceFileMultiPart
);

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

Ask

package hello.world;

import io.moov.sdk.Moov;
import io.moov.sdk.models.components.*;
import io.moov.sdk.models.errors.FileUploadValidationError;
import io.moov.sdk.models.errors.GenericError;
import io.moov.sdk.models.operations.UploadDisputeEvidenceFileResponse;
import io.moov.sdk.utils.Utils;
import java.io.FileInputStream;
import java.lang.Exception;

public class Application {

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

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

UploadDisputeEvidenceFileResponse res = sdk.disputes().uploadEvidenceFile()
                .accountID("fbed9e03-f856-45d3-8ddc-67dad27f84d0")
                .disputeID("b1db0cf5-be00-41d7-a125-1d2d283c2a62")
                .createEvidenceFileMultiPart(CreateEvidenceFileMultiPart.builder()
                    .file(File.builder()
                        .fileName("example.file")
                        .content(Utils.readBytesAndClose(new FileInputStream("example.file")))
                        .build())
                    .evidenceType(EvidenceType.CANCELATION_POLICY)
                    .build())
                .call();

}
}

Ask

from moovio_sdk import Moov
from moovio_sdk.models import components

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

res = moov.disputes.upload_evidence_file(account_id="c09fd2f8-75fb-4ed9-be03-f8565d3ddc67", dispute_id="ad27f84d-00b1-4db0-8cf5-be001d71251d", file={
        "file_name": "example.file",
        "content": open("example.file", "rb"),
    }, evidence_type=components.EvidenceType.CANCELATION_POLICY)

# Handle response
    print(res)

Ask

require 'moov_ruby'

Models = ::Moov::Models
s = ::Moov::Client.new(
  security: Models::Components::Security.new(
    username: '',
    password: ''
  )
)
res = s.disputes.upload_evidence_file(account_id: 'c09fd2f8-75fb-4ed9-be03-f8565d3ddc67', dispute_id: 'ad27f84d-00b1-4db0-8cf5-be001d71251d', create_evidence_file_multi_part: Models::Components::CreateEvidenceFileMultiPart.new(
  file: Models::Components::CreateEvidenceFileMultiPartFile.new(
    file_name: 'example.file',
    content: File.binread('example.file')
  ),
  evidence_type: Models::Components::EvidenceType::CANCELATION_POLICY
))

unless res.evidence_upload_response.nil?
  # handle response
end

Ask

using Moov.Sdk;
using Moov.Sdk.Models.Components;

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

var res = await sdk.Disputes.UploadEvidenceFileAsync(
    accountID: "c09fd2f8-75fb-4ed9-be03-f8565d3ddc67",
    disputeID: "ad27f84d-00b1-4db0-8cf5-be001d71251d",
    body: new CreateEvidenceFileMultiPart() {
        File = new CreateEvidenceFileMultiPartFile() {
            FileName = "example.file",
            Content = System.IO.File.ReadAllBytes("example.file"),
        },
        EvidenceType = EvidenceType.CancelationPolicy,
    }
);

// handle response

Successful Response

Example

{
  "evidenceID": "string",
  "disputeID": "string",
  "filename": "string",
  "mimeType": "string",
  "size": 0,
  "evidenceType": "receipt",
  "createdOn": "2019-08-24T14:15:22Z"
}

Response headers

A unique identifier used to trace requests.

Error Responses

Invalid syntax

Example

{
  "error": "string"
}

Missing or expired authentication

Response headers

A unique identifier used to trace requests.

User not authorized

Response headers

A unique identifier used to trace requests.

Resource not found

Response headers

A unique identifier used to trace requests.

Conflict with the current state

Example

{
  "error": "string"
}

Validation errors

Example

{
  "evidenceType": "string",
  "file": {
    "filename": "string",
    "mimeType": "string"
  }
}

Rate limiting

Response headers

A unique identifier used to trace requests.

Unexpected errors

Response headers

A unique identifier used to trace requests.

Downstream service errors

Response headers

A unique identifier used to trace requests.

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.

Evidence Types

Possible values:

The file to upload as evidence. Valid types are [jpeg, tiff, pdf] with a limit of 4MB per file.

Content-Type headers

The Content-Type header for this form part must be one of the following:

Notes

Details of a successfully uploaded evidence file.