According to the Shopify changelog:
we are advised to migrate from authorizationCode to paymentId. However, there are some important differences in how these fields are used in our current integration that we would like to clarify.
1. Using authorizationCode to reconcile Stripe payments
Currently, we use Shopify’s OrderTransaction.authorizationCode to deduplicate and reconcile payments against Stripe.
Specifically, we match Shopify’s authorizationCode with the corresponding authorization identifier received from Stripe.
The new paymentId value is different from the existing authorizationCode value, so it does not provide the same identifier we currently use to match Shopify transactions with the corresponding Stripe authorization.
After authorizationCode is fully removed, will there be any field or supported mechanism in the Admin GraphQL API to retrieve the gateway’s original authorization/charge identifier corresponding to the Stripe transaction?
2. Using paymentId to identify Stripe transactions
Our integration also currently uses paymentId to identify and distinguish Stripe-related transactions, including refund transactions.
In particular, the value of paymentId can contain the underlying Stripe transaction identifier, which our integration uses to determine whether a Shopify Payments transaction corresponds to a Stripe transaction or refund.
We would therefore like to clarify whether using paymentId for identifying the corresponding Stripe transaction or refund is an officially supported and reliable approach.
If this behavior is expected to continue, is the Stripe transaction/refund identifier contained in paymentId considered stable and safe for apps to use for reconciliation and transaction identification?
3. Stability and uniqueness of paymentId
Is paymentId guaranteed to be unique and stable across retries, partial captures, refunds, and other related transactions for the same underlying payment authorization?
For example, can multiple OrderTransaction records associated with the same payment/authorization have different paymentId values, or is paymentId intended to consistently identify the underlying payment across related transactions?
4. Recommended migration strategy
For apps that currently rely on authorizationCode for deduplication and reconciliation against gateway data, what migration strategy does Shopify recommend?
We would appreciate any detailed guidance or best-practice recommendation for replacing our current authorizationCode-based deduplication and reconciliation logic, especially for integrations involving Shopify Payments and Stripe.
In particular, it would be helpful to understand whether paymentId is intended to be the canonical replacement for authorizationCode, including for identifying the corresponding Stripe payment/refund transaction, or whether there is another recommended identifier or workflow that apps should use.
Thank you for your help.
Best regards,
Mahesh Kori