For archived content, access the previous documentation here or the previous API reference here.

Submit evidence via multipart upload

Prev Next
Post
/v1/disputes/{dispute_id}/evidences

Submit one or more pieces of evidence to a dispute using multipart/form-data. Each form field name is the evidence category slug (from category.allowed_evidence[].name). For FILE evidence, the field value is the file binary. The server validates its detected MIME type against the configured allowlist, which defaults to image/png, image/jpeg, and application/pdf. For TEXT evidence, the field value is the text string. Maximum 10 evidence items per request. One submission per evidence category slug. Evidence can only be submitted while the dispute is in ACTION_REQUIRED status. Submitting evidence does not automatically trigger a challenge — call POST /v1/disputes//challenge to finalize and forward your case.

Security
HTTP
Type basic
Path parameters
dispute_id
stringRequired

Unique identifier of the dispute to submit evidence for. The dispute must be in ACTION_REQUIRED status.

Body parameters
file_evidence

Single file upload

{
  "ITEMIZED_RECEIPTS": "(binary file content)"
}
text_evidence

Single text evidence

{
  "OFFICIAL_MERCHANT_STATEMENT": "The customer completed the transaction at our store."
}
mixed_evidence

Multiple evidence items in one request

{
  "ITEMIZED_RECEIPTS": "(binary file content)",
  "OFFICIAL_MERCHANT_STATEMENT": "Customer was present at the store."
}
object

Each field name is an evidence category slug. File fields contain the binary file. Text fields contain the text content string.

property*
AnyOf
string (binary)
string
string
string
Responses
201

Evidence submission result.

Expand All
object

Response for multipart evidence submission.

dispute_id
string

The dispute ID for which evidence was submitted.

Examplemi-dspt-48e96517-9889-4e29-a93e-d1ffae1fa366
evidences_succeeded
Array of object (Merchant_Dispute_API_EvidenceSucceeded)

Evidence items that were successfully processed.

object

One evidence item that was processed successfully.

id
string

Xendit-generated identifier for this evidence item.

Examplemi-dspt-evd-20d5cc8a-4ba0-4378-b96f-c4bcbb8a1d0e
evidence_type
string

The evidence category this item was filed under.

ExampleITEMIZED_RECEIPTS
filename
string | null

Original filename. Only present for FILE evidence.

Examplereceipt.pdf
mime_type
string | null

Detected MIME type. Only present for FILE evidence.

Exampleapplication/pdf
type
string

FILE or TEXT.

Valid values[ "FILE", "TEXT" ]
ExampleFILE
content_hash
string | null

MD5 integrity hash prefixed with md5:. Only present for FILE evidence.

Examplemd5:318d5cb8146d90b9f02a9fe5809583aa
evidences_failed
Array of object (Merchant_Dispute_API_EvidenceFailed)

Evidence items that could not be processed. Only these items need to be resubmitted after correcting the issue.

object

One evidence item that could not be processed.

evidence_type
string

The evidence category slug that was submitted.

ExampleITEMIZED_RECEIPTS
filename
string

The filename of the file that failed.

Examplereceipt.pdf
reason
string

Human-readable explanation of why this item failed.

ExampleFile type 'text/plain' is not supported for 'receipt.pdf'.
error_code
string

Machine-readable failure code.

ExampleUNSUPPORTED_EVIDENCE_TYPE
message
string

Human-readable summary of the overall submission result.

ExampleEvidence processed successfully.
400

Evidence submission invalid.

invalid_request
{
  "error_code": "INVALID_REQUEST",
  "message": "Invalid multipart request."
}
category_not_allowed
{
  "error_code": "EVIDENCE_CATEGORY_NOT_ALLOWED",
  "message": "Evidence category 'invalid_slug' is not allowed for this dispute's category."
}
category_limit
{
  "error_code": "CATEGORY_LIMIT_REACHED",
  "message": "Per-category evidence limit reached for category 'proof_of_delivery'."
}
unsupported_type
{
  "error_code": "UNSUPPORTED_EVIDENCE_TYPE",
  "message": "File type is not supported."
}
object
error_code
string
ExampleILLEGAL_STATE
message
string
ExampleThe requested action is not allowed in the current dispute state.
404

Dispute not found.

{
  "error_code": "DISPUTE_NOT_FOUND",
  "message": "The specified dispute was not found."
}
object
error_code
string
ExampleILLEGAL_STATE
message
string
ExampleThe requested action is not allowed in the current dispute state.
409

Evidence submission not allowed in the current dispute state.

illegal_state
{
  "error_code": "ILLEGAL_STATE",
  "message": "The requested action is not allowed in the current dispute state."
}
exceed_deadline
{
  "error_code": "ILLEGAL_STATE",
  "message": "This simulated dispute is expected to exceed deadline without evidence submission."
}
object
error_code
string
ExampleILLEGAL_STATE
message
string
ExampleThe requested action is not allowed in the current dispute state.