Issue updating Dispute Evidence with uncategorizedFile

I’m trying to update a dispute evidence with a file reference.

First, I can successfully query the evidence and see the uploads returned under disputeFileUploads:

query GetDispute($id: ID!) {
  dispute(id: $id) {
    id
    disputeEvidence {
      id
      disputeFileUploads {
        id          # e.g. gid://shopify/ShopifyPaymentsDisputeFileUpload/xxxx
        fileName
        url
        createdAt
      }
    }
  }
}

This gives me an evidence ID like:

gid://shopify/ShopifyPaymentsDisputeEvidence/10179969113

and a file upload ID like:

gid://shopify/ShopifyPaymentsDisputeFileUpload/6798311513

Next, I try to update the evidence using disputeEvidenceUpdate:

mutation DisputeEvidenceUpdate($id: ID!, $input: ShopifyPaymentsDisputeEvidenceUpdateInput!) {
  disputeEvidenceUpdate(id: $id, input: $input) {
    disputeEvidence { id }
    userErrors { field message }
  }
}

With variables:

{
  "id": "gid://shopify/ShopifyPaymentsDisputeEvidence/10179969113",
  "input": {
    "uncategorizedFile": {
      "id": "gid://shopify/ShopifyPaymentsDisputeFileUpload/6798311513",
      "destroy": false
    }
  }
}

But the mutation fails with:

{
  "errors": [
    {
      "message": "Payments::DisputeFileUpload with ID=6798311513 does not exists",
      "extensions": { "code": "NOT_FOUND" }
    }
  ],
  "data": { "disputeEvidenceUpdate": null }
}


Question:

  • Am I using the correct field (uncategorizedFile) to pass an existing disputeFileUpload?

  • If so, why is the mutation saying the Payments::DisputeFileUpload does not exist, even though I just queried it successfully under disputeEvidence.disputeFileUploads?

  • Or is uncategorizedFile meant for uploading a new file, rather than referencing one returned by disputeFileUploads?

                          }
    

but from which quey i get the gid://shopify/ShopifyPaymentsDisputeFileUpload/xxxx

Hey @Itay_Kirshenboim - thanks for flagging this. I double checked the schema here and you’re input does seem correct to me: ShopifyPaymentsDisputeEvidence - GraphQL Admin

Would you be open to share an x-request-id from an example response header where this error was returned?

I can take a look at our logs to see why this is happening - happy to look into this with you!

@Alan_G I can’t find the x-request-id. Can we schedule a short meeting so I can show you how I run the query and the response in real time, and you can debug it directly?

In the attached ticket, I showed that the API to submit evidence using GraphQL doesn’t always work. You confirmed the issue and fixed it in the latest version, but it seems it’s still not working.

Hey @Itay_Kirshenboim, thanks for following up.

Unfortunately, at the moment, I’m not able to set up calls right now. If you do need live help though, you can get in touch with our Developer Support team through help.shopify.com (they do have limited hours at the moment I believe, but they are available for most API related questions that way).

Just out of curiosity, how are you running the mutation? Is this via the GraphiQL app in the store admin, or through another client? If it’s through the admin GraphiQL app, it can be hard to capture the x-request-id for sure. If you wanted to try using an API client like Postman (https://www.postman.com), this would make it easy to grab the x-request-id from the response headers. If you’d like, I can help walk through setting up Postman over DM I just can’t assist live at the moment.

Let me know if a DM works for you and I can definitely set that up!

@Alan_G thanks for getting back to me.

I’ve already tried running the mutation through Postman, and I’d be happy to get your assistance on how to properly capture the x-request-id.

That said, I believe this is a critical bug in Shopify’s GraphQL API. As shown in the attached ticket, Shopify updated this API in the latest GraphQL version, but it still doesn’t work. I’m not asking to be compensated for debugging Shopify’s API—I just want to ensure this issue is addressed.

The reason I suggested a short call is because it would let me quickly walk you through the exact flow I use to submit evidence and show you the problem in real time. Right now, the API simply isn’t functioning as documented, and I believe it should either be fixed or temporarily removed from the documentation until it is

Hi @Itay_Kirshenboim

Can you record a video of the flow and post it here? This will help us understand the issue you’re experiencing.

1 Like

@Liam-Shopify
disputeId: gid://shopify/ShopifyPaymentsDispute/10181935193
disputeFileUploads.id: gid://shopify/ShopifyPaymentsDisputeFileUpload/6798311513
disputeEvidence.id: gid://shopify/ShopifyPaymentsDisputeEvidence/10179969113
attached link to the video

Hey @Itay_Kirshenboim - thanks very much for sending that video our way and for sharing the additional details. You should be able to pull the request id in your headers section here in Postman:

It would then be in the header section like so:

If you can share that ID I can pull the API calls you’re making in our logs and get this prioritized for you, definitely understand it’s causing issues, so happy to investigate for sure :slight_smile:

stagedUploadsCreate:
x-request-id: d8a65c35-ffa5-4d7c-91a4-2e19b9e88cdc-1756894043
disputeEvidenceUpdate:
x-request-id:

df57d6fa-22b7-473b-94fc-2ba9dea8dc4c-1756894655

Thanks @Itay_Kirshenboim , really appreciate this. I’ll take a look at our logs and loop back with you once I have more info to share.

@Alan_G is there any update?

Hi @Itay_Kirshenboim - thanks for following up, I don’t have an update on a fix to share at the moment, but can confirm that I’ve reached out to our product team on this for you and will loop back with you here once I have next steps. I’ll keep you posted!

Hi again @Itay_Kirshenboim - I was able to touch base with our product team on this, and can confirm we’re looking at a fix on our end. I can’t guarantee an exact turnaround at the moment, but did want to share that as a temporary workaround, you should be able to use the REST endpoint to update the dispute evidence:

Generally, we don’t reccommend using the REST API as it is a legacy API, but in this case I did just want to share it as a workaround.

I’ll keep an eye on the status of the fix on my end here and loop back with you once I have more info to share. Hope this helps a little bit :slight_smile:

@Alan_G Thank you. I would prefer to proceed with the stable GraphQL version instead of a REST-based workaround. Please let me know when we can schedule a meeting to review this. I’ve invested substantial time debugging your API, and your evaluation and support until this endpoint functions correctly on my side would be greatly appreciated.

Hi @Itay_Kirshenboim :waving_hand: - I definitely understand where you’re coming from regarding GraphQL vs. REST. On our end, it does look like a fix has been pushed that should resolve this issue. Can you let me know if you’re still seeing it pop up?

I’m unable to hop on calls at the moment, but if the issue does persist I am happy to keep working with you 1 on 1 in DMs on the forums here to prioritize this.

Hope this helps/hope to hear from you soon.

@Alan_G Thanks for the update. I just re-tested and the issue still persists on my side when calling the GraphQL mutation that uses ShopifyPaymentsDisputeEvidenceUpdateInput.

  • x-request-id: d00cf705-f63d-4810-93de-b0bff00c4f95-1757362080

  • Evidence: I’ve attached a fresh screen recording from today.

  • Preference: I’d like to keep using the stable GraphQL path rather than a REST workaround.

Given the time I’ve already spent debugging this, I don’t think we can resolve it asynchronously. Could we please schedule a short call with someone from the engineering team?

Proposed times (Asia/Jerusalem, UTC+3):

  • Tue–Wed (Sep 9–10) between 10:00–16:00

  • Thu (Sep 11) between 11:00–15:00

If a call isn’t possible, please connect me directly with a developer by email so we can sync in detail.

To help you triage quickly, let me know if you also need:

  • The exact mutation + variables I’m sending

  • Environment details (prod/sandbox), merchant/account IDs, or timestamps

  • Any additional headers or logs on my side

Appreciate the help—happy to retest immediately once you confirm next steps.

Thanks @Itay_Kirshenboim - I was able to pull the logs on my end and can confirm it looks like it’s still failing. I can’t confirm if we’ll be able to set up a meeting with our product team for you, but I will let them know this still appears to be happening and confirm the situation on my end and request that for you.

I’ll follow up with next steps here once I have them and prioritize looking at this with you as soon as I can.

Speak with you as soon as I have more info.

Hi again @Itay_Kirshenboim - just following up here to confirm that I’ve spoken with our development team and we are looking into this further for you. I still can’t guarantee a turnaround time on a permanent fix, but I do realize using REST isn’t the most ideal workaround, especially if it means refactoring code, etc.

I’ll open up a DM with you here in a moment so I can keep you up to date personally on my end and I’ll loop back here in the public thread once we can confirm a fix.

@Alan_G is there any update

@Liam-Shopify @Alan_G is there any update?