Updating payment method on subscription contract not working with Stripe

Topic summary

Problem: Updating a subscription’s payment method via Shopify’s GraphQL with Stripe fails in a test store.

Repro steps:

  • Create a new payment method via customerPaymentMethodRemoteCreate. The payment method appears successfully in Stripe (confirmed by screenshot).
  • Start the draft update workflow: create a draft from the subscription (subscriptionContractUpdate), then call subscriptionDraftUpdate passing the new payment method ID.

Observed result: subscriptionDraftUpdate returns revokedReason = STRIPE_API_INVALID_REQUEST_ERROR. Shopify’s docs only state “Invalid request. Failed to retrieve payment method from Stripe,” without further guidance.

Context: Stripe integration otherwise appears functional since the payment method is created and visible in Stripe.

Status: Unresolved. The poster seeks help understanding why Stripe returns an invalid request during draft update and how to fix it (e.g., requirements or constraints for acceptable payment methods on subscription contracts). No workarounds or official resolutions provided yet.

Summarized with AI on December 31. AI used: gpt-5.

Hello. We have an issue on our test store account where we can’t update the payment method of a subscription contract. The workflow is as follows:

  1. Create a new payment method using Stripe. We can see the payment method created on stripe successfully:

We create this using the graphql mutation customerPaymentMethodRemoteCreate (https://shopify.dev/docs/api/admin-graphql/2023-07/mutations/customerpaymentmethodremotecreate)

  1. Change the subscription contract using the draft update workflow:
  • Create a new draft update from the subscription using the mutation subscriptionContractUpdate
  • Call the mutation subscriptionDraftUpdate where we pass in the ID of the new payment method created by step 1
  • This call returns the field “revokedReason” STRIPE_API_INVALID_REQUEST_ERROR. I can’t find any documentation to explain why this happens occurs or how to fix it. The documentation only says “Invalid request. Failed to retrieve payment method from Stripe.”

Our stripe integration seems to be working fine (proved by the fact that the new payment method is created with success). Can someone help please?

Thank you