I am trying to understand nuances of exactly the same issue as M-S with a digital currency being used to buy assets such as card templates.
The good news from a design is that, from conversations with users and Apple employees, most people are fine with the idea of a digital currency for such in a non-game context.
Technically, I'm still confused and think there are some missing pieces. Assuming your currency is a consumable, because that's the only IAP model that makes sense for topping up a balance:
The App Store Review Guidelines says:
3.1 Payments ... 3.1.1 In-App Purchase: Any credits or in-game currencies purchased via in-app purchase may not expire, and you should make sure you have a restore mechanism for any restorable in-app purchases.
3.1.2 Subscriptions … 3.1.2(a) Permissible uses: Subscriptions may include consumable credits, gems, in-game currencies
We seem to have an obligation but no supported method or helper tools.
Apple feedback 2022-12
The official word from Ross L at Apple via the Q&A on Slack yesterday was Consumable in-app purchases are not restorable via StoreKit. However, you do need to make sure you permanently keep track of the user’s balance for this consumable currency.
and then
One option that many developers choose is to offer an in-app account, and store all this data on their own server.
When I pushed for how
There isn't any list of specifically accepted paradigms, but as long as you properly investigate and test your solution and it allows users to access their currency without losing it, it should be good.
My intention
Generate a local UUID on the app
Use appAccountToken (iOS15 on) so the UUID can be associated with all purchases
Persist the UUID and the currency balance using NSUbiquitousKeyValueStore so it's shared amongst devices and will be restored if they setup a new device.
On our marketplace server, store a list of purchases associated with that UUID so they can be restored if necessary. This mirrors the behaviour of IAP being restorable items but we have to use our own approach rather than just IAP items because:
we intend to have vastly more items available than the IAP limits
using digital currency allows for micropayments and more granularity on pricing than IAP levels
our rights system allows for items to be reusable with or without payment depending on the rules set per-item by the artists.