Apple Pay v2 (signedTransactionInfo) : how to verify new token format and migrate from legacy EC_v1?

I’m updating a legacy application that used Apple Pay v1 token format, and in my new revamped version I’m now receiving the newer Apple Pay v2 format.

The old (v1) payload looked like this:

php { "version": "EC_v1", "data": "...", "signature": "...", "header": { "ephemeralPublicKey": "...", "publicKeyHash": "...", "transactionId": "..." } } In the new revamp (v2), Apple Pay returns this instead:

php { "signedTransactionInfo": "eyJhbGciOiJFUzI1NiIsIng1YyI6WyJNSUlF..." } From what I understand:

v1 tokens were elliptic-curve encrypted JSON objects containing a header and signature.

v2 tokens seem to be JWS (JSON Web Signature) strings using the ES256 algorithm, possibly containing transaction and subscription details inside.

Questions Is there any official Apple documentation or migration note explaining the move from EC_v1 → signedTransactionInfo?

How should I verify or decode the new signedTransactionInfo payload?

Should the verification now use Apple’s public keys instead of the legacy Merchant ID certificate?

Are there any example implementations or SDKs that can handle both v1 and v2 formats during migration?

Is there a recommended way to maintain backward compatibility while transitioning existing users?

Goal Ensure that my revamped app can handle Apple Pay v2 tokens securely while keeping the legacy v1 integration functional until all users are migrated.

Answered by DTS Engineer in 874670022

Hi @Sharjeel741,

Please see the following documentation for more information about the payment token format of Apple Pay:

Payment token format reference

https://developer.apple.com/documentation/passkit/payment-token-format-reference

This payload does not include a signedTransactionInfo key. However, there is one provided by the App Store Server API, App Store Server Notifications V2 and App Store Server Library for processing in-app purchases from Store Kit and external purchases.

If you have any questions about this App Store Server API family, please read the following technote:

TN3180: Reverting to App Store Server Notifications V1

https://developer.apple.com/documentation/technotes/tn3180-reverting-app-store-server-notifications-v1

If I'm mistaken, and you are using Apple Pay or Apple Pay on the web—including Payment Request API and Apple Pay JS API, please let me know.

Cheers,

Paris X Pinkney |  WWDR | DTS Engineer

Hi @Sharjeel741,

Please see the following documentation for more information about the payment token format of Apple Pay:

Payment token format reference

https://developer.apple.com/documentation/passkit/payment-token-format-reference

This payload does not include a signedTransactionInfo key. However, there is one provided by the App Store Server API, App Store Server Notifications V2 and App Store Server Library for processing in-app purchases from Store Kit and external purchases.

If you have any questions about this App Store Server API family, please read the following technote:

TN3180: Reverting to App Store Server Notifications V1

https://developer.apple.com/documentation/technotes/tn3180-reverting-app-store-server-notifications-v1

If I'm mistaken, and you are using Apple Pay or Apple Pay on the web—including Payment Request API and Apple Pay JS API, please let me know.

Cheers,

Paris X Pinkney |  WWDR | DTS Engineer

Apple Pay v2 (signedTransactionInfo) : how to verify new token format and migrate from legacy EC_v1?
 
 
Q