If it’s possible to fill the DataStore Queue with your implementation, you could do one of two things:
The more manual route is to write a cache. Every receipt process, you will increment the cash within the cache. The cache would look something like this:
local Cache = {} MarketPlaceService.ProcessReceipt = function(info) if Cache[info.PlayerId] == nil then Cache[info.PlayerId] = (some variable corresponding to cash that is awarded from the product) else Cache[info.PlayerId] += (some variable corresponding to cash that is awarded from the product) end OR, you can use a library like ProfileService, which handles this for you. I’d recommend the latter, as it’s quite simple to use, and also has added benefits, such as preventing item duplication and data loss.