Why Non-Consumable product has originalTransactionId?

I try to call Get Transaction Info from App Store Server API, and the transactionId is for a Non-consumable type product, but it is odd that there are so many different transactionId and they have a same originalTransactionId

{
    "bundleId": "${bundleId}",
    "environment": "Production",
    "inAppOwnershipType": "PURCHASED",
    "originalPurchaseDate": 1691220528000,
    "originalTransactionId": "${originalTransactionId}",
    "productId": "${productId}",
    "purchaseDate": 1691220528000,
    "quantity": 1,
    "signedDate": 1692590989925,
    "storefront": "USA",
    "storefrontId": "143441",
    "transactionId": "${originalTransactionId}",
    "transactionReason": "PURCHASE",
    "type": "Non-Consumable"
}

the defination of Non-Consumable is can only purchase once for same apple account. But why there would have originalTransactionId?

Accepted Reply

If the user has multiple devices, or restoreCompletedTransactions is called, new transaction ids will be created. However the underlying purchase, and therefore the original transaction id for a non-consumable, is still the same. In Original StoreKit transaction ids are per-device and can be restored, meaning both non-consumables and auto-renewing subscription transactions will have this multiple-transaction id per underlying purchase property.

Replies

If the user has multiple devices, or restoreCompletedTransactions is called, new transaction ids will be created. However the underlying purchase, and therefore the original transaction id for a non-consumable, is still the same. In Original StoreKit transaction ids are per-device and can be restored, meaning both non-consumables and auto-renewing subscription transactions will have this multiple-transaction id per underlying purchase property.