Clarification Needed on Submitting Evidence to Shopify via GraphQL

We are currently working on integrating the dispute evidence submission flow through your Admin GraphQL API as part of our workflow, but we’re encountering some difficulties due to gaps or ambiguity in the documentation.

As part of our process, we are performing the following steps:

Requesting a staged upload URL using stagedUploadsCreate.

Uploading the file to the generated shopify-staged-uploads.storage.googleapis.com URL with the appropriate form fields.

Submitting the evidence using the disputeEvidenceUpdate mutation with the uploaded file’s ID.

Despite following these steps, the final mutation doesn’t seem to register the evidence as expected. We would appreciate clarification on the following points:

Is this the correct sequence for submitting evidence via file for Shopify Payments disputes?

Should we use the ShopifyPaymentsDisputeFileUploadDestroy mutation as part of this flow, or only disputeEvidenceUpdate?

Are there any required fields or intermediate steps missing from the documentation?

Could you provide a working example or end-to-end sample of the complete GraphQL flow?

If it helps, here’s an example of the final mutation we’re using:

mutation ShopifyPaymentsDisputeFileUploadDestroy($id: ID!, $fileId: ID!) {
disputeEvidenceUpdate(id: $id, input: {
uncategorizedFile: {
id: $fileId,
destroy: false
}
}) {
disputeEvidence {
disputeFileUploads {
id
originalFileName
}
}
userErrors {
field
message
}
}
}
We would greatly appreciate your guidance or a sample implementation that ensures evidence is properly linked and submitted.

Best regards,
Itay Kirshenboim

Hi Itay,

The flow you described is correct. You should only use ShopifyPaymentsDisputeFileUploadDestroy if you need to remove a file.

To troubleshoot this issue:

  • Ensure the file upload is successful and the file is accessible before referencing its ID.
  • The id in disputeEvidenceUpdate must be the dispute evidence object, not the dispute itself.
  • Check for userErrors in the mutation response for any issues.

Hi Liam,
Would it be possible to do a quick Zoom meeting so I can walk you through the flow in real time?
You might spot the issue more easily that way.

Feel free to send an invite — my email is: itay.k@justt.ai.