Do restored transaction get stored in the local receipt file?

Context/intro:

We are running into a situation where a subset of our users are complaining that they need to frequently restore their purchases because the app seems to forget some non-consumable purchases.

Our app uses the local receipt as the source of truth, however it restores transactions via restoreCompletedTransactions() so a restored transaction will fire the same app-specific logic that would get fired after a purchase.

One theory we have is that the restored transactions do not automatically make their way into the receipt, so these transactions are not persisted. If that's true, refreshing the receipt (via SKReceiptRefreshRequest), along with restoreCompletedTransactions() would make sure the receipt is updated as well whenever the user decides to restore.

My question:

do transaction restored via restoreCompletedTransactions() make their way into the receipt file?

do transaction restored via restoreCompletedTransactions() make their way into the receipt file?

Yes.

Our app uses the local receipt as the source of truth

In that case your "restore purchases" button can just call SKReceiptRefreshRequest. No need ever to call restoreCompletedTransactions.

Do restored transaction get stored in the local receipt file?
 
 
Q